假设我有两个三维矢量,由两个numpy数组表示:
import numpy as np
v1 = np.array([2, -3, 5])
v2 = np.array([1, 4, -2])
我想计算平行四边形的面积,其中两个邻边由v1
和v2
给出。我写了下面的代码:
import math
area = math.sqrt((v1[0] * v2[1] - v1[1] * v2[0])**2
+ (v1[1] * v2[2] - v1[2] * v2[1])**2
+ (v1[0] * v2[2] - v1[2] * v2[0])**2)
print(area)
# 19.949937343260004
代码工作得很好,但是什么是编码的numpyic方式?我不熟悉numpy
平行四边形的面积可由两个向量的外积的范数计算。从叉乘的定义可以看出,叉乘的范数基本上是|a||b|sin(θ)是平行四边形常用的面积公式之一。
np.linalg.norm(np.cross(v1, v2))
# 19.949937343260004