• 0
golden man

Project A Point Onto A Line

سؤال

السلام عليكم

كيف أستطيع معرفة إحداثيات نقطة إسقاط نقطة ما لدي إحداثياتها على مستقيم لدي إحداثيات نقطتين منه؟؟

مثال :

لدي نقطة : x = 10 , y = 33

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

x1 = 33 , y1 = 64 , x2 = 65 , y2 = 87

و المطلوب معادلات رياضية لمعرفة إحداثيات نقطة تقاطع المستقيم العمودي من النقطة السابقة على المستقيم

أرجو مساعدتي بطريقة معرفة هذه الإحداثيات رياضيا.....

و جزاكم الله خيرا.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

7 إجابة على هذا السؤال .

  • 0

ستقوم بفرض نقطة x,y فيكون لديك ثلاث نقاط النقطة المراد الإسقاط منها واحدى النقطتين الموجودتين على الخط والنقطة x,y ومنها يمكن كتابة معادلة في x,y باستخدام نظرية فيثاغورث

وطبعا المعدلة الثانية هي معادلة الخط المستقيم نفسه

وبالتالي يصبح لديك معادلتين في مجهولين

سأترك لك التنفيذ

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ممكن توجدها بفرض بارامتر t لنقطة التقاطع على الخط و استخدام الضرب dot product يساوي صفر لحل المسألة. انصحك بالرجوع الى الكتاب الرائع

Geometric Tools for Computer Graphics (The Morgan Kaufmann Series in Computer Graphics)

للمؤلف David H. Eberly

http://www.geometrictools.com/Books/Geomet...outTheBook.html

او البحث اكتر في جووجل لتجد حل مثل

http://www.geometryexpressions.com/explora...mp;PHPSESSID=d4

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

وممكن كمان تفرض النقطة المطلوبة هى (x,y) وتكون معادلتين فى مجهولين , احدهما كما قال الاخ باسم هى معادلة الخط المستقيم نفسه (لان النقطة تحقق المعادلة) والاخرى من العلاقة بين ميل الخط المستقيم m1 (وممكن تعيينه من النقطتين المعلومتين على الخط) وميل العمودى m2 من نقطة الاسقاط على المستقيم (وممكن تعيينها من نقطة الفرض ونقطة الاسقاط). حيث ان m1*m2=-1 (شرط التعامد).

والله اعلى واعلم ,,,

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

جزاكم الله خير .

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

معادلة المستقيم :

y = mx + c	*

نوجد المعادلتين التاليتين بمجهولين :

المعادلة الأولى معادلة المستقيم الذي لدينا نقطتين منه :

نحسب ميل هذا المستقيم من العلاقة :

m1 = (y1-y2)/(x1-x2)

حيث أن x1 , y1 إحداثيات النقطة الأولى من المستقيم و x2 , y2 هي إحداثيات النقطة الثانية من المستقيم

و لحساب الثابت C نعوض m1 و إحدى النقطتين في معادلة المستقيم * :

c1 = y1 - m1x1

المعادلة الثانية هي معادلة المستقيم العمودي على المستقيم السابق و الذي يمر من القطة الثالثة التي احداثياتها x3 , y3 :

نحسب ميل هذا المستقيم عن طريق العلاقة التي ذكرها الأستاذ عماد :

m1*m2=-1
m2 = -1/m1

ثم نعوض أيضا النقطة التي لدينا إحداثياتها في هذه المعادلة :

c2 = y3 - m2x3

أصبح لدينا معادلتي مستقيمين بمجهولين هما :x , y

1) y = m1x+c1
2) y = m2x+c2

نحلهما حل مشترك :

m1x+c1 = m2x+c2

xn = (c2-c1)/(m1-m2)
yn = m1*xn+c1

هكذا توصلنا إلى احداثيات نقطة الإسقاط و التي هي xn , yn

لقد جربت هذه الطريقة على الـ c# و لكن يوجد هناك أخطاء باحداثيات النقطة الجديدة

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

بالنسبة لطريقتك أستاذ باسم فلم أفهمها و ما علاقة نظرية فيثاغورث بالحصول على الاحداثيات؟ أرجو الايضاح أكثر.

و بالنسبة للأستاذ elsheikhmh فقد وجدت الصفحة التي أشرت إليها في غوغل قبل وضع هذا الموضوع و لكني لم أعرف كيف أستنتج الثوابت في معادلة المستقيم من احداثيات نقطتين منه و التي هي a , b , c.

فأرجو منك إيضاح طريقة استنتاج قيم هذه الثوابت إن أمكن. و بالنسبة للكتاب لم أجد فيه المطلوب (و هل الرابط الذي وضعته يحوي الكتاب أم وصف لأبحاثه؟)

و بالنسبة لطريقتك أستاذي عماد فهي الطريقة التي اتبعتها و لكن كما قلت سابقا فهناك أخطاء بالنتائج عند تنفيذها على لغة برمجة.

شكرا للجميع على هذه المساعدة الرائعة و بانتظار اكمال فكرة الحل.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

أخى الفاضل golden man

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

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

عامة نفرض ان المستقيم المعلوم يمر بالنقتطين P1, P2 وان النقطة الثالثة التى سيتم منها الاسقاط هى P3 واخيرا النقطة المراد تعيينها (تقاطع العمودى من النقطة P3 مع المستقيم المعلوم) هى P حيث

mimetex.cgi?P1=(x_1,y_1),%5C;%5C;%5C;%20

فيكون من المستقيم المعلوم

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

ومن العمودى عليه من النقطة P3

mimetex.cgi?%5Cfrac%7By-y_3%7D%7Bx-x_3%7

وهما معادلتين فى مجهولين , وبحلهما نحصل على

mimetex.cgi?x=%5Cfrac%7Bm(y_3-y_1)+x_3+m

mimetex.cgi?y=%5Cfrac%7Bm(x_3-x_1)+y_1+m

وهذه العلاقات تم تجريبها , ونتائجها مضبوطة ان شاء الله. وده كود بالـ C++ ومجرب ايضا

#include <iostream>
using namespace std;

int main(){

    double x1=5, y1=0, x2=0, y2=5, x3=0, y3=0, m, x, y;

    m=(y2-y1)/(x2-x1);
    x=(m*(y3-y1)+x3+m*m*x1)/(m*m+1);
    y=(m*(x3-x1)+y1+m*m*y3)/(m*m+1);

    cout << "x=" << x << ", y=" << y << endl;

    return 0;
}

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

تم تعديل بواسطه عماد حمدي احمد
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جزاك الله خيرا أستاذ عماد و زادك علما .

تم تجريب الطريقة و هي صحيحة في جميع الحالات .

شكرا للجميع.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم في الحقيقة لدي نفس مشكلة الاخ

الا انني اعمل في 3D

p1(x1,y1,z1) p2(x2,y2,z2) ,p3(x3,y3,z3) and P(X,Y,Z).

 

في هذه الحالة كيف يكون الحل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .