已知3点(x1,y1)(x2,y2)(x3,y3),求圆的c程序
哪位大侠赐教啊 条件也太少了吧,三点在圆上还是在什么地方?如果是在圆上直接取三点坐标做三角形然后求这个三角形的外接圆. 已知3点就可以算圆心和半径了,普通的画面程序就可以用了...不会算圆心的自己补初高中数学去 error_dan 发表于 2013-1-10 09:47 static/image/common/back.gif
条件也太少了吧,三点在圆上还是在什么地方?如果是在圆上直接取三点坐标做三角形然后求这个三角形的外接圆. ...
三点的条件还少啊?圆上的三点当然指的是在圆周了.
设圆心为(x,y),那么(x-x1)*(x-x1)+(y-y1)*(y-y1) = (x-x2)*(x-x2)+(y-y2)*(y-y2)
(x-x1)*(x-x1)+(y-y1)*(y-y1) = (x-x3)*(x-x3)+(y-y3)*(y-y3)
根据这两个方程求出圆心,然后再求R
R*R= (x-x1)*(x-x1)+(y-y1)*(y-y1) 简化后的方程组都是一元一次了,要么无解,要么唯一解 记得是初中几何学的,没有重合点,且不在一条直线上,有解 不在同一直线上的三点确定一个圆,
/*八分点画圆函数(x y)指定线起点所在行的位置;列的位置*/
void LCD_PlotC(int x,int y,int xc,int yc,uint Color)
{
LCD_Point(xc+x,yc+y,Color);LCD_Point(xc+x,yc-y,Color);
LCD_Point(xc-x,yc+y,Color);LCD_Point(xc-x,yc-y,Color);
LCD_Point(xc+y,yc+x,Color);LCD_Point(xc+y,yc-x,Color);
LCD_Point(xc-y,yc+x,Color);LCD_Point(xc-y,yc-x,Color);
}
/*画圆(xc yc)圆心的行坐标’列坐标‘ r 半径*/
void GUI_Round(uint X,uint Y,uint r,uint Color)
{
int x,y,d;
y = r;
d = 3 - (r + r);
x = 0;
while(x<=y)
{
LCD_PlotC(x,y,X,Y,Color);
if(d < 0)
d += (x + x + x + x) + 6;
else
{
d+=((x - y) + (x - y) + (x - y) + (x - y)) + 10;
y = y - 1;
}
x = x + 1;
}
}
能帮上忙不? 谢谢上面各位,
页:
[1]