Weiss jemand wie man Bezierkufen-Dreiecke erstellen kann?
Code:
var
BezA: Array[0..3] of Array[0..3] of Array[0..2] of GLFloat;
Dies ist ja ein Array für eine Fläche, ich vermute allerdings das ich gerade aufm Schlauch stehe und deswegen nicht aufn Grünen Zweig komme!
Ich brauche das Dreieck für einen Spielfeldtyp der als ein 6Eck Dargestellt wird.
Danke für die Hilfe!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Ecken an sich sollten nicht das Problem sein, nur Dreiecke sind ein Problem meiner Meinung nach!
Hier vom Redbook:
Habe nämlich eigentlich kein Bock alles mit Dreiecken darzustellen!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Registriert: So Jun 23, 2002 12:37 Beiträge: 144
Programmiersprache: C/C++, Delphi
Wieso Dreiecke?
Wenn du einfach nur Bezier-Kurven (o. Bezier-Flächen) brauchst du doch nur ein Array mit den Gewichten (Punkten) zur Orientierung der Kurve / Fläche...
Ich sagte ich brauche ein 6 Eck, dieses sollte aus einer Bezierfläche bestehen, und aus 2 Bezierdreiecken(falls es sowas gibt)!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Soweit ich weiß, ist das so nicht möglich - zumindest nicht mit den normalen Bezier-Dingern. Damit gehen eigentlich nur Linien und 4ecke. Aber du kannst n bisschen Tricksen. Du könntest entweder 2 Ecken übereinander legen, oder den ganzen kram selber machen. Die werden mit dem Bernstein-Verfahren berechnet. Dann kannst du einfach nur das halbe Viereck rendern. Ist wohl das Beste.
MultVec(AddVec(VertexCTRLPoints[i + 1*3], VertexCTRLPoints[i + 0*3]), 0.5), // wenn wie in Q3 nur 3 Kontrollpunkte gegeben sind
MultVec(AddVec(VertexCTRLPoints[i + 1*3], VertexCTRLPoints[i + 2*3]), 0.5), // musste die so verrechnen, ansonsten jeden einzeln reinstecken
VertexCTRLPoints[i + 2*3]);
end;
for y := 0 to 7 do //in deinem Fall also nur for y := 0 to (7-x) do
begin
Position[x][y] := Bernstein(y/7, tmps[0],
MultVec(AddVec(tmps[1], tmps[0]), 0.5),
MultVec(AddVec(tmps[1], tmps[2]), 0.5),
tmps[2]);
end;
end;
So, damit haste die Vertex-Positionen - in deinem Fall brauchste natürlich nicht alle. Damit kannste dann mit Triangle_strips deine Fläche rendern. Wenn du da auch nur die Hälfte renderst, hast du dein Dreieck.
Code:
for x := 0 to 7-1 do
begin
glBegin(GL_TRIANGLE_STRIP);
for y := 0 to (7-x) do
begin
glVertex3fv(@Position[x][y]);
if y < (7-x)
then
glVertex3fv(@Position[x+1][y]);
end;
glEnd;
end;
die Hypothenuse könnte was krum werden, aber das musst du mal ausprobieren...
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.