Vektorenaddition

Für allgemeine Fragen zur Programmierung mit PureBasic.
Gubbie247
Beiträge: 32
Registriert: 10.10.2004 13:23

Vektorenaddition

Beitrag 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
Benutzeravatar
milan1612
Beiträge: 810
Registriert: 15.04.2007 17:58

Beitrag von milan1612 »

Ich würde hier mal anfangen, scheint sehr gut erklärt zu sein:
http://de.wikipedia.org/wiki/Vektor#Add ... ubtraktion
Bin nur noch sehr selten hier, bitte nur noch per PN kontaktieren
Benutzeravatar
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

Beitrag 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.
Antworten