Hallo,
ich hab da ein kleines Problem oder sagen wir's so, ich bin auf der Suche nach einem Kleinen Anstups. Und zwar lade ich mir die Koordinaten für eine Bézier Kurve aus einem Model (OBJ-File). Da das Format in der ASCII-Formatierung vorliegt, heir ein kleines Beispiel wie die Koordinaten vorliegen:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# 3.0 Bezier patch
v -5.000000 -5.000000 0.000000
v -5.000000 -1.666667 0.000000
v -5.000000 1.666667 0.000000
v -5.000000 5.000000 0.000000
v -1.666667 -5.000000 0.000000
v -1.666667 -1.666667 0.000000
v -1.666667 1.666667 0.000000
v -1.666667 5.000000 0.000000
v 1.666667 -5.000000 0.000000
v 1.666667 -1.666667 0.000000
v 1.666667 1.666667 0.000000
v 1.666667 5.000000 0.000000
v 5.000000 -5.000000 0.000000
v 5.000000 -1.666667 0.000000
v 5.000000 1.666667 0.000000
v 5.000000 5.000000 0.000000
# 16 vertices
|
Ich hatte mir ein Prinzip überlegt, was auch gut funktioniert. Ich lese ein bis ein 'v' kommt, wenn es da ist werden die Koordinaten in 3-Dimensionalen Vektoren gespeichert. So, bishierhin alles gut. Jetzt kommen wir zu meiner Kurvenimplementierung. Und zwar sagte ich ja das die Vertices in einem Vektor abgelagert werden. Nachdem dies getan wurde, so dachte ich, ist es relativ einfach die Vektoren zu übergeben. Dazu hab ich dann mal gleich ne Kurvenfunktion geschrieben:
|
C-/C++-Quelltext
|
1
|
void GetCurve(const Vector &vector1, const Vector &vector2, const Vector &vector3,unsigned int numOfPoints);
|
So wie ich es mir überlegt hattem übergebe ich nach jedem Punkt, die Vektoren an die Funktion. Meine Frage, eventuell auch Problem, ist, dass ich für eine Kurve zwei wichtige Punkte brauche. Und zwar den Anfangs- und Endpunkt. Woher soll ich wissen welcher der Endpunkt und welcher der Startpunkt sind? Oder habe ich vielleicht was missverstanden, könnte es also sein das ein kompletter Block (wie ich ihn oben gepostet hab) eine einzige Kurve ist? Dann wäre es ja relativ einfach...
Ich vertue mich doch da oder?
Hoffe es hat einer verstanden, vielen Dank im Voraus!