☆──────────────────────────────────────☆
splutter (呆子) 于 Fri Jun 8 11:26:32 2001 提到:
判断一个点是否在一个多边形内可以用计算面积的方法
不知道这个问题是否可以用计算体积的方法做呢?
- splutter -
☆──────────────────────────────────────☆
shirmin (珉) 于 Fri Jun 8 11:42:29 2001 提到:
整个程序很短
首先写一个函数double vv(p1,p2,p3,p4)
用来计算p1,p2,p3,p4 4个点的以下行列式值
|x1,y1,z1,1|
|x2,y2,z2,1|
|x3,y3,z3,1|
|x4,y4,z4,1|
这个函数的作用可以判断4点是否共面,还可以判断两点是否在一个面的同侧
然后
for(p1)
for(p2)
for(p3)
for(p4)
4重循环取出4个点if (4个点都不相同&&vv(p1,p2,p3,p4)==0)
vv==0说明体积为0,即4点共面.
{
然后for(p5)
保证p5和p1,p2,p3,p4不同而且所有的vv(p1,p2,p3,p5)同号(都>0或都<0),
否则continue;
就是保证除了这四点其他所有点在一侧,
这样保证p1,p2,p3,p4确实是六面体的一个面.
{
然后保证vv(p1,p2,p3,px)也和这些点同号,(px为要求的点).
否则就在外面return 0;
(若此vv==0说明所求点在面上,按照体内的不同定义return 0或者1)
}
}
最后如果对于所有的六面体的面与其他点都同号,侧在六面体内.
return 1;
☆──────────────────────────────────────☆
shirmin (珉) 于 Fri Jun 8 11:43:10 2001 提到:
因为他的六面体给的形式是8个点,所以一定是凸的
8个点不能确定一个凹的六面体
凹的也能做,不过他要给定每个面,而不是8个点
而且凹的比较麻烦,也比较统一.
随便什么多面体算法都一样 .
从所求得点向无穷远作射线
和多面体交偶数次说明在外面
奇数次说明在里面
说说简单,不过要做线交面,有一点烦.
背景:
阅读新闻
相关新闻
相关关键词:
全站导航
gmail.com