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
Vektorenaddition
Ich würde hier mal anfangen, scheint sehr gut erklärt zu sein:
http://de.wikipedia.org/wiki/Vektor#Add ... ubtraktion
http://de.wikipedia.org/wiki/Vektor#Add ... ubtraktion
Bin nur noch sehr selten hier, bitte nur noch per PN kontaktieren
- NicTheQuick
- Ein Admin
- Beiträge: 8812
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Ein Vektor hat keinen Winkel und eine Länge, sondern eine oder mehrere
Richtungen.
Aber hier trotzdem die Procedure, wie du sie brauchst:
'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.
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
den eigentlichen 2D-Vektor.
Wie du auch siehst, ist die Addition der normalen Vektoren weitaus
einfacher und schneller als die von deinen Vektoren.