【问题标题】:Projections' Angle of Line in Space投影线在空间中的角度
【发布时间】:2017-07-04 11:59:54
【问题描述】:

行首(黄色)和坐标轴位于[xc,yc,zc]

行尾在[xp,yp,zc]

a,b,c 是直线在空间中形成的角度。

我需要的是线的投影(黑线)在 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上写代码

【问题讨论】:

  • A_x_to_y = atan(y/x)。在某处阅读并尝试过。但这是不正确的。
  • @m7913d 我在另一个浏览器上试过它是可见的。你确定吗?

标签: matlab math geometry projection angle


【解决方案1】:

您可以通过以下方式计算到任何平面的投影角度:

  1. 获取线的方向,d = (xp - xc, yp - yc, zp - zc)

  2. 规范化d

  3. 用平面的法线计算点积dot(d, n) = d.x * n.x + d.y * n.y + d.z * n.z

  4. 通过a = acos(dot(d, n))计算与法线的角度

  5. 最终通过采用b = 90 - a 获得与平面的角度(假设单位为度 - NB 大多数数学库函数使用弧度)

特殊情况:如果dot(d, n) < 0,那么角度a会大于90度。在这种情况下,如果您只想要锐角,请使用b = a - 90 而不是90 - a

例如要计算与 xy 平面的角度,请使用n = (0, 0, 1),即 z 轴,它是该平面的法线。

【讨论】:

    猜你喜欢
    • 2017-04-10
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 2015-06-18
    • 2011-03-31
    • 2018-09-26
    相关资源
    最近更新 更多