已知多面体(全是三角形)的顶点坐标,如何判断空间一点是不是在多面体内?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已知多面体(全是三角形)的顶点坐标,如何判断空间一点是不是在多面体内?相关的知识,希望对你有一定的参考价值。
参考技术A 你的问题,是不是可以这样理解,已知各面都是三角形的N面体,和空间内一点,判断这点是否在形内的方法?如果是的话,你可以用这个方法,
分别
以这个点为顶点
这个N面体的N个面为底面
组成N个小四面体
计算这个N面体的体积V1
计算这N个小4面体的体积之和V2
比较V1和V2
如果V1=V2,就说明这点在多面体内(包括在多面体的面上),
如果V1>V2,则算错了,
如果V1<V2,则说明这个点在多面体外追问
如果是凹多面体呢
追答可以把这个凹多面体分割成若干个凸多面体组合而成的图形,
然后依次判断,这个点是否包含于若干个凸多面体之中
如果这个点包含于其中某个凸多面体中,
那么这个点,就在所要判断的凹多面体内;
如果这个店,不包含于任何一个凸多面体内,
那么这个点,就不在所要判断的凹多面体内;
求具体算法。
平面坐标系中 如何判断某一点在一矩形区域内?
平面坐标系中,点坐标已知,矩形四点坐标已知,如何判断?
忘了说,用matlab 编程!!!
已经搞定了,因为要编程,所以可编程性是第一位的,我采用了矩形任意两个顶点坐标与要判断的点坐标所组成的三角形的面积,这样的三角形共有4个,求面积和;然后对矩形求面积,如果两者面积相等,则要判断的点坐标在矩形内,如果前者大于后者,点坐标在矩形外.
另外,求面积时使用坐标行列式来求,很简单.
还要谢谢两位网友回答这个问题.
X1=zeros(1,30);X2=zeros(1,30);Y1=zeros(1,30);Y2=zeros(1,30);%创建全零数组
b=0;c=0;
xx=x1:pi/100:x2;yy=y1:pi/100:y2
plot(xx,y1,xx,y2,x1,yy,x2,yy);%画出矩形
for a=1:30;%假设是30个点
x=X(1,a);y=Y(1,a);%1行30列矩阵X、Y为点坐标值矩阵,提取坐标值
if([x>x1,x<x2,y>y1,y<y2])
plot(x,y,'x','LineWidth',2,'Color','green');%在矩形内画绿X
b=b+1;
X1(b)=x;Y1(b)=y;%储存点坐标
else
plot(x,y,'x','LineWidth',2,'Color','red');%不在矩形内画红X
c=c+1;
X2(c)=x;Y2(c)=y;
end
end
刚接触matlab,正好在做,应该没问题。。 参考技术A 高中学过的有一种方法
具体叫什么记不得了
具体操作如下
矩形的四条边的直线方程写出来
然后列成等于0的形式
最后改为不等式组
上面和右边的一条为小于0
下面和左边的一条为大于0
设定好条件后就可以编程了 参考技术B 还要判断?
以上是关于已知多面体(全是三角形)的顶点坐标,如何判断空间一点是不是在多面体内?的主要内容,如果未能解决你的问题,请参考以下文章
已知空间三角形,四边形,或者五边形的顶点的三维坐标,如何遍历多边形内部的每个点。