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

كيف ممكن أحدد الاحداثيات في الرسم باستخدام openGL؟؟

بدأه غلا الروح في 19 أبريل 2010 · 3 رد · 5,718 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الســـلام عليكم ..

انا مبتدئة في الكمبيوتر جرافيكس وهلأ بالمختبر عم ناخد الكمبيوتر جرافيكس باستخدام openGL

ولكن ..

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

أتمنى منكم تساعدوني وتحكوا لي كيف ممكن ألعب بالاحداثيات عشان أرسم الشكل اللي بدي اياه بأي مكان ؟

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

هدا هو الكود

#include<windows.h>
#include<GL/glut.h>
#include <math.h>


float PI=3.14159;
float theta,x,y;

void draw()
{
	glClear(GL_COLOR_BUFFER_BIT);

	glLineWidth(10);
	glColor3f(1,0,0);
    glBegin(GL_QUADS);
    glVertex2f(200,200);
    glVertex2f(500,200);
	 glVertex2f(500,500);
    glVertex2f(200,500);
    glEnd();
	glColor3f(0,1,0);
    glBegin(GL_QUADS);
    glVertex2f(190,190);
    glVertex2f(25,190);
	 glVertex2f(25,25);
    glVertex2f(190 ,25 );
    glEnd();



    glFlush();
}
void Initial()
{
glClearColor(3.5,1.8,1.5,4);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,650,0,600);
}


void main ()
{
	glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
	glutInitWindowSize(500,570);
	glutInitWindowPosition(90,0);
	glutCreateWindow("house");
	Initial();
glutDisplayFunc(draw);
glutMainLoop();
}

تم تعديل هذه المشاركة بواسطة غلا الروح في 19 أبريل 2010 في 16:17

#2

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

بالنسبة لتحديد الإحداثيات للأشكال البسيطة أو المعقدة. فمن الممكن عمل ذلك بإحدى طريقتين:

- تقدير هذه الإحداثيات تقديرا (قد تفي بالغرض في الأشكال البسيطة).

- حساب الإحداثيات من خلال قواعد رياضية و علاقات تربط الأشكال (تستعمل في الأشكال المنتظمة).

بالنسبة للطريقة الأولى:

يجب أولا أن القيام بعمل رسم مبدئي Sketch على الورق أو على أي برنامج رسم و من ثم محاول تقدير الإحداثيات بناء على هذا الرسم.

لاحظي الصورة التالية:

post-133895-12717568412785_thumb.jpg

قمنا برسم الصورة بشكل مبدأي على ورقة و من قم تقدير الإحداثيات. طبعا عملية تقدير الإحداثيات ليست عشوائية أيضا، ولكن تتم بناء على المعطيات الأخرى.

فمثلا في البداية نكون قدرنا إحداثيات الزاوية العلوية اليسرى للبيت و قمنا بتحديد عرض البيت =400 بهذا نكون حصلنا على جسم البيت.

الآن لتقدير إحدايثات القرميد الخاص بالبيت (بشكل خاص إحدثايات النقطة البرتقاليه التي تمثل رأس هذا الكوخ). من المتوقع أن قمة هذا الكوخ يجب أن تكون موازية لمركز البيت في محور X، لذلك قمنا بتقدر موقع نقطة المركز للكوخ من خلال المعادلة التالية:

إحداثي X لمركز القرميد (الكوخ)= ((إحداثي X للزاوية اليمنى للبيت - إحداثي X للزاوية اليسرى للبيت)\2) + إحداثي X للزاوية اليسرى.

بهذا نحصل على إحداثيات مركز البيت في محور X و بالإمكان وضع قيمة تقديرية للإحداثي Y.

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

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

هنالك طريقة سريعة جربتها مره و أعطتني نتائج جيدة في تقدير الإحداثيات، وذلك من خلال رسم الشكل المطلوب في برنامج الرسم، و من ثم قراءة الإحدثيات للنقاط التي تريد رسمها في ال OpenGL، حيث بالإمكان قراءة إحداثيات النقاط من خلال وضع الماوس على تلك النقاط و في نفس الوقت قراءة القيمة في ال Status Bar.

التوضيح في الصورة:

post-133895-12717582600704_thumb.jpg

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

بالتوفيق

#3

الله يعطيك العافية ويسعدك يارب دنيا و آخرة ..

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

بس طريقة برنامج الرسام مانفعت معي :excl:

بس إذا ممكن استفسار آخر بسيط عن كيفية تحديد موقع الدائرة ...

#4

لوصف الدائرة هنالك طريقتين على الأقل:

الأولى: من خلال وصف نصف قطر الدائرة و مركزها فنحصل على دائرة طبيعية.

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

حيث يتم وصف إحداثيات x , y الخاصة بنقطة الزاوية العلوية اليسرى للمستطيل، و وصف عرض و إرتفاع المستطيل.

قد تجدي في ال OpenGL دوال للطريقتين، لأ أذكر بالضبط.

بالعادة الطريقة الثانية يكون أسم الدالة الخاصة بها DrawEllipse.

الصورة التالية للتوضيح:

post-133895-12719359314298_thumb.png

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