首页 > 解决方案 > 从直线和角度计算 3D 点的坐标

问题描述

在此处输入图像描述

基本上,我想从某个已知的 AB 线生成一个随机点 C,以便:

从这些可以计算出 BC 长度和 ABC 角,但我无法更进一步。

有什么帮助或建议吗?

标签: math3d

解决方案


使用复数

对于点P(x,y),表示p = x + i y相关的复数。

带角度t和中心的旋转O(0,0)变成复数的乘法exp(i t) = cos(i t) + i sin(i t)

t= 45° = π/4 的情况下,这给出了复数r = exp(i π/4) = (sqrt(2)/2)(1+i)

可以通过在应用以 为中心的旋转之前减去,然后再次相加来推导出具有角度t和中心的旋转。Aa0a

如果C是由角度和中心B旋转的图像,则:tA

c = r * (b - a) + a

如何进行复数乘法?注意:

(x1 + i y1)(x2 + i y2) = x1 x2 + i^2 y1 y2 + i x1 y2 + i y1 x2
                       = (x1 x2 - y1 y2) + i (x1 y2 + y1 x2)

a = xa + i ya我让您使用、b = xb + i yb和应用前面的公式c = xc + i ycr = xr + i yr = sqrt(2)/2 + i sqrt(2)/2获得:

xc = ???
yc = ???

使用矩阵

用列向量表示点。

带角度t和中心的旋转O(0,0)变成矩阵的乘法:

R = (cos(t)  -sin(t))
    (sin(t)   cos(t))

同样,您需要计算C = R (B-A) + A.

如何执行矩阵乘法?

(s  v) (x) = (s x + v y)
(u  w) (y)   (u x + w y)

C我们得到与处理复数相同的公式。


推荐阅读