社区
数据结构与算法
帖子详情
难,C++高手请进!!!
hewittlee
2005-10-30 03:22:43
要求用户输入4个坐标,判断前3个坐标是否可以作为三角形的3个顶点;如果能,同时判断第四个坐标是否在这个三角形内 (不包括在边上和顶点上) 。
我想问怎样判断第四个坐标是否在这个三角形内?
...全文
713
19
打赏
收藏
难,C++高手请进!!!
要求用户输入4个坐标,判断前3个坐标是否可以作为三角形的3个顶点;如果能,同时判断第四个坐标是否在这个三角形内 (不包括在边上和顶点上) 。 我想问怎样判断第四个坐标是否在这个三角形内?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
明天去抢劫
2006-03-03
打赏
举报
回复
两边之和大于第三边
Jinhao
2006-03-03
打赏
举报
回复
template<int X, int Y> struct point
{
static const int x = X;
static const int y = Y;
};
template<typename _Point1, typename _Point2, typename _Point3>
struct is_in_a_line
{
static const int value = ((_Point3::y - _Point1::y)*(_Point2::x - _Point1::x)
==
(_Point3::x - _Point1::x)*(_Point2::y - _Point1::y));
};
template<typename _Point1, typename _Point2, typename _Point3>
class fun
{
static const int mid = (_Point1::x - _Point3::x)*(_Point2::y - _Point3::y)
-
(_Point1::y - _Point3::y)*(_Point2::x - _Point3::x);
public:
static const int value = mid < 0 ? -mid: mid;
};
int main()
{
typedef point<10, 10> p1;
typedef point<20, 25> p2;
typedef point<30, 30> p3;
typedef point<20, 21> p4;
if(is_in_a_line<p1, p2, p3>::value)
cout<<"前三点在一条直线上"<<endl;
else
if(fun<p1, p2, p3>::value
==
fun<p1, p2, p4>::value + fun<p1, p3, p4>::value + fun<p2, p3, p4>::value
)
cout<<"P4在三角形内"<<endl;
else
cout<<"P4不在三角形内"<<endl;
}
xdspower
2005-11-02
打赏
举报
回复
如果是平面问题,应该是不太难的,happy__888([顾问团]寻开心)的方法很适用。
如果是三维空间问题,判断是否是三角形还是不太难,因为如果不能构成三角形,三个点在每个维面的正投影都在一条直线上(或是一个点),问题2就像NowCan(城市浪人) 说的要定义什么是“一个点在一个三角形内”才行
NowCan
2005-11-01
打赏
举报
回复
三维空间的话需要定义什么是“一个点在一个三角形内”才行。
codearts
2005-10-31
打赏
举报
回复
前段时间我找到的资料:《计算几何常用算法概览》
http://www.frontfree.net/view/article_748.html
寻开心
2005-10-31
打赏
举报
回复
计算三角形的面积公式
三角形的三个顶点 x1,y1, x2,y2, x3,y3
那么面积就是:
s = fabs (0.5 * ( ( x1*y2 -x2*y1 ) + (x2*y3-x3*y2) + (x3*y1-x1*y3) ) )
关于第一个问题: 如果面积是0,就不能构成三角形,否则就可以。
关于第二个问题: 如果前三个点构成的三角形面积,等于这个三角形的三个边和第四个点构成的三个三角形面积的和,那么第四点就在内,否则就在外。
Poptang
2005-10-31
打赏
举报
回复
abs((a.x-c.x)*(b.y-c.y)-(a.y-c.y)*(b.x-c.x))*0.5
这个不太明白。。
ncshow
2005-10-31
打赏
举报
回复
to:llf_hust()
果然是好方法
thomasnew
2005-10-31
打赏
举报
回复
如果是三维空间的坐标呢
llf_hust
2005-10-31
打赏
举报
回复
其实就是数学知识呀
skiny
2005-10-30
打赏
举报
回复
to:llf_hust()
能否劳驾解释一下;
longlongago8
2005-10-30
打赏
举报
回复
就是一个数学问题
gxllzp
2005-10-30
打赏
举报
回复
解析几何问题,
这不是最好的算法,
等待……
wzjall
2005-10-30
打赏
举报
回复
楼上真不错,经常能看到你的代码.
llf_hust
2005-10-30
打赏
举报
回复
#include<iostream>
#include<cmath>
using namespace std;
class iter
{
public:
int x;
int y;
};
double fun(iter&a,iter&b,iter&c)
{
return abs((a.x-c.x)*(b.y-c.y)-(a.y-c.y)*(b.x-c.x))*0.5;
}
int main()
{
iter s1,s2,s3,s4;
cin>>s1.x>>s1.y;
cin>>s2.x>>s2.y;
cin>>s3.x>>s3.y;
cin>>s4.x>>s4.y;
if((s3.y-s1.y)*(s2.x-s1.x)==(s3.x-s1.x)*(s2.y-s1.y))
{
cout<<"s1,s2,s3在一条直线上"<<endl;
return 0;
}
if(fun(s1,s2,s3)==fun(s1,s2,s4)+fun(s1,s3,s4)+fun(s2,s3,s4))
{
cout<<"s4位于s1,s2s,s3组成的三角行内"<<endl;
}
else cout<<"s4不位于s1,s2s,s3组成的三角行内"<<endl;
return 0;
}
0黄瓜0
2005-10-30
打赏
举报
回复
点在三角形内,则有该点与另三点中的任两点组成的三角形(共三个)的面积和与阮三角形相等,否则必远三角形大。
这个比较好编程
==========================================================
第一个原写为阮,第二个原写作远,哪个读不猜三秒?
hunter0912
2005-10-30
打赏
举报
回复
点在三角形内,则有该点与另三点中的任两点组成的三角形(共三个)的面积和与阮三角形相等,否则必远三角形大。
这个比较好编程
hkbpro
2005-10-30
打赏
举报
回复
对于任意三角形ABC,分别判断点P是不是跟点C在边AB的同侧,P是不是跟点B在边AC的同侧点,P是不是跟点A在边BC的同侧,都是,那就是在三角形内
chunhai12
2005-10-30
打赏
举报
回复
汗,纯算法问题,和C++有啥关系
判断顶点是否在某个三角形内就连3个顶点,算夹角和
高质量
C++
_C编程指南
想看看高质量
C++
_C编程指南的进,软件质量是被大多数程序员挂在嘴上而不是放在心上的东西! 除了完全外行和真正的编程
高手
外,初读本书,你最先的感受将是惊慌:“哇!我以前捏造的
C++
/C程序怎么会有那么多的毛病?...
成为编程
高手
的12条军规
不要让这种事发生在你身上,在学校你有充足的时间和条件读书,多读书,如果有条件多读原版书,你要知道,当一个翻译者翻译一本书时,他会不知不觉把他的理念写进书中,那本书就会变得像鸡肋! 16.我还是强调认真...
从c语言入门到
c++
使用
高手
对于想入行
C++
开发的朋友,我通过这个套餐课程为您铺设一条从C语言入门到
C++
开发
高手
的语言学习和成长之路,让您在1年内成长到别人要花费5年甚至更久才能成长到的程度,您只需要按照这几门课程的从简到繁的顺序努力...
SSH2项目(WeExam)源码
中国编程俱乐部
高手
QQ群:112630353,初学者进则踢!!! 山东编程俱乐部QQ群:81997095 Java、C、
C++
、PHP、 asp.net、Python、C#、JavScript、Ajax、jsp、AS、flex 资料分享、共同学习、项目合作、娱乐交流。快乐编程...
JAVA上百实例源码以及开源项目
笔者当初为了学习JAVA,收集了很多经典源码,源码
难
易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章