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

اختيار الأشكال عن طريق الماوس Picking

بدأه EnigmaLine في 28 مايو 2011 · 11 رد · 1,696 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

انا عندى مشكله صغيره ومش لاقلها حل لو حد يقدر يساعدنى ياريت مايتأخرش

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

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

/index.php?showtopic=221041

#2

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

هناك طريقتين :

- طريقة باستخدام دوال OpenGL الكلاسيكية - الرابط الذي وضعت يستخدم هذه الطريقة - .

- طريقة بدون اعتماد على دوال خارجية وهذه الأفضل لعدة أسباب ، أهمها أنها ستعمل على أي مكتبة رسومية + ستتعلم أكثر من خلالها ...

الطريقة باختصار أن تكتشف " التصادم " إن صح التعبير بين الأشكال الثنائية البعد وبين النقطة ( موقع مؤشر الفأرة ) ، لو فرضنا أن الشكل هو مستطيل ، فكل ما عليك هو فحص موقع مؤشر الفأرة ، هل هي داخل المستطيل أما خارجه ،

bool isPointInside(int point_x1,int point_x2 , int rect_x1 , int rect_y1 , int rect_x2 , int rect_y2 ){
	return (point_x1 > rect_x1 && point_x1 < rect_x2 && point_y1 > rect_y1 && point_y1 < rect_y2 );
}

class Rect{
	int x1;
	int y1;
	int x2;
	int y2;
	std::string name ;
}
std::vector<Rect> vec;

void init(){
	Rect r1;
	r1.x1 = 0;
	r1.x2 = 100;
	r1.y1 = 0;
	r1.y2 = 200;
	r1.name = "r1";
	vec.push_back(r1);

	Rect r2;
	r2.x1 = 100;
	r2.x2 = 200;
	r2.y1 = 200;
	r2.y2 = 400;
	r2.name = "r2";
	vec.push_back(r2);

}


void mouse(int b,int s,int x,int y)
{
    	if(b == GLUT_LEFT_BUTTON && s == GLUT_DOWN)
    	{
			for(int i =0;i<vec.size();i++){
				if(isPointInside(x,y,vec.x1,vec.y1,vec.x2,vec.y2)){
					std::cout << vec.name << std::endl;
				}
			}
    	}
}

طبعاً المثال ينقصه جانب الجرافكس ، ولكن المهم الفكرة ..

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

انا فعا جتلى الفكره دى وطبقتها بس ظهرتلى مشكلة ان انا لو عملت دوران للمستطيل مش هاقدر اعرف مكانه فين بالظبط

ياريت لو تقدر تساعدنى اكتر

#4

صح ، ممكن تتعقد أكثر إذا صار فيه دوران rotation .. لا أعرف حل جربته من قبل لهذه الحالة ..

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#5

طيب ايه ملهاش حل ياريت لو حد عارف حل للمشكله دى يقولى عليها انا محتاج انفذ المطلوب ضرورى جدا

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

#6

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

Annotation_Helper.rar

#7

انا حملت المثال بس مش فاهم جاحه خالص ياريت توضح اكتر

#8
EnigmaLine كتب:

انا حملت المثال بس مش فاهم جاحه خالص ياريت توضح اكتر

الم تره انني ارسم object من ال toolbox ، استطيع بعد ذلك تدويرها او تحريكها ، هل هندك مشكله بظهور ال toolbox ؟؟

#9

لا التول بار ظاهر بس مش عارف استخدمه هاجرب تانى واقولك

مش شغال عندى مش عارف ليه انا بدوس على الارقام من التول بار مافيش حاجه بتحصل هواالمفروض اعمل ايه علشان الاوبجكت يظهر

#10
EnigmaLine كتب:

لا التول بار ظاهر بس مش عارف استخدمه هاجرب تانى واقولك

مش شغال عندى مش عارف ليه انا بدوس على الارقام من التول بار مافيش حاجه بتحصل هواالمفروض اعمل ايه علشان الاوبجكت يظهر

الا نعرف كيف ترسم بال paint اختر رقم انتقل بال cursor الى المكان الذي يعرض الصوره اضغط بالزر الايسر وحرك ثم افلت زر الماوس

#11

ايوه كده تمام هوا ده بالظبط اللى انا عايز اعمله

#12

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

عموما كما قال الأخ الشمري توجد طريقتين هما :

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

-ثانيا: الطريقة الديناميكية و هو أسلوب مقترح لمن لا يملكون دعما من المطور ,و اللطريقة على الشكل التالي:

-تحديد لون مختلف لكل شكل من الأشكال المرعوب رسمها.

-إستعمال ذاكرتين buffers و من دون قلبهما ,إحداهما لعرض الأشكال على ألوانها الأساسية .

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

راجع هذا الموقع ,سيكون أكثر تفصيلا .

تخيل, هل سيكون مستقبل الأوبن جي أل مع البشرية هكذا

future.jpg

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

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

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

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

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