الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اتراس ابو خيط (سير)

بدأه مصفوفة في 28 أغسطس 2008 · 0 رد · 866 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1

بسم الله الرحمن الرحيم

الحمدالله رب العالمين

اما بعد:

هذا الموضوع سوف يتناول فكرة السير (ترس متصل مع ترس آخر عبر حبل )

عموما

في هذا الموضوع سوف نتناول فكرة رسم التروس بالمعادلات + برنام بإستخدام مكتبة Qt به صف به امرين فقط الأول لرسم الترس والثاني لتوصيل بين ترسين تحددهما انت انظر الصور

5ebbce2b9f.jpg

76f02fdf2b.jpg

ولكن كيف يتم الربط بين التروس

ان فكرة الربط بين التروس هو عبار عن مماسين لترسيين لهما نفس الميل = ميل المستقيم بين نقتي التماس

وهناك فكرة أخرى هندسية للرسم وهي تعتمد على مثلث ذو متوسط يمر بمركزي الترسيين

انظر الرسمة (الرسمة باليد لعدم توفر برامج للرسم)

939417f740.jpg

1-من الرسم نجد زاوية ميل المتوسط عن طريق نقاط مركز التروس أولا وبإستخدام معكوس الضا

2-ثم نجد الزاوية بين المتوسط والمماس العلوي او السفلي وذلك بطرح انصاف القطر من بعضها البعض وقسمته على المسافة بين المركزين وايجاد معكوس الجا

3-نطرح او نجمع الى الناتج باي/2 ونجد الجا والجتا لهما ونضربهما في نصف القطر لنجمعها مع احداثيات نصف القطر

هذه ثلاث خطوات سريعة انظر الشيفرة

void gear::tailGear(int from,int to){
	QGraphicsLineItem* line;
	// (زاوية ميل المستقيم المار بمركزي الترس ( منصف المثلث 
	double t=atan((centers[to].y()-centers[from].y())/(centers[to].x()-centers[from].x()));
	//  الزاوية بين المنصف ومماسي التروس
	double c=asin((radials[to]-radials[from])/
	(pow(pow(centers[to].x()-centers[from].x(),2)+pow(centers[to].y()-centers[from].y(),2),.5)));
	//خط التماس العلوي
	double m=t+c;
	double y1=sin(m-pi/2)*radials[from]+centers[from].y();
	double x1=cos(m-pi/2)*radials[from]+centers[from].x();
	double y2=sin(m-pi/2)*radials[to]+centers[to].y();
	double x2=cos(m-pi/2)*radials[to]+centers[to].x();
	scene->addItem(line=new QGraphicsLineItem(QLineF(x2,y2,x1,y1)));
	line->setPen(QPen(QBrush(Qt::green),3,Qt::DashDotDotLine));
	//خط التماس السفلي
	m=t-c;
	y1=sin(m+pi/2)*radials[from]+centers[from].y();
	x1=cos(m+pi/2)*radials[from]+centers[from].x();
	y2=sin(m+pi/2)*radials[to]+centers[to].y();
	x2=cos(m+pi/2)*radials[to]+centers[to].x();
	scene->addItem(line=new QGraphicsLineItem(QLineF(x2,y2,x1,y1)));
	line->setPen(QPen(QBrush(Qt::green),3,Qt::DashDotDotLine));
}

آمل ان ينال رضاكم وشكرا

برنامج رسم التروس في المرفقات بإستخدام Qt

gear.zip

بسم الله الرحمن الرحيم

مدونة دوال

كيوتي العربي

مواضيع مشابهة