如何根据三个点的坐标画出一个圆来?

apprentice111 2004-07-05 09:15:26
用鼠标点三个点,如何画出对应的圆?
...全文
902 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
kathywp 2004-07-06
  • 打赏
  • 举报
回复
///////////////////////////////////////////
//求三角形外接圆圆心坐标
///////////////////////////////////////////
void circle_center(Point *center,Point pt[3],double *radiu)
{
double x1,x2,x3,y1,y2,y3;
double x = 0;
double y = 0;

x1 = pt[0].pt.x;
x2 = pt[1].pt.x;
x3 = pt[2].pt.x;
y1 = pt[0].pt.y;
y2 = pt[1].pt.y;
y3 = pt[2].pt.y;

x=((y2-y1)*(y3*y3-y1*y1+x3*x3-x1*x1)-(y3-y1)*(y2*y2-y1*y1+x2*x2-x1*x1))/(2*(x3-x1)*(y2-y1)-2*((x2-x1)*(y3-y1)));
y=((x2-x1)*(x3*x3-x1*x1+y3*y3-y1*y1)-(x3-x1)*(x2*x2-x1*x1+y2*y2-y1*y1))/(2*(y3-y1)*(x2-x1)-2*((y2-y1)*(x3-x1)));

center->pt.x = x ;
center->pt.y = y ;
*radiu = (pt[0].pt.x - x)*(pt[0].pt.x - x) + (pt[0].pt.y - y)*(pt[0].pt.y - y);

}
gorge_an 2004-07-06
  • 打赏
  • 举报
回复
Subject 1.04: How do I generate a circle through three points?

Let the three given points be a, b, c. Use _0 and _1 to represent
x and y coordinates. The coordinates of the center p=(p_0,p_1) of
the circle determined by a, b, and c are:

A = b_0 - a_0;
B = b_1 - a_1;
C = c_0 - a_0;
D = c_1 - a_1;

E = A*(a_0 + b_0) + B*(a_1 + b_1);
F = C*(a_0 + c_0) + D*(a_1 + c_1);

G = 2.0*(A*(c_1 - b_1)-B*(c_0 - b_0));

p_0 = (D*E - B*F) / G;
p_1 = (A*F - C*E) / G;

If G is zero then the three points are collinear and no finite-radius
circle through them exists. Otherwise, the radius of the circle is:

r^2 = (a_0 - p_0)^2 + (a_1 - p_1)^2

Reference:

[O' Rourke (C)] p. 201. Simplified by Jim Ward.
apprentice111 2004-07-06
  • 打赏
  • 举报
回复
我要找的是根据三点得到外心的公式。也就是外切园的圆心和三个点的坐标(x1,y1)(x2,y2)(x3,y3)的关系。

在windows下没有circle(x,y,z);这个函数。

请教高手帮忙。分不够可以在加。
sanyou98 2004-07-06
  • 打赏
  • 举报
回复
up
xjp6688 2004-07-06
  • 打赏
  • 举报
回复
用系统自带的画圆函数不就可以了吗!!
楼主多看看书!
circle(x,y,z);
wqs6 2004-07-06
  • 打赏
  • 举报
回复
其实原理大家都知道,只是公式的推导

设定(x1,y1),(x2,y2),(x3,y3)为不共线,不公点的三点

然后推导出圆心坐标,由此得出半径和圆的方程
DarthVader 2004-07-06
  • 打赏
  • 举报
回复
三角形的三条内角平分线交于一点,这点称为三角形的内心,根本就不是外切圆的圆心.
圆心是三角形的外心。三角形有5心,就是没有所谓的“中心”。还是去先小学读毕业吧。

楼上众位眼高手低的,解解二元二次方程你们就清楚了,还是挺麻烦的。说说谁不会阿。
--------------------------------------
呵呵 应该是外接圆和内切圆吧
妖怪 2004-07-05
  • 打赏
  • 举报
回复
根据这三个点,获得鼠标点击的位置坐标
然后对其进行计算
获得圆的圆心坐标和半径
Jimmy_Xia 2004-07-05
  • 打赏
  • 举报
回复
楼主,你没说清楚是那一种圆。是经过三角形三个顶点的圆呢,还是与三角形三条边相切的圆。
apprentice111 2004-07-05
  • 打赏
  • 举报
回复
三角形的三条内角平分线交于一点,这点称为三角形的内心,根本就不是外切圆的圆心.
圆心是三角形的外心。三角形有5心,就是没有所谓的“中心”。还是去先小学读毕业吧。

楼上众位眼高手低的,解解二元二次方程你们就清楚了,还是挺麻烦的。说说谁不会阿。
yintongshun 2004-07-05
  • 打赏
  • 举报
回复
三点确定圆心和半径,很容易的吧
lifengnm 2004-07-05
  • 打赏
  • 举报
回复
求出三点所成的三角形的圆心,然后在这点画圆。
Kudeet 2004-07-05
  • 打赏
  • 举报
回复
先计算出圆心,半径(怎么算方法还是查查中学数学吧)
快乐鹦鹉 2004-07-05
  • 打赏
  • 举报
回复
求任意两个角平分线的交点即为圆心。
lanzhengpeng2 2004-07-05
  • 打赏
  • 举报
回复
球三个点的中心,计算半径,这个还画不出来,建议先把小学读毕业
syy64 2004-07-05
  • 打赏
  • 举报
回复
三点定圆,定理。
酒红绿叶 2004-07-05
  • 打赏
  • 举报
回复
我说一种方法看看是否
可以。

判断两点之间长度最长的两个点,连接求中点,然后与第三个点连线,圆心应该在这条线上,
遍历,求出与最长线段两端点距离等于,与第三点距离的点就是圆心,
与第三点连线长度就是半径!

没试,,不知道行不行!

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