回复:小于半圆如何找正圆心

huangdongbing

  • 帖子

    534
  • 精华

    7
  • 被关注

    1

论坛等级:侠士

注册时间:2004-11-04

普通 普通 如何晋级?

发布于 2007-07-19 20:00:09

0楼

找到方法了
设三点为P1(X1,Y1) P2(X2,Y2) P3(X3,Y3) 圆心为P0(X,Y)
利用三角形的外接圆方程:
(X-X1)^2+(Y-Y1)^2=(X-X2)^2+(Y-Y2)^2=(X-X3)^2+(Y-Y3)^2
推导出如下公式:
a=x1(y2-y3)+x2(y3-y1)+x3(y1-y2)
b=(x1^2+y1^2-x2^2-y2^2)/2
c=(x1^2+y1^2-x3^2-y3^2)/2
d=b(y1-y3)-c(y1-y2)
e=c(x1-x2)-b(x1-x3)
半径:r=SQRT((d/a-x1)^2+(e/a-y1)^2
圆心坐标:(d/a,e/a)

编制一个简单程序:
R11=$AA_IM[X]
R12=$AA_IM[Y]
M0
R21=$AA_IM[X]
R22=$AA_IM[Y]
M0
R31=$AA_IM[X]
R32=$AA_IM[Y]
R1=R11*(R22-R32)+R21*(R32-R12)+R31*(R12-R22)
IF R1==0 GOTO AAA
R2=(POT(R11)+POT(R12)-POT(R21)-POT(R22))/2
R3=(POT(R11)+POT(R12)-POT(R31)-POT(R32))/2
R4=R1*(R12-R32)-R3*(R12-R22)
R5=R3*(R11-R21)-R2*(R11-R31)
R97=SQRT(POT(R4/R1-R11)+POT(R5/R1-R12))
R98=R4/R1
R99=R5/R1
AAA:M2

R1为零时,说明三点一线,所以跳到程序结尾
R97为半径,R98为X坐标,R99为Y坐标

这个程序只是草草编的,没有完善
本人已经试过,很好用,而且很准的!!!!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SINUMERIK

共有25500条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。