CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  VCL组件使用和开发

有四个点。要求判断前三个点是否能构成一个三角形,如果行,那第四个点是否在这个三角形内。

楼主lucho(lucho)2005-10-18 23:11:29 在 C++ Builder / VCL组件使用和开发 提问

要求用户输入4个坐标,判断前3个坐标是否可以作为三角形的3个顶点;如果能,同时判断第四个坐标是否在这个三角形内? 问题点数:20、回复次数:20Top

1 楼Lewolf(无名)回复于 2005-10-18 23:22:09 得分 1

一个典型的算法问题了,解决的方法从数学角度就是转换为点和线的关系的问题,这是基本一个算法,求点在线的那一侧,在三角形内是一个点和三条线的关系了,多边型就是一个点和N-2个三角形的关系。当然还有计算机算法。Top

2 楼shadowstar(CodeFast for Delphi & C++Builder)回复于 2005-10-18 23:23:12 得分 1

数学问题Top

3 楼houbing_0123(冰河々C++ Builder々)回复于 2005-10-19 10:10:59 得分 2

有一个比较简单的算法(但可能不是很好),三点是不是成三角形和简单,判断三点是否一线就可以了啊,然后再判断第四个点和三个点连线形成的夹角是不是360度,如果不再三角形内好象夹角和没有360,具体比方为三角形ABC和第四个点D,判断∠ADB+∠ADC+∠BDC=360?Top

4 楼lucho(lucho)回复于 2005-10-20 10:05:17 得分 0

如何实现呢?Top

5 楼Maconel(Maconel)回复于 2005-10-20 11:18:20 得分 4

高中数学老师教够我们一个定理,叫什么名字忘了。  
  具体是:  
  在xy坐标系中,假设一个椭圆方程是ax^2   +   by^2   +   cx   +   dy   +   e   =   0(记不清是不是这样了,先假定是吧)。  
  那么,  
  如果一个椭圆上的点(x1,   y1)代入方程左半部,肯定=0。  
  如果一个椭圆内部的点(x2,   y2)代入方程左半部,ax2^2   +   by2^2   +   cx2   +   dy2   +   e   <   0,那么椭圆内部所有的点代入方程都会<0,同时椭圆外部的点都会>0。  
  这个定理所所有方程,包括抛物线,直线,以及任何曲线。  
  对于直线来说,xy坐标系被直线分成2部分,如果一侧的一个点<0,那么这边所有点都<0。  
   
  根据该定理,只要得到三角形内部一个点(这很容易,3条边中垂线交点即可),把它代入三条线的方程,看是>0还是<0,然后把第四个点也代入三个方程,看看是不是一样即可。  
   
  至于3点能不能构成一个三角形就更简单了,只要不是3点一线,就能构成三角形。  
  Top

6 楼Maconel(Maconel)回复于 2005-10-20 12:18:38 得分 0

抱歉,上面有个错误,就是三条边的中垂不一定在三角形内。  
  应该是三角形某顶点和对边中点的连线,这样的三条线中任意2条的交点应该在三角形内。  
  假定三角形3点是(x1,y1)   (x2,y2)   (x3,y3),那么(x1,y1)((x2-x3)/2),(y2-y3)/2)这2点可以得到一条直线。另外同理还可以得到2条。取其中2条线的方程组成一个2元一次方程组,解方程组即可得到交点,方程组应该很简单,先解好,把结果写成一个函数即可。Top

7 楼flowercity(菜农)回复于 2005-10-20 14:06:01 得分 2

斜率法来判断  
  一、判断其中三点时候共线  
  需要判断两次  
  二、判断最后一个点是否在三角形内部  
  判断两次,以一边为参考边,判断两点和边的两端点的斜率大小  
  就知道了  
  判断两次,求四次斜率Top

8 楼houbing_0123(冰河々C++ Builder々)回复于 2005-10-20 16:38:17 得分 1

算法都给了啊,实现当然要自己动手了啊,Top

9 楼leonatcs(LeonKennedy)(时常逛一逛csdn,有益身心健康。)回复于 2005-10-20 18:23:57 得分 1

判断是否能组成三角形就是判断是否共线,  
  计算直线AB和BC的斜率,看看是不是足够相近(long或double性的数据类型不能判断是否相等!)  
  就知道共不共线。  
   
  至于在不在三角形内,用API函数PtInRgn就可以了。(先用CreatePolygonRgn构造三角形)Top

10 楼gxd305()回复于 2005-10-20 18:38:00 得分 1

还是   leonatcs(LeonKennedy)的方法简单Top

11 楼xibingwuqing(惜冰无情)回复于 2005-10-20 18:58:15 得分 1

学习Top

12 楼GO3865258(GO希望我还行)回复于 2005-10-20 22:27:48 得分 1

没明白Top

13 楼Maconel(Maconel)回复于 2005-10-21 00:49:57 得分 1

leonatcs(LeonKennedy)(每天逛一逛csdn,有益身心健康。)   的方法写起来是简单,但是总不如自己写的好。Top

14 楼lucho(lucho)回复于 2005-10-24 23:24:19 得分 0

有谁有代码,不胜感激Top

15 楼XBox360(菜)(鸟)回复于 2005-10-25 10:34:02 得分 1

完全的数学问题,你先用数学的表达式写出来Top

16 楼lucho(lucho)回复于 2005-10-25 22:11:15 得分 0

谁有代码啊?郁闷...   ...Top

17 楼free1949(大白菜,小胡子)回复于 2005-10-25 22:18:40 得分 1

搂主也未免太。。。。。。Top

18 楼leonatcs(LeonKennedy)(时常逛一逛csdn,有益身心健康。)回复于 2005-10-25 23:36:36 得分 1

呵呵,我也说呢,有够懒惰。Top

19 楼sxdoujg(无情过客)回复于 2005-10-26 11:28:29 得分 1

学习!Top

20 楼lucho(lucho)回复于 2005-11-30 18:56:09 得分 0

一个公司的面试题!!!Top

相关问题

  • 哪位兄弟记得判断三条边是否可以构成一个三角形的公式?
  • ~求判断点是否在三角形内的最佳算法~
  • 如何判断一个点在一个三角形中?
  • 请问如何快速判断一个点在三角形内,外,边上?
  • 如何判断一个点是否在给定的三角形内部?
  • 如何判断一个点是否在一个任意三角形内部(最优算法)?
  • 求教一简单几何问题,请问怎么样判断一个点是否在一个三角形内
  • 谁能给我向下和向上表示降序和升序的 两个三角形 ,要求是字符的
  • 三角形问题
  • 扬辉三角形

关键词

  • 算法
  • 坐标
  • 数学
  • 三角形
  • 判断
  • 方程
  • 是否
  • 椭圆
  • 直线
  • 关系

得分解答快速导航

  • 帖主:lucho
  • Lewolf
  • shadowstar
  • houbing_0123
  • Maconel
  • flowercity
  • houbing_0123
  • leonatcs
  • gxd305
  • xibingwuqing
  • GO3865258
  • Maconel
  • XBox360
  • free1949
  • leonatcs
  • sxdoujg

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo