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

عمليات على المثلث

رائج
بدأه علاء الصالحي في 24 يونيو 2008 · 66 رد · 8,526 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#26

السلام عليكم ورحمة الله

أخوانى الافاضل بارك الله فيكم , وشكرا للاخوة الذين راسلونى للمشاركة فى هذا الموضوع المفيد ان شاء الله

ساتكلم ان شاء الله عن نقطتين مما اثيرا هنا وهما

1) معرفة هل المثلث متساوى الساقين او متساوى الاضلاع او غير ذلك , وذلك من خلال معرفة اطوال اضلاعة.

2) معرفة هل النقطة كذا داخل المثلث او خارجه.

طبعا انا مش هكتب اكواد , فانا ليس لى دراية بلغة الجافا للاسف. ولكن سأتكلم رياضيا , وانتم ترجموا لبرمجه :)

اولا: العلاقة بين اطوال اضلاع المثلث

بفرض ان اطوال اضلاع المثلث هى L1, L2, L3 سنقوم بحساب الفروق الاتية

d1=L1-L2
d2=L2-L3
d3=L3-L1

وبحساب عدد الاصفار الناتجة يمكننا معرفة العلاقة بين الاضلاع الثلاثة على النحو التالى:

1) عدد الاصفار يساوى 0 اذا الاضلاع جميعها مختلفه.

2) عدد الاصفار يساوى 1 اذا هناك ضلعين فقط متساويين.

3) عدد الاصفار يساوى 3 جميع الاضلاع متساوية.

التوضيح:

1) لو الاضلاع كلها مختلفه , اذا لايوجد اصفار فى القيم السابقة وهذا واضح.

2) لو هناك ضلعين فقط متساويين , اذا سنحصل على صفر واحد من قيمة الفروق التى تجمعهما , وقيمتى الفروق الاخريين بالتاكيد ليستا اصفارا.

3) لو جميع الاضلاع متساوية , اذا جميع قيم الفروق السابقة اصفار وهذا واضح.

يتـــــــــبع ,,,

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#27

ثانيا: العلاقة بين نقطة ومثلث

واضح طبعا ان العلاقة بين نقطة ومثلث هى احدى ثلاث حالات

1) النقطة داخل المثلث.

2) النقطة على المثلث.

3) النقطة خارج المثلث.

الحل الذى اطرحه هنا لمعرفة العلاقة بين نقطة ومثلث , لا استطيع ان اجزم انه الحل الوحيد او حتى افضل الحلول. ولكنه مجرد محاولة قابلة للتطوير. ويتمثل الحل ككل فى معرفة العلاقة بين نقطة وخط مستقيم ومنها يمكن استغلالها لمعرفة العلاقة بين النقطة والمثلث.

اى خط مستقيم معادلته Ax+By+C=0 , يقسم المستوى الى ثلاث مجموعات من النقاط كما بالشكل. مجازة (حسب الرسمة المرفقة) يمكن القول بانهم مجموعة النقاط يمين (او تحت) الخط S1 مجموعة النقاط على الخط S2 ومجموعة النقاط يسار (او اعلى) الخط S3

post-52814-1218382623_thumb.jpg

لكى نقول ان النقطتين p1 و p2 تقعان فى نفس الجهه من الخط المستقيم , فانه يجب عند التعويض بهما فى معادلة الخط كل على حده , فان اشارة المقدار الناتج منهما لابد وان تكون واحده. بمعنى لو بالتعويض بالنقطة p1 فى المعادلة Ax+By+C وكان الناتج موجبا , فانه لكلى تكون النقطة p2 معها فى نفس الجهه لهذا الخط المستقيم , يجب ان يكون قيمة التعويض بها فى الخط المستقيم ايضا موجبا.

وبالتالى اعتمادا على هذه النقطة. بفرض رؤوس المثلث هى p1, p2, p3 والنقطة محل الدراسة هى p فانه

1) النقطة تقع داخل المثلث اذا كان , برسم مستقيم مار بنقطتين من رؤوس المثلث ودراسة موقع النقطة محل الدراسة والرأس الثالثة وكانتا فى نفس الجهه بالنسبة لهذا المستقيم , وذلك يتحقق لجميع الاضلاع الثلاثة.

بمعنى اخر اذا كانت

