【问题标题】:Exit angle and point of a segment that lies on a triangle in 3D位于 3D 三角形上的线段的出射角和点
【发布时间】:2012-11-18 22:42:00
【问题描述】:

知道 3D 三角形的顶点,以及属于该三角形的点 E 在水平面上的投影的 x、y 坐标。还给出了角度 alpha,表示相对于位于三角形同一平面上的线段的边 AB 的角度。我想知道 3 件事:

  • 对于给定的 alpha,F 在哪一侧
  • “出口”侧与线段 EF 形成的角度是多少(始终以顺时针方式考虑以下顶点)
  • EF 的长度
  • 如果 BC 是出口侧,则 BF 段的长度(再次顺时针)

不过……我想看看它的表现如何。 谢谢。

grid http://www.keplero.com/upps/mesh.jpg

【问题讨论】:

    标签: math 3d geometry


    【解决方案1】:
    1. 找到点 E。画一条垂直于水平面的线,穿过 E 的投影。 E点是该线与三角形所在平面的交点。 (如果三角形的平面垂直于水平面,则您没有足够的信息来找到 E。)
    2. 对点 A、B、C、E 执行变换,使它们位于水平面上。仅使用旋转和平移,以便保留角度和距离。通过这一步,问题可以只在两个维度上解决,从而简化了事情。
    3. 画一条从 E 向外延伸的射线,它与 AB 的夹角为 alpha。
    4. 对于 AB、BC、CA 中的每一个,确定从 E 延伸的射线是否与其相交。点 F 是射线与其相交的任何线段的交点。 (如果光线穿过三角形的顶点而不是边,那么您可能无法得到有意义的答案,涉及到“出口”侧的问题。)
    5. 使用 F 的位置,确定每个要点的答案。
    6. (可选)执行步骤 2 中完成的变换的反向操作,以获得 F 的真实位置。

    【讨论】:

    • 我也在考虑将所有东西都放在 2D 中,但这需要大量的三角函数,在完成之前我想知道是否可以在不更改坐标系的情况下直接进行。出于性能原因,我想避免任何不必要的步骤
    • 我更喜欢将事物放在 2d 中,因为我预计算法的实现将使用有限精度的变量。如果您在 3d 中解决问题,并且描述线段和射线的方程具有误差范围,那么您将需要一个“模糊逻辑”算法来查找交叉点。可以说,“Ray E 没有与任何东西相交,但它在 BC 段的 0.00001 单位内,所以这已经足够接近了”。如果你在 2d 中做,你可以用非模糊算法找到交集,所以我相信它总体上更简单。
    猜你喜欢
    • 2019-06-06
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 2012-02-29
    • 2010-12-03
    • 2014-10-20
    • 1970-01-01
    • 2021-03-27
    相关资源
    最近更新 更多