Skip to content

向量操作

向量对象具有数学和科学中 3D 向量的属性。

r = vector(x,y,z)r=vec(x,y,z) 生成 3D 向量 < x, y, z >。

向量加法和减法

python
a = vector(1,2,3)
b = vector(10,20,30)
print(a+b)    # 输出 < 11, 22, 33 >

标量乘法

python
a = vector(1,2,3)
c = 2*a
print(c)   # 输出 < 2, 4, 6 >

向量的模

mag 可以作为函数或属性调用:

python
a = vector(1,2,3)
b = vector(10,20,30)
d = mag(a)
print(d)    # 输出 3.74166
e = b.mag
print(e)    # 输出 37.4166

单位向量

计算单位向量的函数有两个名称:hat() 和 norm()。两者都可以作为函数或属性调用:

python
a = vector(1,2,3)
b = vector(10,20,30)
f = hat(a)
print(f)  # 输出 < 0.267261, 0.534522, 0.801784 >
g = norm(a)
print(g)  # 输出 < 0.267261, 0.534522, 0.801784 >

h = a.hat
i = b.norm

为了方便,hat( vec(0,0,0) ) = vec(0, 0, 0) 以避免运行时错误。

点积

点积和叉积都可以作为函数或属性调用:

python
a1 = vector(3,1,0)
b1 = vector(0,2,0)
j = dot(a1,b1)
print(j)   # 输出 2
k = cross(a1,b1)
print(k)   # 输出 < 0, 0, 6 >

m = a1.dot(b1)
n = a1.cross(b1)

向量间的角度

diff_angle() 函数返回两个向量之间的角度(以弧度为单位):

python
a1 = vector(3,1,0)
b1 = vector(0,2,0)
p = diff_angle(a1,b1)
print(p)  # 输出 1.24905

q = a1.diff_angle(b1)

投影

为方便起见,proj() 函数计算一个向量在另一个向量上的投影:

python
A = vector(3,1,0)
B = vector(0,2,0)
C = proj(A,B)
print(C)   # 输出 < 0, 1, 0 >

注意 proj(A,B) = dot( A, hat(B) ) * hat(B)

comp() 函数计算 A 在 B 上的标量投影:

python
A = vector(3,1,0)
B = vector(0,2,0)
C = comp(A,B)
print(C)   # 输出 1.

注意 comp(A,B) = dot( A, hat(B) )

随机向量

vector.random() 生成一个分量在 -1 到 +1 范围内的随机向量。

旋转向量

python
myvec2 = rotate(myvec1, angle=a, axis=vector(x,y,z))
参数类型说明
firstargument向量要旋转的向量(上例中的 myvec1)。
angle标量旋转角度(以弧度为单位)。
axis向量旋转轴。默认值 < 0, 0, 1 >。