天气与日历 切换到窄版

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

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

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 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 点在平面上的投影是否在三角形内
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 07:57 , Processed in 0.147557 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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