النقطة p والنقطة p1 فى نفس الجهه للمستقيم المار بــ p2, p3 و

النقطة p والنقطة p2 فى نفس الجهه للمستقيم المار بــ p1, p3 و

النقطة p والنقطة p3 فى نفس الجهه للمستقيم المار بــ p2, p1

فان النقطة p تقع داخل المثلث.

2) اذا كان ناتج تعويض النقطة p مع اى مستقيم مار برأسين من رؤوس المثلث تساوى صفرا. وكانت تقع فى نفس الجهه مع الرأس الثالثة بالنسبة للمستقيمين الاخريين (شرط ضرور) , فان النقطة p تقع على المثلث.

3) ان لم يتحقق احد الحالتين السابقتين , اذا النقطة p خارج المثلث.

ملحوظه:

معادلة المستقيم المار بالنقطتين

mimetex.cgi?%20p_1=(x_1,y_1),%20p_2=(x_2

هى

mimetex.cgi?%5Cfrac%7By-y_1%7D%7Bx-x_1%7

بالله التوفيق ,,,

تم تعديل هذه المشاركة بواسطة عماد حمدي احمد في 10 أغسطس 2008 في 18:38

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#28

شكراً جزيلاً أخ عماد

على مشاركتك الفعالة معنا

جيد جداً يا شباب

الآن لدينا الطريقة

من من المبتدئين معنا سيقوم بالبرمجة

كنت أريد برمجته

لكني رأيت أنه من الأنانية أن أقوم بذلك

فانتظار من سيقول أنا

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#29

سأتولى ذلك إن شاء الله

سأبدأ أولى بالدوال المتعلقة بالمستقيم (نقطة فوق أو تحت و ما إلى ذلك)

ثم ننتقل إلى المثلث

#30

السلام عليكم

حل مسألة هل النقطه خارج ام داخل المثلث ؟ بإستثناء قائم الزاوية.

المرحلة الأولى :

1) نقوم باخراج اكبر واصغر قيمه لمحور الصادات لنقاط المثلث.

2) نقوم بإخراج اكبر واصغر قيمة لمحور السينات لنقاط المثلث.

تعريف :: (Max_x) (Max_y) (Min_x) (Min_y)

المرحلة الثانية : " تقليص المساحة "

الخطوة الأولى:

1) نقوم بمقارنه احداثية المحور الصادي : هل الاحداثية للمحور الصادي الذي تم استلامها اكبر من القيمة الكبرى للمحور ام اصغر.

2) ان كانت اكبرمن القيمة الكبرى فهيا خارج المثلث , ان كانت اصغر من القيمة الصغرى فهيا خارج المثلث .

الخطوة الثانية:

3) نقوم بمقارنه احداثية المحور السيني : هل الاحداثية للمحور السيني الذي تم استلامها اكبر من القيمة الكبرى للمحور ام اصغر

4) ان كانت اكبر من القيمة الكبرى فهيا خارج المثلث , ان كانت اصغر من القيمة الصغرى فهي خارج المثلث .

المرحلة الثالثة :

الخطوة الأولى : " دالة القاطع "

1) تحديد قيم المحور السيني " اكبر , وسط , اصغر " Max_x) (Med_x) (Min_x)

2) نزيد اكبر قيمة من المحور واحد بحيث نكون نقطة جديدة تساوي ((Max_x)+1,y)

3) نخرج مستقيم يمر من النقطة ((Max_x)+1,y) الى النقطة ((Med_x),y)

4) دالة المستقيم F_xmaxTO_xmed(x)

الخطوة الثانية : " تحديد النقطة الرئيسية "

1) تحديد نقطة تتجه اليها جميع النقاط داخل المساحة المحصوره " انظر الى الرسم " , "راجع المرحلة الثانية " .

2) النقطة = (Max_x),F_xmaxTO_xmed(x)))

المرحلة الرابعة :

النقطة الهدف = (a,b)

الخطوة الأولى : " تحديد المسافات "

1) اوجد المسافة بين (a,b) و Max_x),F_xmaxTO_xmed(x)))

2) اوجد المسافة بين نقطة التقاطع (intersect(f_a(x),b) فان لم تجد احفظ القيمة "قيمة تميزه"

3) اوجد المسافة بين نقطة التقاطع intersect(f_b(x),b)

