Tja was soll ich viel sagen. Meine Funktion soll eine Kugel im Grunde in Quads rendern. Nun stelle man sich vor, jedes dieser Quads sei durch seine Diagonalen noch einmal getrennt. Der entstehende Punkt ist die Spitze der Pyramide. Ich erstellte also statt mit 4 Vertices ein Quad (, das dann in einem Quadstrip gezeichnet wird) mit 5 Vertices 4 Triangles (, die in einem TriangleFan gezeichnet werden).
Soweit zur Theorie.
nun die Umsetzung:
Code:
function PointToPointMiddle(P1, P2: TVector3f): TVector3f;
var Vektor: TVector3f;
begin
Vektor[0]:=(P1[0]+P2[0])/2;
Vektor[1]:=(P1[1]+P2[1])/2;
Vektor[2]:=(P1[2]+P2[2])/2;
Result:=Vektor;
end;
Code:
function CreateSpherePyramide(StartVector: TVector3f; Radius, PyramidenHoehe:Single; Division:Integer):TFigur;
Vielleicht kann man da was kürzen, aber erst musses funken, dann gehts ans Feintuning. Aber @ mom funkt es noch nicht. Erstellen soll die Prozedur am ende folgendes:
Ein zweidimensionales Array.
Erste Dimension: repräsentiert eine Kugelschicht.
Zweite Dimension: repäsentiert die Elemente der Kugelschicht. Diese Elemente sind immer in 5er Blöcken eingereiht.
Das 1. Element der Blöcke ist die Spitze der Pyramide, dann gegen den Uhrzeigersinn (zumindest von der draufsicht her) die umliegenden 4 Eckpunkte.
Tja nur leider funkt das so ziemlich gar nicht ^^ die Kugelform ist erkennbar, ein paar spitzen auch, aber mehr nicht. Viele Linien verlaufen im 0Punkt,...
Vielleicht findet ihr den Fehler... ich bin betriebsblind
Mitglieder in diesem Forum: 0 Mitglieder und 6 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.