社区
数据结构与算法
帖子详情
怎么判断一个点是否在三角形外接圆内部
jilu0002
2004-10-24 02:07:54
?
...全文
1007
17
打赏
收藏
怎么判断一个点是否在三角形外接圆内部
?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mathe
2004-10-27
打赏
举报
回复
其中sgn(x)表示x的符号:
sgn(x)=(x<0)?-1:((x==0)?0:1);
mathe
2004-10-27
打赏
举报
回复
比如A(x1,y1),B(x2,y2),C(x3,y3)
那么 AB=(x2-x1,y2-y1), AC=(x3-x1,y3-y1)
AB.AC=(x2-x1)(x3-x1)+(y2-y1)(y3-y1)
同样计算DB.DC
而|AB|=sqrt( (x2-x1)^2 + (y2-y1)^2), |AB|^2 = (x2-x1)^2 + (y2-y1)^2.
然后我们需要判断A和D是分布在BC的同侧还是异侧
分别将A,D的坐标带入直线BC的方程 f(x,y)=(x-x2)*(y3-y2)-(y-y2)*(x3-x2),
如果f(A)和f(D)同号,A和D在BC的同侧,如果异号,A和D在BC的两侧:
i)如果A和D在BC的同侧,那么角BDC<角BAC时,D在三角形ABC外接圆内部。
也就是cos(角BDC)>cos(角BAC)时,D在三角形ABC外接圆内部。
也就是sgn(AB.AC)*(AB.AC)^2 *|DB|^2 *|DC|^2 < sgn(DB.DC) *(DB.DC)^2 *|AB|^2 *|AC|^2
时在外接圆内部。如果相等是正好在圆周上。
ii)如果A和D在BC的异侧,那么当角BDC+角BAC>180度时,D在外接圆内部。
也就是cos(角BDC)<-cos(角BAC)时,D在外接圆内部。
也就是-sgn(AB.AC)*(AB.AC)^2 *|DB|^2 *|DC|^2 > sgn(DB.DC) *(DB.DC)^2 *|AB|^2 *|AC|^2
时在外接圆内部。如果相等是正好在圆周上。
jilu0002
2004-10-26
打赏
举报
回复
mathe的方法很好,不过你能更详细的解释一下求两条边夹角的余弦值的方法吗?我这里先谢过了.
xiaoxiaofei
2004-10-26
打赏
举报
回复
纯数学计算,当然可以减小甚至避免误差,但是如果编程计算(特别是处理图像),误差简直是避免不了滴.如果不是处理图像:可以尽量减小误差;
如果处理数字图像:因为图像坐标只能为1(象素)的整数,大可不必一定要精确到0.000几去.
其实三点的均值不是中心吗?算出一点到中心的距离为半径r,计算待判断的点到中心的距离与r比较就行了.
HUNTON
2004-10-26
打赏
举报
回复
S((x1*x1+y1*y1, y1), (x2*x2+y2*y2, y2), (x3*x3+y3*y3, y3))
外心:x0 = -----------------------------------------------------------
2*S(A,B,C)
S((x1,x1*x1+y1*y1), (x2, x2*x2+y2*y2), (x3, x3*x3+y3*y3))
y0 = -----------------------------------------------------------
2*S(A,B,C)
剩下的应该不用说什么做了吧。
HUNTON
2004-10-26
打赏
举报
回复
告诉你一个公式吧。
定义:设平面上的三点A(x1,y1),B(x2,y2),C(x3,y3),定义
|x1 x2 x3|
S(A,B,C) = |y1 y2 y3|
|1 1 1 |
三角形之心求解公式如下:
已知三角形的三个顶点为A(x1,y1),B(x2,y2),C(x3,y3),则该三角形的外心为:
jilu0002
2004-10-25
打赏
举报
回复
在做除法或做三角函数运算时因为变量储存长度的局限,必然会导致精度丢失,当然会有误差.另外精度问题也会使角度的加减造成极小的偏差,那一些本来在圆内部的点被判在圆外,不是冤枉死了?
MadLee
2004-10-25
打赏
举报
回复
看不懂,顶一下
mathe
2004-10-25
打赏
举报
回复
边长就需要用余弦定理了。
huhuhu5
2004-10-25
打赏
举报
回复
呵呵 行 ~~!!!
huhuhu5
2004-10-25
打赏
举报
回复
mathe() 的方法不错啊
可是 如果从已知求角不好求 而从边长下手 有没有不错的方法呢?>
mathe
2004-10-25
打赏
举报
回复
用我给的方法可以完全采用定点计算,就不会有任意误差了。
其实角度可以用两条边夹角的余弦值来表示(而余弦可以用两边的内积除以边长表示)
也就是
看AB . AC /(|AB|*|AC|) (其中 .表示内积)
和DB . DC /(|DB|*|DC|),
实际上比较
|DB|*|DC| (AB.AC)
和
|AB|*|AC| (DB .DC)
就可以了,也就是可以避免除法。
而且除了保持两个式子的符号以外,比较时可以同时平方一下,可以避免开根号。余下的就只有加减乘,都不会引入误差。
然后我们只要根据上面两式的符号和绝对值大小就可以判断是在内接园内部还是外部了。
syy64
2004-10-25
打赏
举报
回复
1、用双精度数;
2、设置阈值,对于浮点数,肯定是在一定精度的条件下达到要求,没有绝对的真值。
syy64
2004-10-24
打赏
举报
回复
三点定圆,圆是唯一的,还有误差?
mathe
2004-10-24
打赏
举报
回复
不需要计算外接圆。
假设三角形ABC,如果点D在三角形内部显然在外接圆内部。
不然,那么必然在某一条边外侧,不妨设D和A分布在BC两侧,而且在角BAC内部。
计算角BAC+角BDC,如果小于180度;在外接圆外部,等于180度在外接圆上;大于180度,在外接圆内部。
jilu0002
2004-10-24
打赏
举报
回复
但是在计算圆心坐标时,因为误差会算出3个,无法取舍,半径也就有3个,怎么办?
syy64
2004-10-24
打赏
举报
回复
1、首先根据三角形的三个顶点求出圆心的坐标和圆的半径;
2、计算被测点与圆心的距离;
3、判断比较,距离小于半径在内部,否则在外部。
基于
三角形
外接圆
覆盖的改进APIT定位算法
在无线传感器网络(WSN)中,传感器节点定位在整个WSN体系中占有重要地位。APIT(Approximate Point-In-Triangulation Test近似
三角形
内点测试法)相对于其他定位算法,具有硬件要求较低,定位性能较好等优点。该算法在节点密集的网络中,可以得到比较合理的定位精度,性能也相对稳定。然而,在节点随机分布的网络中,其定位误差是不容忽视的,且定位覆盖率也相对较低。针对此问题,分析了APIT测试中的典型错误——
三角形
内外覆盖
判断
错误以及产生的原因,提出了一种基于
三角形
外接圆
覆盖的改进APIT算法——APICT(Approximate Point-In-Circumcircle Test)算法,并将此算法与APIT算法的仿真结果进行比较,证明了此算法的定位精度具有显著优势。
三角形
的内切圆和
外接圆
.doc
三角形
的内切圆和
外接圆
.doc
VC实现
判断
两直线关系和点与
三角形
及其
外接圆
关系
VC++实现
判断
点与任意
三角形
及其
外接圆
关系,以及
判断
任意两条直线关系
求多边形最小
外接圆
算法
1. 在点集中任取3点A,B,C。 2. 作一个包含A,B,C三点的最小圆,圆周可能通过这3点,也可能只通过 其中两点,但包含第3点.后一种情况圆周上的两点一定是位于圆的一条直 径的两端。 3. 在点集中找出距离第2步所建圆圆心最远的D点,若D点已在圆内或圆周上, 则该圆即为所求的圆,算法结束.则,执行第4步。 4. 在A,B,C,D中选3个点,使由它们生成的一个包含这4个点的圆为最小,这3 点成为新的A,B,C,返回执行第2步。若在第4步生成的圆的圆周只通过A,B,C,D 中的两点,则圆周上的两点取成新的A和B,从另两点中任取一点作为新的C。
三角形
的内切圆和
外接圆
.pdf
三角形
的内切圆和
外接圆
.pdf
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章