4)) اوجد المسافة بين نقطة التقاطع (intersect(f_c(x),b)

الخطوة الثانية : " تحديد الموقع للنقطة الهدف "

1) intersect(f_a(x),b)) " خطأ":

2) في حال كانت المسافة "1" اكبر من "3" و "4" ’ النقطة (a,b) خارج المثلث.

2) في حال كانت المسافة "1" اصغر من "3" و "4" ’ النقطة (a,b) خارج المثلث.

3) في حال كانت المسافة "1" تساوي احدى المسافات التالية "3" او "4" ’ النقطة (a,b) مماس للمثلث .

4) والا ... فان النقطة (a,b) داخل المثلث .

1) (intersect(f_a(x),b)) "صواب":

1) في حال كانت المسافة "1" اكبر من "2" و "4" ’ النقطة (a,b) خارج المثلث.

2) في حال كانت المسافة "1" اصغر من "2" و "4" ’ النقطة (a,b) خارج المثلث.

3) في حال كانت المسافة "1" تساوي احدى المسافات التالية "2" او "3" او "4" ’ النقطة (a,b) مماس للمثلث .

4) والا ... فان النقطة (a,b) داخل المثلث .

تحياتي للجميع ..

post-59900-1218477023_thumb.jpg

تم تعديل هذه المشاركة بواسطة azeez00 في 12 أغسطس 2008 في 00:11

سبحان الله , الله اكبر , ولله الحمد

#31

اخواني المبرمجين او كل من لديه معرفه في الرياضيات نحتاج مشاركاتكم ,. ولو بسطر واحد

ربما تقترح علي كود او خوارزمية حل اسرع وابسط من الذي اكتبه انا ,, كما فعل الاخ الفاضل عماد حمدي في معرفة متساوي الاضلاع.

ثانيا المثلثات من وجهة نظري امرها ليس بتلك السهوله والعمليات التي سوف تكون عليها متنوعه وكل عمل يتعامل مع نوع معين من المثلث , هذا من جانب ..

ومن جانب اخر , لابد يكون هناك ايضا عمليات لمعرفة نوع المثلث , لكي يكون هناك توافق بين جميع الحلول.

في المرفقات صوره لقائم الزاوية في جميع حالاته .. ارجوا المساعده

post-59900-1218627587_thumb.jpg

تم تعديل هذه المشاركة بواسطة azeez00 في 13 أغسطس 2008 في 14:50

سبحان الله , الله اكبر , ولله الحمد

#32

السلام عليكم ورحمة الله

اخى الفاضل azeez00

للاسف انا مش قادر افهم المشاركتين الاخيرتين لك , لكن سابسط ما جاء فى مشاركتى السابقة.

بفرض رءوس المثلث هى (x1,y1), (x2,y2), (x3,y3) وان النقطة محل الاختبار هى (a,b )

لمعرفة ما اذا كانت النقطة داخل او على او خارج المثلث سنقوم بعمل الاتى: نحسب القيم التالية

 
c1= [(y2-y1)*(a-x1)-(x2-x1)*(b-y1)] * [(y2-y1)*(x3-x1)-(x2-x1)*(y3-y1)]
c2= [(y3-y1)*(a-x1)-(x3-x1)*(b-y1)] * [(y3-y1)*(x2-x1)-(x3-x1)*(y2-y1)]
c3= [(y3-y2)*(a-x2)-(x3-x2)*(b-y2)] * [(y3-y2)*(x1-x2)-(x3-x2)*(y1-y2)]

ومنها يمكن استنتاج التالى:

1) اذا كانت جميع القيم السايقة موجبة , فان النقطة تقع داخل المثلث.

2) اذا كانت احد القيم سالبة , فالنقطة خارج المثلث.

3)اذا كانت احد القيم صفرا , وباقى القيم موجبة , فالنقطة على المثلث.

=================

التوضيح:

كما قلنا سابقا , فان معادلة المستقيم المار بالنقطتين (x1,y1), (x2,y2) هى

(y2-y1)*(x-x1)-(x2-x1)*(y-y1)=0

