社区
数据结构与算法
帖子详情
求解一道平面几何题,不很难
vc_hunter
2005-09-15 05:18:59
我想知道有没有比较优秀的算法。
给出4个点,求第4个点是否在前3个点围成的3角形里(假设前3个点能围成三角形)
...全文
214
10
打赏
收藏
求解一道平面几何题,不很难
我想知道有没有比较优秀的算法。 给出4个点,求第4个点是否在前3个点围成的3角形里(假设前3个点能围成三角形)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vc_hunter
2005-09-17
打赏
举报
回复
我乱写的,不知道对不对
vc_hunter
2005-09-17
打赏
举报
回复
double GetSlope(int x1,int y1,int x2,int y2)//得到2点构成的边的斜率
{
double x=abs(x1-x2);
double y=abs(y1-y2);
return y/x;
}
void main()
{
POINT a,b,c,d;//4个点的坐标
scanf("%d,%d",&a.x,&a.y);//输入各点坐标
scanf("%d,%d",&b.x,&b.y);
scanf("%d,%d",&c.x,&c.y);
scanf("%d,%d",&d.x,&d.y);
double ab=GetSlope(a.x,a.y,b.x,b.y);//计算各边斜率
double bc=GetSlope(b.x,b.y,c.x,c.y);
double ca=GetSlope(c.x,c.y,a.x,a.y);
if(ab==bc||bc==ac||ab==ac)//判断3边是否能构成3角形
{
printf("此3点不能构成三角形");
return;
}
double ad=GetSlope(a.x,a.y,d.x,d.y);//计算某点过第4点的斜率
double bd=GetSlope(b.x,b.y,d.x,d.y);
bool ret=1;
if(ab>ca) //通过斜率判断点是否在三角形内
if(ad<=ca||ad>=ab)
ret=0;
else
if(ad>=ca||ad<=ab)
ret=0;
if(bc>ab)
if(bd>=bc)
ret=0;
else
if(bd<=bc)
ret=0;
if(ret)
printf("第4点x:%d,y:%d在三角形a,b,c内",d.x,d.y);
else
printf("第4点x:%d,y:%d不在三角形a,b,c内",d.x,d.y);
}
xindongdong
2005-09-17
打赏
举报
回复
设有p1,p2,p3,p4点,如果向量p4p1和p4p2的夹角a, p4p2和p4p3的夹角b, p4p3和p4p1的夹角c之和为360度,那么p4点在三角形p1p2p3内。
syy64
2005-09-16
打赏
举报
回复
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=198803
Kvci
2005-09-16
打赏
举报
回复
再在比较面积大小的时候对于p1、P2、P3形成的三角形
以及P4与其中任意两点所形成的三角形是有一条公共边的
也就是说可以只要计算两个不同点到公共边的高的大小即可。
因为底相同,高越大的面积越大。
HUNTON
2005-09-16
打赏
举报
回复
问题:如何判断一点是否在一个凸多边形的内部
定义:已知三点A(x1,y1)、B(x2,y2)、C(x3,y3)
|x1 x2 x3|
则S(A,B,C) =abs( |y1 y2 y3| )= (x1-x3)*(y2-y3) - (y1-y3)(x2-x3)
|1 1 1 |
解决:
设要判断的点为P,凸多边形为A1A2A3、、、An(顺时针或逆时针都可以),
首先计算S = S(A1,A2,A3) + S(A1,A3,A4) + 、、、+S(A1,An-1,An)
然后计算SS = S(P,A1,A2) + S(P,A2,A3) + 、、、+ S(P,An,A1)
最后判断S与SS的关系,
若S=SS,则P在该凸多边形的边上或内部
P在第i边上的附加条件是S(P,Ai,Ai+1)=0
若S<SS,则P在该凸多边形的外部
S>SS的情况是不存在的。
三角形也是凸多边形,所以用上面的方法就可以了
Kvci
2005-09-15
打赏
举报
回复
哈哈
殊途同归
和楼上道理一样
Kvci
2005-09-15
打赏
举报
回复
还一个笨办法
就是如果P4在三角形内
那p4与前三点中任意两点形成的三角形的面积都不会大于p1、p2、p3所形成的三角形的面积
如果有某两点与P4形成的三角形面积大于p1、p2、p3所形成的三角形的面积,那P4就肯定在p1、p2、p3所形成的三角形之外。
那也就是求四个三角形的面积
以及他们之间的大小关系
已知三点坐标求三角形面积的公式不难吧
超级大笨狼
2005-09-15
打赏
举报
回复
偶认为:只要4个点是一个凸多边形,就能证明那点在外边。
证明是凸多边形,要证明选3个点组成的三角形面积相加相等。
ABCD=ABC+BCD=ACD+BCD
此题关键是计算三角型面积。
面积公式我忘记了。好像是:(|(x1-x2)(y1-y2)|+|(x1-x3)(y1-y3)|+|(x2-x3)(y2-y3)|)/2
谁能想起来帮我写在这里。
寻开心
2005-09-15
打赏
举报
回复
只要解决一个点在直线哪一侧的功能就可以了
假定四个点是 P1 P2 P3 P4
检测P4是否在P1P2, P2P3, P3P1 这三条有方向的直线的同一侧(左或者右侧)就可以了
如果在同一侧,必然在三角形内,否则在外
点在直线哪一侧很好判断, 以P1P2直线为例子,
判断:
(p2.x-p1.x)*(p4.y-p1.y) - (p2.y-p1.y)*(p4.x-p1.x)
这个表达式的符号就可以了
宁夏银川一中2016届高三数学第四次模拟考试试
题
理(20210614105631).doc
宁夏银川一中2016届高三数学第四次模拟考试试
题
理(20210614105631).doc
湖北省黄冈市麻城市麻城二中2020-2021学年高一下学期期中考试数学试
题
Word版含答案.docx
湖北省黄冈市麻城市麻城二中2020-2021学年高一下学期期中考试数学试
题
Word版含答案.docx
初-三-数-学-
难
-
题
.doc
初-三-数-学-
难
-
题
.doc
高一数学下学期3月月考试
题
(扫描版,答案不全) 试
题
.doc
高一数学下学期3月月考试
题
(扫描版,答案不全) 试
题
.doc
湖南省长沙市高三数学第五次月考试
题
理(扫描版)湘教版 试
题
.doc
湖南省长沙市高三数学第五次月考试
题
理(扫描版)湘教版 试
题
.doc
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章