تشخیص دایره ای(محیطی) که از 3 نقطه تشکیل شده - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تشخیص دایره ای(محیطی) که از 3 نقطه تشکیل شده

+4 امتیاز
سلام. 3 نقطه از یک دایره رو داریم البته این نقاط دقیق نیستند حالا تصمیم داریم دایره ای که هر 3 نقطه عبور می کنه را بدست بیاریم.از چه روشی باید استفاده کنم؟
سوال شده آبان 30, 1392  بوسیله ی haniye sarbazi (امتیاز 983)   2 6 15
دوباره تگ گذاری شد بهمن 22, 1392 بوسیله ی BlueBlade

2 پاسخ

+3 امتیاز
 
بهترین پاسخ

حتی اگر نقاط شما دقیق هم نباشه به راحتی میشه دایره مورد نظر را تشخیص داد. شما بین هر 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);
	
}

 

پاسخ داده شده آبان 30, 1392 بوسیله ی بی نام  
ویرایش شده آذر 1, 1392 بوسیله ی مصطفی ساتکی
Point هم از نوع struct هستش و شامل 2 فیلد x,y از نوع int
+1 امتیاز
میتونی از هندسه دبیرستان استفاده کنی رسم دایره وقتی که سه نقطه روی خط راست قرار ندارند

مرکز برخورد عمود منصف  اضلاع میشه مرکز دایره و شعاع هم از مرکز تا نقاط میشه
پاسخ داده شده فروردین 29, 1393 بوسیله ی Fire360Boy (امتیاز 2,524)   6 24 43
...