怎么判断1个点在一个三角形内已知三角形3个点(x1,y1),(x2,y2),(x3,y3)和任意一点(x,y),怎么判断(x,y)在这个三角形内?
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 23:37:40
怎么判断1个点在一个三角形内已知三角形3个点(x1,y1),(x2,y2),(x3,y3)和任意一点(x,y),怎么判断(x,y)在这个三角形内?
怎么判断1个点在一个三角形内
已知三角形3个点(x1,y1),(x2,y2),(x3,y3)和任意一点(x,y),怎么判断(x,y)在这个三角形内?
怎么判断1个点在一个三角形内已知三角形3个点(x1,y1),(x2,y2),(x3,y3)和任意一点(x,y),怎么判断(x,y)在这个三角形内?
方程组
α + β + γ = 1
α*x1 + β*x2 + γ*x3 = x
α*y1 + β*y2 + γ*y3 = y
有唯一解.
(这个方程组已经很容易解了,Gauss消去法或Cramer法则都可以,如果用Cramer法则效率就和楼上的做法一样)
判别方法很简单:(x,y)在三角形内当且仅当α、β、γ都是正数.
注:记P(x,y),A(x1,y1),B(x2,y2),C(x3,y3),则
α=S_{PBC}/S_{ABC}
β=S_{PCA}/S_{ABC}
γ=S_{PAB}/S_{ABC}
这里的面积都是有定向的.
设三角形三个点
A(x1,x2),B(x1,x2),C(x1,x2) ,任意一点为(x,y)
三条边方程
BC:fa(x,y)=0
AC:fb(x,y)=0
AB:fc(x,y)=0
以BC为例,在三角形内的点必须与点A在BC的同侧
所以对于点D(x,y)
在三角形内首先要满足fa(x,y)*fa(x1,x2)>0
全部展开
设三角形三个点
A(x1,x2),B(x1,x2),C(x1,x2) ,任意一点为(x,y)
三条边方程
BC:fa(x,y)=0
AC:fb(x,y)=0
AB:fc(x,y)=0
以BC为例,在三角形内的点必须与点A在BC的同侧
所以对于点D(x,y)
在三角形内首先要满足fa(x,y)*fa(x1,x2)>0
其他边也同理
所以只要比较
fa(x,y)*fa(x1,x2)
fb(x,y)*fb(x1,x2)
fc(x,y)*fc(x1,x2)
这三个数的正负性
1三个数都是正数:D在三角形内
2至少有一个负数:D在三角形外
3有且只有一个0,另两个为正数:在三角形边上
4有且只有一个0,一个正数一个负数:在三角形边的延长线上,也算在三角形外,因为满足2
5有二个0:在三角形的顶点上
6不可能出现3个0,或3个负数,或一个0两个负数的情况
收起