我有一个向量并将其投影到平面上。我尝试计算投影,但发现公式似乎不正确。
这是我的代码:
import pandas as pd
# n is the normalized normal of the plane and v is the vector
n = np.array([0.6, 0.3, -0.7])
v = np.array([-415, 212, 180])
p = v - np.dot(v, n) / (np.linalg.norm(n)**2) * n
# array([-216.23404255, 311.38297872, -51.89361702])
cross_product = np.cross(p, n)
# array([202.4, 182.5, 251.7])
” 如果该公式有效,则平面上的投影“p”应垂直于法线“n” np.cross() 结果应该是 (0,0,0)。然而,如上所示,交叉结果是([202.4, 182.5, 251.7])。
我不知道为什么这个公式在这里不起作用。谁能帮我解答一下吗?
好吧,你正在做的是使用“投影”p来计算叉积,而你需要使用投影向量来获得叉积,你可以通过
来完成projected_vector = v - p
然后使用projected_vector计算叉积:
cross_product = np.cross(projected_vector, n)
减法详细解释: 当你计算投影时,你实际上找到了向量v在平面法线方向上的分量,获得了v在平面上的分量,你从原始向量中减去这个投影。 如果直接使用 p 向量(投影),则仅使用投影分量并忽略平面中的分量。