一平面三角形三顶点已知(x1,y1)、(x2,y2)、(x3,y3),如何
来源:互联网 发布:淘宝如何看卖家销售额 编辑:程序博客网 时间:2024/04/29 20:08
一平面三角形三顶点已知(x1,y1)、(x2,y2)、(x3,y3),如何
判断平面上任一点(x,y)是否在三角形内?
可以参考GIS中判断点与任意多边形关系的算法:
1.转角法
假设某平面上有点P0和多边形P1 P2 P3 P4 P5,以点P0为中心,从多边形P1 P2 P3 P
4 P5任一顶点开始顺次走过多边形所有顶点,如最后回到起点时的转角之和为360度,则该
点在多边形内;如转角之和为0度,则该点在多边形外;若P0正好在多边形某条边上或与某
个顶点重合,则可认为在多边形外。如下图所示,具体的算法如下:
图五 转角法判断点与多边形的位置关系
将点P0分别与Pi相连,构成向量Vi =Pi-P0。假设角∠PiP0Pi+1=αi,αi可由下列公
式计算
αi=arccos(Vi·Vi+1/|Vi||Vi+1|)
αi角度的方向一般是通过计算两个向量的叉积的符号来判断。
2射线法
(1) 如图五所示,从点P(xp,yp)引一条与y轴平行的射线Px,该射线方程为x=xp,交
点个数计数器清零,设计算误差为ep。 (2)
粗判,测试多边形上的边ei是否与Px相交,设ei=( (xi,yi),(xi+1,yi+1)
)。
若|xi-xi+1|<ep,则ei是与Y轴平行的直线段,不作处理,转(4);
若yi>yp+ep且yi+1>yp+ep,则Px与ei无交点(如图中边e5),转(4);
若xi>xp-ep且xi+1>xp-ep,则Px与ei无交点(如图中边e6),转(4);
若xi<xp-ep且xi+1<xp-ep,则Px与ei无交点(如图中边e8),转(4);
这样可以很快去掉那些明显与射线不交的边。
(3) 细判,求ei与Px的交点为(xp,y0)。
若|y0-yp|<=ep,则点P在多边形的边界上,结束;
若y0>yp,需进一步判断,取边ei中y值较大的一端点,
若|xi-xp|<ep,且|yi-yp|<=ep,则点在多边形的边界上,结束;
若|xi-xp|<ep,且yi>yp,则交点无效,转(4);
若|xi-xp|<ep,且yi<yp,则交点计数器加一,转(4);
若y0<yp,且xi-ep<=xp<xi+1-ep或xi+1-ep<=xp<xi,则交点计数器加一,这条规则称为左
闭右开(见图中边e9,e10和边e2,e3),转(4);
(4) 判断多边形上是否还有未检测的边,若有转(2)。否则判断交点计数器,如有
奇数个交点,则该点在多边形之内。否则在多边形之外。
判断平面上任一点(x,y)是否在三角形内?
可以参考GIS中判断点与任意多边形关系的算法:
1.转角法
假设某平面上有点P0和多边形P1 P2 P3 P4 P5,以点P0为中心,从多边形P1 P2 P3 P
4 P5任一顶点开始顺次走过多边形所有顶点,如最后回到起点时的转角之和为360度,则该
点在多边形内;如转角之和为0度,则该点在多边形外;若P0正好在多边形某条边上或与某
个顶点重合,则可认为在多边形外。如下图所示,具体的算法如下:
图五 转角法判断点与多边形的位置关系
将点P0分别与Pi相连,构成向量Vi =Pi-P0。假设角∠PiP0Pi+1=αi,αi可由下列公
式计算
αi=arccos(Vi·Vi+1/|Vi||Vi+1|)
αi角度的方向一般是通过计算两个向量的叉积的符号来判断。
2射线法
(1) 如图五所示,从点P(xp,yp)引一条与y轴平行的射线Px,该射线方程为x=xp,交
点个数计数器清零,设计算误差为ep。 (2)
粗判,测试多边形上的边ei是否与Px相交,设ei=( (xi,yi),(xi+1,yi+1)
)。
若|xi-xi+1|<ep,则ei是与Y轴平行的直线段,不作处理,转(4);
若yi>yp+ep且yi+1>yp+ep,则Px与ei无交点(如图中边e5),转(4);
若xi>xp-ep且xi+1>xp-ep,则Px与ei无交点(如图中边e6),转(4);
若xi<xp-ep且xi+1<xp-ep,则Px与ei无交点(如图中边e8),转(4);
这样可以很快去掉那些明显与射线不交的边。
(3) 细判,求ei与Px的交点为(xp,y0)。
若|y0-yp|<=ep,则点P在多边形的边界上,结束;
若y0>yp,需进一步判断,取边ei中y值较大的一端点,
若|xi-xp|<ep,且|yi-yp|<=ep,则点在多边形的边界上,结束;
若|xi-xp|<ep,且yi>yp,则交点无效,转(4);
若|xi-xp|<ep,且yi<yp,则交点计数器加一,转(4);
若y0<yp,且xi-ep<=xp<xi+1-ep或xi+1-ep<=xp<xi,则交点计数器加一,这条规则称为左
闭右开(见图中边e9,e10和边e2,e3),转(4);
(4) 判断多边形上是否还有未检测的边,若有转(2)。否则判断交点计数器,如有
奇数个交点,则该点在多边形之内。否则在多边形之外。
- 一平面三角形三顶点已知(x1,y1)、(x2,y2)、(x3,y3),如何
- 已知三角形三个顶点的坐标a(x1,y1),b(x2,y2),c(x3,y3)求三角形中心点即内接圆的圆心
- 编程题-----三个顶点的坐标(x1,y1),(x2,y2),(x3,y3)什么方法求三角形的面积最简单
- 根据三个点(x1,y1)、(x2,y2)、(x3,y3),确定方程y=aX^2 + bX + c,带入X求得Y
- 两条线段知道端点line1(x1,y1)(x2,y2)line2(x3,y3)(x4,y4),判断两条线段是否相交,交点坐标(x,y)
- 已知两点(x1, y1)(x2, y2),求直线ax+by+c=0
- 三个坐标(x1,y1),(x2,y2),(x3,y3)怎样求其面积
- 距离(x1,y1)到(x2,y2)的距离
- 验证“哥德巴赫猜想”/水仙花数/给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形
- 什么是安规电容及 XI X2 X3 Y1 Y2 Y3 Y4
- 两点距离 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 输入两点坐标(X1,Y1),(X2,Y2)(0<=x1,x2,y1,y2<=1000),计算并输出两点间的距离。
- 360oj 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。
- C/C++—— 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离
- Bestcoder Pro.ID 2001 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。
- 已知点 A(x1, y1) 和点 B(x2, y2), 求线段AB的垂直平分线.
- 两个向量(x1, y1), (x2, y2) 之间的平行四边形面积为啥是 (x1*y2-x2*y1)?
- 利用MATLAB求方程y1=3x1+x2+x3,y2=3x1-x2-x3在x1=-2,x2=3,x3=1时的值
- Hdu 4052 Adding New Machine(给你W*H大小的矩形,其中有N个地区不能使用(给出了这个地区的两个顶点的坐标即(x1,y1)和(x2,y2)),问能下多少个1*M的矩形)
- java读写Excel
- 牛人解释经济危机
- C# 调用带参数EXE文件及带启动参数EXE制作
- PHP+MSSQL TEXT字段被截断的解决方案
- Ext中FormPanel面板及Form控件横排测试(CSS)
- 一平面三角形三顶点已知(x1,y1)、(x2,y2)、(x3,y3),如何
- 男女吵架完美公约
- 利用bmp位图制作ICO
- buffer
- 爱--生活--名称解释
- What is Complex Event Processing?
- C# 对Ini文件读写
- 用 .NET Memory Profiler 跟踪.net 应用内存使用情况--基本应用篇
- 哎,3年多的C#白学了,都不会这种int[] to string[]的转换写法!