您还没有登陆到CGPAD.COM   现在登录   注册新用户
搜索 CGPAD.COM
 
 
 
 浏览论坛    搜索论坛    规章制度    帮助  
社区成员: 23571   主题总数: 1374   回复总数: 3307   帖子总数: 4681   论坛跳转:  
 
 
论坛 普通讨论区 数学园地 (数学是CG的原动力) 本版斑竹:招募中...
 
   帖子列表  共享资源  资讯网摘  
 
几何     数论    
发表新主题
帖子搜索:  
 
bool pointIn2DTri(vec2 p, vec2 a, vec2 b, vec2 c)
{
 vec2 v1, v2;
 float area[3];
 bool zero_area[3];
 v1 = b - a;
 v2 = p - a;
 
 //2D向量叉乘的几何意义在于,等于V1,V2向量组成三角形面积的两倍
 area[0] = crossproduct(v1,v2);
 //判断浮点数是否等于0
 zero_area[0] = realequal(area[0], 0.0);
 
 v1 = c - b;
 v2 = p - b;

 area[1] = crossproduct(v1, v2);
 zero_area[1] = realequal(area[1], 0.0);
 
 if(!zero_area[0] && !zero_area[1] &&
 sign(area[0])!=sign(area[1])) //一个是正面积一个是负面积
 {
 return false;
 }

 v1 = a - c;
 v2 = p - c;

 area[2] = crossproduct(v1, v2);
 zero_area[2] = realequal(area[2], 0.0);
 
 //和相临的边再判断
 if((!zero_area[0] && !zero_area[2] && sign(area[0])!=sign(area[2])) ||
 (!zero_area[1] && !zero_area[2] && sign(area[1])!=sign(area[2])))
 {
 return false;
 }
 
 return true;
}






删除
 
编辑
 
标签:
 
附件:请登陆后查看附件内容!
 
声明:CGPAD文章版权属于作者,受法律保护。没有作者书面许可不得转载。
 
没有任何评论
 
 
版权所有 © 2005-2008 CGPAD.COM,湘ICP备07500998号,兼容浏览器:IE6IE7FireFoxOperaSafariChrome
Total Requests: 5276022, Total Visits: 3085200, Processing Time: 30ms,