وبالتالى لمعرفة ما اذا كانت النقتطين (x3,y3) و (a,b ) تقعان فى نفس الجهه ام لا؟ سنقوم مرة بالتعويض بالنقطة (a,b ) ومرة بالنقطة (x3,y3) فى الطرف الايسر للمعادلة السابقة. واذا كانت النتائج تحمل نفس الاشارة فهما فى نفس الجهه , واذا كانت الاشارات مختلفه فهما فى جهتين مختلفتين. وبالطبع لمعرفة تساوى الاشارتين او اختلافهما , سنقوم بضرب الناتجين فى بعضهما , فلو الناتج النهائى موجب هذا يعنى تساوى الاشارتين , ولو الناتج سالب فهذا يعنى اختلاف الاشارتين.

وبالطبع نفس الكلام مع باقى النقاط.

=================

بالله التوفيق ,,,

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#33

محاولة أولى

ملاحظة:

1/ الكود مكتوب بطريقة ينقصها بعض النظام

2/ إمكانة وجود أخطاء جد واردة

أولا لدينا class خاص بالمستقيمات

public class droite {
	public float a;
	public float b;
	public float c;
// معادلة من الشكل
// ax+by+c=0


// ميل المستقيم
	public float ponte;


// Constructor

//إنشاء مستقيم بدون أية معطيات 
	public droite()
	{
		a=b=c=ponte=0;

	}

// إنشاء مستقيم بإدخال المعطيات الثلاثة
	public droite(float A,float B, float C)
	{
		a=A;
		b=B;
		c=C;
		if (b!=0)  ponte= -a/b; else ponte=Float.MAX_VALUE;

	}

//  إنشاء مستقيم  بدلالة نقطتين
	public  droite(float x1,float y1,float x2,float y2)
	{
		float A= (y2-y1)/(x2-x1);
		float B=y1-A*x1;
		a=A;
		b=-1;
		c=B;
		if (b!=0)  ponte= -a/b; else ponte=Float.MAX_VALUE;

	}

// معرفة مكان نقطة بالمقارنة بمستقيم
// 1 : فوق
// -1: تحت
// 0: تنتمي إلى المستقيم
	public  int position(float x,float y)
	{


		float reslut = (a*x+b*y+c);


		if (reslut*ponte==Float.MAX_VALUE) return -1;
		if(ponte==0){
			if (y>0) return 1;
			if (y<0) return -1;
			return 0;
		}

		if(ponte>0)
		{
		if (reslut*ponte<0) return 1;// audessus
		if (reslut*ponte>0) return -1;// audesous
		}
		else
		{
			if (reslut*ponte>0) return 1;// audessus
			if (reslut*ponte<0) return -1;// audesous
		}



		return 0;//  sur


	}

}

تم تعديل هذه المشاركة بواسطة djug في 14 أغسطس 2008 في 12:51

#34

و الآن معرفة ما إذا كانت نقطة داخل مثلث أو خارجه

	public boolean pointIn(float x,float y)
	 {
 //ننشئ ثلاث مستقيمات  الخاصة بالمثلث
		 droite drt1 = new droite(x1,y1,x2,y2);
		 droite drt2 = new droite(x1,y1,x3,y3);
		 droite drt3 = new droite(x2,y2,x3,y3);


		 if((drt1.position(x, y)==1)&&((drt2.position(x, y)==1))&&((drt3.position(x, y)==1))) return false;
		 if((drt1.position(x, y)!=1)&&((drt2.position(x, y)!=1))&&((drt3.position(x, y)!=1))) return false;

		 return true;
	 }

لدينا 8 حالات ممكنة للمستقيم (0 تحت(أو ينتمي إلى المستقيم ) و 1 فوق )

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

نلاحظ أن الحالتين الوحيدتين اللتين تكون فيها النقطة خارج المثلث هما الحالتين الأولى و الأخيرة

أي نبحث إن كانت إحدى هاتين الحالتين محققة (أفضل من بحث العكس) للجزم أن النقطة خارج المثلث

تم تعديل هذه المشاركة بواسطة djug في 14 أغسطس 2008 في 13:02

#35

هل هناك من جرب (أو على الأقل قرأ الـ class التي كتبتها)

و هل من تعليقات/ أخطاء/ إضافات ؟؟

#36

أخ djug

عندي لبس في شيفرتك

لماذا استخدمت الميل slope أو بالفرنسية ponte ؟

الأخ عماد لم يتطرق لذلك إطلاقاً

