Seite 1 von 1
Vektorenaddition
Verfasst: 19.12.2007 15:47
von Gubbie247
Hallo.
Ich brauche eine Prozedur, die zwei Vektoren addieren kann:
Nach dem Schema Addition(Vektor1, Vektor2).
Ein Vektor hat einen Winkel und eine Länge.
Hat vielleicht jemand einen Denkanstoss?
Vielen Dank für eure Hilfe und frohe Weihnachten
Verfasst: 19.12.2007 16:24
von milan1612
Ich würde hier mal anfangen, scheint sehr gut erklärt zu sein:
http://de.wikipedia.org/wiki/Vektor#Add ... ubtraktion
Verfasst: 19.12.2007 16:24
von NicTheQuick
Ein Vektor hat keinen Winkel und eine Länge, sondern eine oder mehrere
Richtungen.
Aber hier trotzdem die Procedure, wie du sie brauchst:
Code: Alles auswählen
Structure Vector
x.d
y.d
EndStructure
Structure Vector2
a.d
l.d
EndStructure
Procedure AddVector(*v1.Vector, *v2.Vector)
*v1\x + *v2\x
*v1\y + *v2\y
EndProcedure
#PI = 3.141592653589793238
Procedure AddVector2(*v1.Vector2, *v2.Vector2)
Protected w1.Vector, w2.Vector
;Umwandeln von Vector2 in Vector
w1\x = Cos(*v1\a) * *v1\l
w1\y = Sin(*v1\a) * *v1\l
w2\x = Cos(*v2\a) * *v2\l
w2\y = Sin(*v2\a) * *v2\l
;Vektoren addieren
w1\x + w2\x
w1\y + w2\y
;Umwandeln von Vector in Vector2
*v1\l = Sqr(w1\x * w1\x + w1\y * w1\y)
*v1\a = ATan(w1\y / w1\x)
If w1\x < 0.0 : *v1\a + #PI : EndIf
If *v1\a < 0.0 : *v1\a + #PI * 2 : EndIf
EndProcedure
Define v1.Vector2, v2.Vector2
v1\a = 0
v1\l = 1
v2\a = #PI * 0.5
v2\l = 1
AddVector2(v1, v2)
Debug v1\a
Debug v1\l
'Vector2' ist die Struktur für deinen Vektortyp, 'Vector' ist die Struktur für
den eigentlichen 2D-Vektor.
Wie du auch siehst, ist die Addition der normalen Vektoren weitaus
einfacher und schneller als die von deinen Vektoren.