如何将矢量投影到由Python中的正交矢量定义的平面上



我有一个平面,plane A,由它的正交向量定义,比如(a, b, c)

(即矢量(a, b, c)plane A正交)

我希望将向量(d, e, f)投影到plane A上。

如何在Python中执行此操作我认为一定有一些简单的方法。

(d, e, f),减去它在平面归一化法线上的投影(在您的情况下为(a, b, c))。因此:

v = (d, e, f)
        - sum((d, e, f) *. (a, b, c)) * (a, b, c) / sum((a, b, c) *. (a, b, c))

这里,*.是指分量乘积。这意味着:

sum([x * y for x, y in zip([d, e, f], [a, b, c])])

d * a + e * b + f * c

如果你只是想清楚但迂腐的

并且类似地用于CCD_ 10。因此,在Python中:

from math import sqrt
def dot_product(x, y):
    return sum([x[i] * y[i] for i in range(len(x))])
def norm(x):
    return sqrt(dot_product(x, x))
def normalize(x):
    return [x[i] / norm(x) for i in range(len(x))]
def project_onto_plane(x, n):
    d = dot_product(x, n) / norm(n)
    p = [d * normalize(n)[i] for i in range(len(n))]
    return [x[i] - p[i] for i in range(len(x))]

然后你可以说:

p = project_onto_plane([3, 4, 5], [1, 2, 3])

相关内容

  • 没有找到相关文章

最新更新