بعد ذلك عندما تضرب القيمة العليا للمتحول Float في أي شيء

فلن تحصل على القيمة العليا

فهي لا تمثل المالانهاية

 if (reslut*ponte==Float.MAX_VALUE) return -1;

وإنما سيحصل لدينا overflow وستجد أن الناتج أصبح بالسالب

هل هناك خطأ في فهمي

أرجو التوضيح

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#37
alaadiaa كتب:
أخ djug

عندي لبس في شيفرتك

لماذا استخدمت الميل slope أو بالفرنسية ponte ؟

الأخ عماد لم يتطرق لذلك إطلاقاً

استعملت طريقة مغايرة -لكن أظن أن يجب الرجوع إلى طريقته-

سأحاول مجددا إن شاء الله

اقتباس
بعد ذلك عندما تضرب القيمة العليا للمتحول Float في أي شيء

فلن تحصل على القيمة العليا

فهي لا تمثل المالانهاية

 if (reslut*ponte==Float.MAX_VALUE) return -1;

وإنما سيحصل لدينا overflow وستجد أن الناتج أصبح بالسالب

هل هناك خطأ في فهمي

هذه الحالة لما يكون المستقيم موازيا لمحور الصادات

أي أن الميل هو ∞ و يكون حاصل الضرب أيضا ∞

جرب

system.out.println(Float.MAX_VALUE))

تعطيك النتيجة Infinity

على كل حال... سأعيد كتالة الكود بناء على توصيات الأخ عماد حمدي احمد

#38

هذا المتغير

يحتوي على أكبر قيمة يمكن أن يحتويها المتغير من نوع Float

صحيح كبيرة جداً

لكن هذا لا يعني أنك في حالة ضربه بعدد سيعطيك مالانهاية

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#39

اولا ااسف على التاخير في الرد ,, لانشغالي بضيوف اتوني من بلد عربي عزيز علينا كلنا .. وما فرغت الا الليله ..

شكرا جزيلا ,, للاخ الاستاذ عماد حمدي على مشاركته معنا ..

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

انا لم اطبق الحل الى الان .. ولكن سؤالي هل هو صالح في جميع حالات المثلث , طبعا السؤال هذا سوف يجيب عليه اما الكود الذي سوف اجرب عليه ,, او الاخ عماد حمدي ..

وشكرا للاخ علاء وشكرا للاخ djug

سبحان الله , الله اكبر , ولله الحمد

#40

هذا هو الكود وفعلا اجاب الكود عن سؤالي ,, وهو يعمل بالشكل المطلوب ,, شكرا جزيلا على هذه المشاركه اخ عماد .

 class WhereIsPoint {

private: 
int c1,c2,c3;

public:
WhereIsPoint();

int Method_a(int,int,int,int,int,int,int,int);
int Method_b(int,int,int,int,int,int,int,int);
int Method_c(int,int,int,int,int,int,int,int);

}; //end class

WhereIsPoint::WhereIsPoint()
{
c1=0; c2=0; c3=0;
} 
int WhereIsPoint::Method_a(int y1,int y2,int y3, int x1, int x2,int x3,int a,int b)
{
c1= ((y2-y1)*(a-x1)-(x2-x1)*(b-y1)) * ((y2-y1)*(x3-x1)-(x2-x1)*(y3-y1));

return c1;
}
int WhereIsPoint::Method_b(int y1,int y2,int y3, int x1, int x2,int x3,int a,int b)
{
c2= ((y3-y1)*(a-x1)-(x3-x1)*(b-y1)) * ((y3-y1)*(x2-x1)-(x3-x1)*(y2-y1));

return c2;
}

int WhereIsPoint::Method_c(int y1,int y2,int y3, int x1, int x2,int x3,int a,int b)
{
c3= ((y3-y2)*(a-x2)-(x3-x2)*(b-y2)) * ((y3-y2)*(x1-x2)-(x3-x2)*(y1-y2));
return c3;
}

