Ich bin neu sowohl in Python als auch in der Welt der Foren, deshalb bitte ich um Rücksicht.
Als Übung wollte ich einen Code schreiben der Kugel Koordinaten in Kartesische umwandelt und umgekehrt, sowie mir die Möglichkeit geben, zwei Vektoren zu addieren, dazu ist meines Wissens nach zuerst eine Umformung in Kartesische Koordinaten notwendig, sofern die Vektoren nicht schon als solche Vorliegen.
Hier ist mein Versuch:
Code: Alles auswählen
import math
class Vektor_kugel():#Vektor in Kugelkoordinaten
def __init__(self, r, phi, theta):
self.r = r
self.phi = phi
self.theta = theta
class Vektor_kart():#Vektor in Karthesischen-koordinaten
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
def umwandeln_Ika(v):# einen Vektor von Kugel in Karthesiche Koordinaten umwandeln
e = Vektor_kart
e.x = v.r * math.cos(v.phi) * math.sin(v.theta)
e.y = v.r * math.sin(v.phi) * math.sin(v.theta)
e.z = v.r * math.cos(v.theta)
return e
def umwandeln_Iku(v):# einen Vektor von Karthesischen in Kugelkoordinaten umwandeln
e = Vektor_kugel
e.r = math.sqrt((v.x*v.x)+(v.y*v.y)+(v.z*v.z))
if (e.r == 0):
e.phi, e.theta = 0, 0
elif(v.x == 0):
e.phi = 0
else:
e.phi = math.atan(v.y/v.x)
e.theta = math.acos(v.z/e.r)
return e
def V_addition_kart(v1, v2):# Zwei karthesiche Vektoren addieren
e = Vektor_kart
e.x = v1.x + v2.x
e.y = v1.y + v2.y
e.z = v1.z + v2.z
return e
def V_addition_kug(v1, v2):# Zwei Vektoren in Kugelkoordinaten addieren
return umwandeln_Iku(V_addition_kart(umwandeln_Ika(v1), umwandeln_Ika(v2)))
vektor1 = Vektor_kugel(1, 1, 1)
vektor2 = Vektor_kugel(math.pi, math.pi, math.pi)
vektora = umwandeln_Ika(vektor1)
print(vektora.x, vektora.y, vektora.z)#####Die erste ausgabe
vektorb = umwandeln_Ika(vektor2)
print("Vektor a = ", vektora.x, vektora.y, vektora.z)####Die zweite ausgabe(sollte ja eigentlich der ersten entsprechen, tut es aber nicht)
print("Vektor b = ",vektorb.x, vektorb.y, vektorb.z )
v3 = V_addition_kug(vektor1, vektor2)
print(v3.r, v3.phi, v3.theta)
0.4546487134128409 0.7080734182735712 0.5403023058681398
Vektor a = -3.8473413874435795e-16 4.7116343153599164e-32 -3.141592653589793
Vektor b = -3.8473413874435795e-16 4.7116343153599164e-32 -3.141592653589793
6.283185307179586 -1.2246467991473532e-16 3.141592653589793
Erstmal verstehe ich nicht, warum sich vektora ändert, obwohl ich eigentlich nur vektorb umforme.
Wenn ihr sonst noch Tipps zur Notation habt, oder ganz anders an das Problem herangegangen wärt, lasst es mich bitte auch Wissen!
Vielen dank im Vorraus
