天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 66|回复: 0

确定 3D 点在平面上的投影是否在三角形内

[复制链接]
  • TA的每日心情
    开心
    前天 06:18
  • 签到天数: 49 天

    [LV.5]常住居民I

    185

    主题

    150

    回帖

    1695

    积分

    管理员

    积分
    1695
    发表于 2024-4-3 08:36:57 | 显示全部楼层 |阅读模式
    1. bool pointInTriangle(const Eigen::Vector3f& query_point,
    2.                      const Eigen::Vector3f& triangle_vertex_0,
    3.                      const Eigen::Vector3f& triangle_vertex_1,
    4.                      const Eigen::Vector3f& triangle_vertex_2)
    5. {
    6.     // u=P2−P1
    7.     Eigen::Vector3f u = triangle_vertex_1 - triangle_vertex_0;
    8.     // v=P3−P1
    9.     Eigen::Vector3f v = triangle_vertex_2 - triangle_vertex_0;
    10.     // n=u×v
    11.     Eigen::Vector3f n = u.cross(v);
    12.     // w=P−P1
    13.     Eigen::Vector3f w = query_point - triangle_vertex_0;
    14.     // Barycentric coordinates of the projection P′of P onto T:
    15.     // γ=[(u×w)⋅n]/n²
    16.     float gamma = u.cross(w).dot(n) / n.dot(n);
    17.     // β=[(w×v)⋅n]/n²
    18.     float beta = w.cross(v).dot(n) / n.dot(n);
    19.     float alpha = 1 - gamma - beta;
    20.     // The point P′ lies inside T if:
    21.     return ((0 <= alpha) && (alpha <= 1) &&
    22.             (0 <= beta)  && (beta  <= 1) &&
    23.             (0 <= gamma) && (gamma <= 1));
    24. }
    复制代码

     

     

     

     

    确定 3D 点在平面上的投影是否在三角形内
    哎...膜结构车棚,签到来了1...
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-5-13 06:41 , Processed in 0.058459 second(s), 21 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表