int main()
{
  WhereIsPoint one;
 int y1,y2,y3;
 int x1,x2,x3;
 int a,b;

System.in.println("enter the first point");
  x1=System.in.readInt();
  y1=System.in.readInt();

System.in.println("enter the second point");
  x2=System.in.readInt();
  y2=System.in.readInt();

 System.in.println("enter the third point");
  x3=System.in.readInt();
  y3=System.in.readInt();

  System.in.println("enter the Target point");
  a=System.in.readInt();
  b=System.in.readInt();


/* now  */ 


 if(one.Method_a(y1,y2,y3,x1,x2,x3,a,b)>0 && one.Method_b(y1,y2,y3,x1,x2,x3,a,b)>0&& one.Method_c(y1,y2,y3,x1,x2,x3,a,b)>0)
 System.out.println(" Point is inside");
 else if(one.Method_a(y1,y2,y3,x1,x2,x3,a,b)<0||one.Method_b(y1,y2,y3,x1,x2,x3,a,b)<0||one.Method_c(y1,y2,y3,x1,x2,x3,a,b)<0)
 System.out.println(" Point is outside");
 else 
 System.out.println(" Point is Tangent");


  return 0;
}

تم تعديل هذه المشاركة بواسطة azeez00 في 16 أغسطس 2008 في 01:22

سبحان الله , الله اكبر , ولله الحمد

#41

أخ عزيز هذا منتدى جافا وليس C++

على العموم سعيدين بتواجدك معنا

أخ djug هل من جديد معك؟

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#42

ترجمة ما كتبه الأخ عماد حمدي احمد في المشاركة رقم 32 إلى الجافا

public int pointPosition(float a , float b)
	  {

  //in:1
  //on:0
  //out:-1
	  float c1,c2,c3;

	  c1 = ((y2-y1)*(a-x1)-(x2-x1)*(b-y1)) * ((y2-y1)*(x3-x1)-(x2-x1)*(y3-y1));
	  c2= ((y3-y1)*(a-x1)-(x3-x1)*(b-y1)) * ((y3-y1)*(x2-x1)-(x3-x1)*(y2-y1));
	  c3= ((y3-y2)*(a-x2)-(x3-x2)*(b-y2)) * ((y3-y2)*(x1-x2)-(x3-x2)*(y1-y2));

	  if((c1>0)&&(c2>0)&&(c3>0)) return 1;
	  if((c1<0)||(c2<0)||(c3<0)) return -1;
	  return 0;
	  }

تم تعديل هذه المشاركة بواسطة djug في 19 أغسطس 2008 في 19:05

#43

ههههههه اخ علاء ..

والله الموضوع جذاب ويستحق المشاركه .. والموضوع بشكل عام لا يتعلق بلغات برمجه ,, وانما يتعلق بالخوارزميات .

لكن على العموم شكرا جزيلا ...

الان بما اننا وبفضل الله سبحانه استطعنا الاجابه عن الاسئلة المذكورة ..

الان من يجد لنا حل التالي :

ما هي الطريقة لمعرفة انواع المثلث ؟

تم تعديل هذه المشاركة بواسطة azeez00 في 19 أغسطس 2008 في 22:35

سبحان الله , الله اكبر , ولله الحمد

#44

Right Triangle : قائم الزاوية

types-triangles-right-triangle-1.gif

Acute Triangles : مثلث ذو زاوية حادة

types-triangles-acute-triangle-1.gif

Obtuse Triangles : مثلث ذو زاوية منفرجة

types-triangles-obtuse-triangle-1.gif

مشاركة الاخ عماد حمدي :

d1=L1-L2

d2=L2-L3

d3=L3-L1

وبحساب عدد الاصفار الناتجة يمكننا معرفة العلاقة بين الاضلاع الثلاثة على النحو التالى:

1) عدد الاصفار يساوى 0 اذا الاضلاع جميعها مختلفه.

2) عدد الاصفار يساوى 1 اذا هناك ضلعين فقط متساويين.

3) عدد الاصفار يساوى 3 جميع الاضلاع متساوية.

Equilateral Triangles : مثلث متساوي الأضلاع

types-triangles-equilateral-triangle-1.gif

Isosceles Triangles : مثلث متساوي الساقين

types-triangles-isosceles-triangle-1.gif

Scalene Triangles : مثلث ذو الاضلاع المختلفة

types-triangles-scalene-triangle-1.gif

تم تعديل هذه المشاركة بواسطة azeez00 في 19 أغسطس 2008 في 23:20

سبحان الله , الله اكبر , ولله الحمد

#45

أخي عزيز

