hi guys, i made a vectory library in python :)
i'm looking for some more things to implement, maybe you guys could come up with some ideas
from numpy import matrix, arctan, arccos, sqrt
def vec(a, b, c = None, d = None):
if c == None and d == None:
return matrix('%s;%s' % (a, b))
elif c != None and d == None:
return matrix('%s;%s;%s' % (a, b, c))
else:
return matrix('%s;%s;%s;%s' % (a, b, c, d))
def dim(v):
return v.shape[0]
def comp(v, a):
return v.item(a - 1, 0)
def dot(v1, v2):
if dim(v1) == dim(v2):
dot = 0
for i in range (dim(v1)):
dot = dot + comp(v1, i) * comp(v2, i)
return dot
else:
return "error"
def cross(v1, v2):
if dim(v1) == 3 and dim(v2) == dim(v1):
u1 = comp(v1, 1)
u2 = comp(v1, 2)
u3 = comp(v1, 3)
w1 = comp(v2, 1)
w2 = comp(v2, 2)
w3 = comp(v2, 3)
n1 = u2 * w3 - u3 * w2
n2 = u3 * w1 - u1 * w3
n3 = u1 * w2 - u2 * w1
return vec(n1, n2, n3)
else:
return "error"
def stp(v1, v2, v3):
if dim(v1) == dim(v2) and dim(v2) == dim(v3):
return dot(v1, cross(v2, v3))
else:
return "error"
def vtp(v1, v2, v3):
if dim(v1) == dim(v2) and dim(v2) == dim(v3):
return cross(v1, cross(v2, v3))
else:
return "error"
def length(v):
return sqrt(dot(v, v))
def angle(v1, v2):
if dim(v1) == dim(v2):
return arccos(dot(v1, v2) / (length(v1) * length(v2)))
else:
return "error"
def printv(v):
if v != "error":
if dim(v) == 2:
a = comp(v, 1)
b = comp(v, 2)
vec = '(%s, %s)' % (a, b)
if dim(v) == 3:
a = comp(v, 1)
b = comp(v, 2)
c = comp(v, 3)
vec = '(%s, %s, %s)' % (a, b, c)
if dim(v) == 4:
a = comp(v, 1)
b = comp(v, 2)
c = comp(v, 3)
d = comp(v, 4)
vec = '(%s, %s, %s, %s)' % (a, b, c, d)
print vec
else:
print "error"
def printpol(v):
if v != "error":
if dim(v) == 2:
x = comp(v, 1)
y = comp(v, 2)
r = length(v)
theta = arctan(y / x)
vec = matrix('%s;%s' % (r, theta))
elif dim(v) == 3:
x = comp(v, 1)
y = comp(v, 2)
z = comp(v, 3)
r = length(v)
theta = arctan(y / x)
phi = arccos(z / r)
vec = matrix('%s;%s;%s' % (r, theta, phi))
printv(vec)
else:
print "error"
EDIT: Added the .py file so people can be lazy
Nice. Maybe you could add the .py file for download so other people can be lazy.