حتی اگر نقاط شما دقیق هم نباشه به راحتی میشه دایره مورد نظر را تشخیص داد. شما بین هر 2 نقطه یک خط دارید عمود منصف این خط را بدست بیارید وقتی این خطوط عمود منصف را از هم تقاطع بدید نقطه تلاقی میشه مرکز دایره شما.سپس مرکز را دارید پس شعاع را هم دارید حالا دایره رو رسم کنید.
کدی را براتوننوشتم که تقریباً محاسبش بدین صورت میشه .
Point linesInterSectionPointA(Point p1,Point p2,float deg1,float deg2)
{
float m1 = tan( deg1);
float m2 = tan( deg2);
float x,y;
x = (m1* p1.x - m2 * p2.x + (p2.y - p1.y)) / (m1-m2);
if(m1!= 0 && (abs( (int)(deg1*100 - deg2*100)) % 157) == 0)
y = m2 * (x - p2.x) + p2.y;
else y = m1 * (x - p1.x) + p1.y;
return Point(int(x),int(y));
}
float getLineAngle(Point p1, Point p2)
{
return float( atan2( (float)(p2.y - p1.y) , (float)(p2.x - p1.x)) );
}
Point getLineCenter(Point p1,Point p2){
return Point(int((p1.x + p2.x)/2),int((p1.y + p2.y)/2));
}
Point getCircleCenter(Point p1,Point p2,Point p3)
{
float angle1 = getLineAngle(p1,p2);
Point line1_center = getLineCenter(p1,p2);
float angle2 = getLineAngle(p2,p3);
Point line2_center = getLineCenter(p2,p3);
return linesInterSectionPointA(line1_center,line2_center,angle1 + PI/2,angle2 + PI/2);
}