لقد قام الأخ علاء بالتطرق لمعرفة نوع المثلث في المشاركة الأولى ( إلا إذا رأى الأخ علاء ضرورة إعادة صياغتها وفق طريقة الأخ عماد حمدي احمد)

هل هناك أفكار أخرى ؟؟

#46

سبحان الله ,, مع اني وضعت مشاركة الاخ علاء ؟؟! لكن لماذا لم تظهر ؟

وكانت بهذا التنسيق :

مشاركة الاخ علاء :

يكون المثلث منفرج

إذا كان مربع أحد الأضلاع أكبر من مبربعي الضلعين الآخرين

يكون المثلث قائم (نظرية فيثاغورث)

إذا كان مربع أحد الأضلاع يساوي مربعي الضلعين الآخرين

ويكون حاد إذا لم يتوفر أحد الشرطين السابقين

سبحان الله , الله اكبر , ولله الحمد

#47

طيب ما فائد كل هذا النقاش ان لم يكن هناك ما يلخص العمل في كود برمجي JAVA ?

اقصد ما رايكم بهذا الكلاس :

 class Triangle { 

// fields
private float x1; 
private float x2;
private float x3;
private float y1;
private float y2;
private float y3;

// methods
public void A(float valx,float valy); 
public void B(float valx,float valy); 
public void C(float valx,float valy); 
public boolean  IsTriangler();
public int pointPosition(float a,float b); 
		// type_name hisType(*V);  
		}

طبعا دالة تحديد انواع المثلث تحتاج الى نقاش اكثر وانا من وجهة نظري لا اعتقد انه تم استيفاء هذه الدالة بالشكل الكامل , ربما اكن على خطا ارجو من يوضح لي اخواني .

ثانيا انا عندي اقتراح لك اخي djug لماذا جلعت دالة pointPosition قيمة راجعة اليس من الافضل ان تكون هي من تعبر عن ذالك بواسطة جمل الشرط وكود جملة الاخراج .

اتمنى ان يكون النقاش التالي حول دالة تحديد نوع المثلث وطريقة هندسة الكود .

تحياتي

تم تعديل هذه المشاركة بواسطة azeez00 في 21 أغسطس 2008 في 01:20

سبحان الله , الله اكبر , ولله الحمد

#48

لا أعرف ما المشكلة أخ عزيز

ما المشكلة التي تراها هاهنا؟؟؟

أنا أؤيد جعل الدالة pointPosition ترجع قيمة

لأنه تعطي المبرمج حرية الاستفادة من المعلومة التي حصل عليها

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#49

انا جعلت الدالة تستوفي غرض واحد ,, ولكن الاخ djug نظر الى اغراض عدة وهذه ميزة سوف تكون عندي مستقبلا .

تم تعديل هذه المشاركة بواسطة azeez00 في 21 أغسطس 2008 في 02:33

سبحان الله , الله اكبر , ولله الحمد

#50

ما رأيكم بأن نقوم بعمل إعادة تصنيع re factoring

لما قمنا به حتى الآن

هل من تصورات لديكم حول الموضوع

سنقسم ما قمنا به على ثلاث فئات

الفئة الأولى نقطة

الفئة الثانية خط

الفئة الثالثة مثلث

الفئة الأولى نقطة

النقطة تحتوي على الإحداثي السيني x والإحداثي الصادي y

نلاحظ أن هذه الإحداثيات لا تتغير مع الزمن

لهذا سنزيل الدوال Sety و Setx

وسنجعل المتغيرات x,y تأخذ قيمها من البناء constructor

الفئة الثانية خط

ستأخذ نقطتين في صانع كائناتها

لن تأخذ A,B,C

كما فعل الأخ djug

لأننا نتكلم عن القطعة المستقيمة

والقطعة المستقيمة محدودة بنقطتين

أما المستقيم فمفتوح إلى ما نهاية من الطرفين

ستحتوي على الدالة طول

هل من اقتراحات أخرى؟؟

الفئة الثالثة المثلث

تحتوي على الدوال التي قمنا بعملها

مع إعادة الهيكلة لتوائم مع الفئات السابقة

هل هناك أي اعتراضات على ما ذكرت؟

هل أقوم بذلك؟أم هناك من يريد القيام بها؟

بعد أن ننتهي سنبحث في أمور أخرى بإذن الله

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…