投影线的角度 Space
Projections' Angle of Line in Space
线的起点(黄色)和轴在 [xc,yc,zc]
行尾在 [xp,yp,zc]
。
a
、b
、c
是直线在 space.
中形成的角度
我需要的是线的投影(黑线)在 xy、yz 和 xz 平面上形成的角度。
A_y_to_z
: 投影线在xz平面上y轴到z轴的夹角。
A_z_to_x
:zx平面上z轴到x轴的夹角。
A_x_to_y
:xy平面上x轴到y轴的夹角。
正在 Matlab
上编写代码
您可以通过以下方式计算到任何平面的投影角度:
获取直线方向,d = (xp - xc, yp - yc, zp - zc)
规范化d
用平面的法线计算点积,dot(d, n) = d.x * n.x + d.y * n.y + d.z * n.z
通过a = acos(dot(d, n))
计算与法线的角度
最终通过取 b = 90 - a
获得与平面的角度(假设单位为度 - 注意大多数数学库函数使用弧度)
特例:如果dot(d, n) < 0
,则角度a
将大于90度。在这种情况下,如果您只想要锐角,请执行 b = a - 90
而不是 90 - a
.
例如要计算与 xy 平面的角度,请使用 n = (0, 0, 1)
,即 z 轴,它是该平面的法线。
线的起点(黄色)和轴在 [xc,yc,zc]
行尾在 [xp,yp,zc]
。
a
、b
、c
是直线在 space.
我需要的是线的投影(黑线)在 xy、yz 和 xz 平面上形成的角度。
A_y_to_z
: 投影线在xz平面上y轴到z轴的夹角。A_z_to_x
:zx平面上z轴到x轴的夹角。A_x_to_y
:xy平面上x轴到y轴的夹角。
正在 Matlab
您可以通过以下方式计算到任何平面的投影角度:
获取直线方向,
d = (xp - xc, yp - yc, zp - zc)
规范化
d
用平面的法线计算点积,
dot(d, n) = d.x * n.x + d.y * n.y + d.z * n.z
通过
a = acos(dot(d, n))
计算与法线的角度
最终通过取
b = 90 - a
获得与平面的角度(假设单位为度 - 注意大多数数学库函数使用弧度)
特例:如果dot(d, n) < 0
,则角度a
将大于90度。在这种情况下,如果您只想要锐角,请执行 b = a - 90
而不是 90 - a
.
例如要计算与 xy 平面的角度,请使用 n = (0, 0, 1)
,即 z 轴,它是该平面的法线。