(Sorry, mir ist leider kein besserer Titel eingefallen)
Ich versuch erstmal mein "Problem" mal zu umschreiben. (Oder schaut einfach das Bild an...)
Mein Ziel ist es, einen Pfad dicker zu zeichnen.
Der Pfad besteht momentan aus zwei Vektoren, die aneinanderhängen.
Sie bilden also eine Ecke.
Praktisches Beispiel: Darstellung von Blitzen. Ein Blitz, der sich nicht aufspaltet, beschreibt ja einen Pfad, der sich in Vektoren unterteilen lässt. Doch wie zeichnet man einen solchen Blitz? Eine Möglichkeit wäre mit Linien, doch ist das Resultat davon etwas "faserig". (Siehe auch das Blitzdemo von Jan Horn)
Aber man könnte doch auch Vierecke statt der Linien zeichnen. Wenn man dann noch eine Textur darufpappt, schaut das ganze schon ganz hübsch aus.
Doch woher bekommt man die Vertex-Koordinaten für das Viereck???
Mir ist da folgende Idee gekommen: Wenn man erstmal nur 2 Vektoren nimmt, bildet man aus diesen beiden ein Parallelogram. Dann bastelt man die Diagonale und verlängert diese. Schon hat man eine Achse, auf der die Koordinaten liegen.
Ich weiß nicht, ob es die Beste Lösung ist (Mit Sicherheit nicht ), aber mir ist nichts besseres eingefallen.
Was gibt es noch für Lösungen für dieses Problem?
Zum Bild: Die nicht-beschrifteten Linien stellen die Form dar, die ich dann am Ende gern hätte.
Registriert: Di Dez 02, 2003 12:47 Beiträge: 300 Wohnort: Marburg
Wenn du den Differenzvektor der normierten (Länge=1) Vektoren nimmst, erhällst du die Richtung der Winkelhalbierenden. Die dürfte besser geeignet sein, als die Diagonale des Parallelograms.
Ausserdem musst du den Abstand der Koordinaten vom Winkelscheitelpunkt vom jeweiligen Winkel zwischen den zwei Vektoren abhängig machen, um zu gewerleisten, dass der "Pfad" überall gleich breit ist.
Der Abstand müsste Proportional sein zu 1/cos((180-Winkel(v1,v2)/2) (keine Garantie, einfach aufzeichnen und gucken).
_________________ Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de
Wenn du den Differenzvektor der normierten (Länge=1) Vektoren nimmst, erhällst du die Richtung der Winkelhalbierenden. Die dürfte besser geeignet sein, als die Diagonale des Parallelograms.
*grübel grübel grübel...* Da ist was dran... Das ist ja infach genial! Damit sind zwei Fliegen mit einer Klappe geschlagen! Das ganze geht auch in 3D und es ist um Längen einfacher!
geo hat geschrieben:
Ausserdem musst du den Abstand der Koordinaten vom Winkelscheitelpunkt vom jeweiligen Winkel zwischen den zwei Vektoren abhängig machen, um zu gewerleisten, dass der "Pfad" überall gleich breit ist. Der Abstand müsste Proportional sein zu 1/cos((180-Winkel(v1,v2)/2) (keine Garantie, einfach aufzeichnen und gucken).
Hmm... ja. ich hab mir dazu auch mal experimentell ein paar Werte nachgemessen (Vorher ein paar Beispiele konstruiert) und den Abstand der Koordinaten vom Winkelscheitelpunkt als Graph darstellen lassen. Das, was dabei rauskahm, sah schon irgendwie nach Siux aus, aber ich stand da wohl irgendwie aufm Schlauch.
Aber wie kommst du auf diese Formel??? Gesetzten Falls, die stimmt...
Muss ich gleich mal ausprobieren.
Dreh mal deinen Blitz um 90° und du hast ein Problemm. Darum würde ich dir raten so eine Art Billboard zu nützen.
Der einzigste Hacken dabei ist, dass im Billboard Artikel noch nicht beschrieben wird, wie man so ein Ecken Problemm löst.
MfG Flo
Dieses Problem hab ich bisher erfolgreich verdrängt *g*
Aber du hast Recht. So ganz das ware ist es nicht. Aber den Winkel der Kamera zum Blitz müsste man rausfinden können. Wie's dann allerdings weitergeht, weiß ich auch net.
Und diese Vektoren, so schön sie zweifellos sind, sind mir nicht ganz geheuer.
Wenn ich als Winkel zwischen den Vektoren (1,0,0) und (0,1,0) 7° herausbekomm, ist das etwas strange. Liegt aber wahrschienlich nicht an den Vektoren, sondern an mir.
Wie auch immer. Irgendwo hab ich mal eine Demo gesehen, die einen Blitz zeigte, genauso, wie ich ihn haben will. Die war nur leider mit glScene-Komponenten gemacht und damals dachte ich nicht im Traum daran, sowas zu machen. Und heut find ich die Demo nimmer
EDIT: Ich hab mir grad den Billboard-Artikel im Wiki angeschaut. Ist ja beängstigend, wie der sich weiterentwickelt hat. Das letzte Mal, als ich da reingeschaut hab, war der grad am Anfang. Und jetzt...
Registriert: Do Jun 19, 2003 10:44 Beiträge: 991 Wohnort: Karlsfeld (nahe München)
Zitat:
Und diese Vektoren, so schön sie zweifellos sind, sind mir nicht ganz geheuer. Wenn ich als Winkel zwischen den Vektoren (1,0,0) und (0,1,0) 7° herausbekomm, ist das etwas strange. Liegt aber wahrschienlich nicht an den Vektoren, sondern an mir.
Ob der Weg über den Winkel der schnellste ist, würde ich aber bezweifeln.
Ja, vom Skalarprodukt hab ich schonmal was gehört, wie man unschwer am zweiten Post in diesem Thread erkennen kann . Bzw. das Vektor-Tutorial hier auf DGL gelesen.
Und den Winkel brauch ich auch nur zum Debuggen.
EDIT: Hab den Fehler entdeckt... Die genau falsche Kombination von ArcCos und RadToDeg hat den Fehler verursacht. Ist nun schon das zweite Mal, dass mir das passiert. ^^
EDIT 2:
Kann mir jemand erklären, warum bei Winkel1 90,0000035550306° rauskommt
und bei Winkel2 genau 90°?
So. Hab's jetzt hinbekommen. Die merkwürdige Formel "1/cos((180-Winkel(v1,v2)/2)" hat bei mir merkwürdige Resultate geliefert. Ich hab aber einen viel einfacheren Weg gefunden, das zu lösen. Einfach den Differenzvektor normalisieren .
Schon hat sich das gegessen. Der Differenzvektor bleibt dann auf einer konstanten Länge.
Die konstante Länge hat jedoch den Nachteil, dass bei einem Winkel von 90° auffällt, dass der Pfad nicht gleichbreit ist. Aber das lässt sich notfalls verschmerzen.
Registriert: Di Dez 02, 2003 12:47 Beiträge: 300 Wohnort: Marburg
Sorry: 1/sin((180-Winkel(v1,v2))/2) !!! Wenn mich nicht alles täuscht Wobei der Winkel nicht der "innere" Winkel, sondern der Winkel zwischen dem 2. Vektor und dem Verlänertem 1. ist.
Äh... kommt also quasie auf die Richtung der Vektoren an, wenn mann dass Skalarprodukt zur Winkelbestimmung benutzt.
Ansonsten 1/sin(Winkel(v1,v2)/2) Aber ist ja auch egal
_________________ Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de
Mitglieder in diesem Forum: 0 Mitglieder und 0 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.