Vektor an Vektor spiegeln.
Übersicht

![]() |
StepTigerBetreff: Vektor an Vektor spiegeln. |
![]() Antworten mit Zitat ![]() |
---|---|---|
Um es kurz zu erklären:
Ich habe 2 Vektoren. Der eine Vektor ist der Vektor, der auf ein Polygon zielt. Der zweite Vektor ist der Vektor, der die Normale des getroffenen Polygons darstellt. Nun möchte ich Vektor 1 an Vektor 2 spiegeln. Welchen Sinn hat das? Nun, wie einige vielleicht wissen, arbeite ich zur Zeit an meinem Raytracer weiter. Wenn also ein Polygon getroffen wird, dann soll eine Reflektion dargestellt werden. Wie kann ich nun den Vektor 1 am Vektor 2 spiegeln? Ich finde leider keine Lösung. Vielen Dank! |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wow, ein Tag vergangen und keine Antwort bekommen. Falls es dir hilft, hier eine 2D-Version aus einem meiner Testprogrammen. Funktioniert wunderbar, eventuell sie Speedvariable weg nehmen, da dies zu einer Abdumpfung der Geschwindigkeit führt.
Code: [AUSKLAPPEN] If CountCollisions(spr)>0 Then
nx#=CollisionNX(spr,1) ny#=CollisionNY(spr,1) w1=ATan2(yg,xg) w2=ATan2(ny,nx) w3=180+(w2*2)-w1 speed#=Sqr(xg^2+yg^2)/2 xg=Cos(w3)*speed yg=Sin(w3)*speed xp=xpa yp=ypa End If Wie das ganze in 3D aussieht, weiß ich jetzt auch nicht. Ich wüsste aber einen workaround dazu: edit: - (Pivot2 ist Child von Pivot1) - Bei Kollision ein Pivot1 an Position der Kollision bringen - Pivot1 nach dem Polygonvektor ausrichten - Pivot2 an letzte Position vor Kollision bringen - Pivot1 nun in Y um 180° drehen - Aus Position Pivot1 zu Pivot2 ist nun die neue Geschwindigkeit abzulesen Obwohl mir selber der workaround garnicht gefällt. Wo sind denn die ganzen schlauen Köpfe dazu? |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1. Vektor 1 auf Vektor 2 projezieren -> Vec3
2. Nun Vec3 von Vektor 1 abziehen -> Vec4 3. Spiegelung ist nun -Vektor + 2 * Vec4 zu 1: selbst recherchieren wie das geht, grundlegende vektor mathematik (skalarprodukt wird dazu benötigt) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke nochmals.
Aber ich komme einfach nicht mit Vektorenprojektion klar. Welche Berechnungen muss ich duchführen, wenn ich z.B. den Vektor: a=2,0,3 auf den Vektor b=3,1,2 projezieren möchte? Bzw. wie komme ich nun an das benötigte Skalarprodukt? *edit* Doch gefunden! Aber wie kann ich einen Vektor mit einem Winkel multiplizieren? |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist genau das, was du brauchst:
http://www.mario-konrad.ch/file.php?id=10016 Da wird im unteren Abschnitt beschrieben, wie man mittels Kreuzprodukt erst die Normale n des Polygons errechnet, und dann anschließend den Richtungsvektor d an n spiegelt und n' erhält. Ich denke mal, du willst da eine Art Pong in 3d basteln. Die Normale n bekommst du über CollisionTriangle und CollisionSurfaces heraus. Die Vertices in dem gefunden Dreieck konvertierst du in Weltkoordinaten mittels TFormPoint was dann deine Ortsvektoren a, b, und c sind. Der Richtungsvektor d ist dann sicher CollisionNX, NY, NZ. mfg olli |
||
vertex.dreamfall.at | GitHub |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ne, kein Pong3D.
Wie oben geschrieben, geht es um einen Raytracer ![]() Vielen Dank! Werde es mir morgen anschauen. Gerade nicht möglich da die PC-Überhitzung bald eintreffen wird. Siehe: Smalltalk->2 Computer - 2 Probleme =) |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group