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.