怎么判断1个点在一个三角形内已知三角形3个点(x1,y1),(x2,y2),(x3,y3)和任意一点(x,y),怎么判断(x,y)在这个三角形内?
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/31 06:03:52
![怎么判断1个点在一个三角形内已知三角形3个点(x1,y1),(x2,y2),(x3,y3)和任意一点(x,y),怎么判断(x,y)在这个三角形内?](/uploads/image/z/13271172-60-2.jpg?t=%E6%80%8E%E4%B9%88%E5%88%A4%E6%96%AD1%E4%B8%AA%E7%82%B9%E5%9C%A8%E4%B8%80%E4%B8%AA%E4%B8%89%E8%A7%92%E5%BD%A2%E5%86%85%E5%B7%B2%E7%9F%A5%E4%B8%89%E8%A7%92%E5%BD%A23%E4%B8%AA%E7%82%B9%28x1%2Cy1%29%2C%28x2%2Cy2%29%2C%28x3%2Cy3%29%E5%92%8C%E4%BB%BB%E6%84%8F%E4%B8%80%E7%82%B9%28x%2Cy%29%2C%E6%80%8E%E4%B9%88%E5%88%A4%E6%96%AD%28x%2Cy%29%E5%9C%A8%E8%BF%99%E4%B8%AA%E4%B8%89%E8%A7%92%E5%BD%A2%E5%86%85%3F)
怎么判断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两个负数的情况
收起