السلام عليكم ورحمة اللوبركاته
أنا رسمت كوره ولكن عجزت إني أحرك هذه الكوره
mouse function بإستخدام
بحيث إني إذا ظغط الزر اليسار في مكان معين
تتحرك الكوره لهذا المكان
وهكذا إذا ظغط في أي مكان
وشكرا
أرجوا المساعدة
السلام عليكم ورحمة اللوبركاته
أنا رسمت كوره ولكن عجزت إني أحرك هذه الكوره
mouse function بإستخدام
بحيث إني إذا ظغط الزر اليسار في مكان معين
تتحرك الكوره لهذا المكان
وهكذا إذا ظغط في أي مكان
وشكرا
أرجوا المساعدة
وعليكم السلام ورحمة الله وبركاته .
تختلف احداثيات OpenGL الثلاثية الابعاد عن احداثيات الماوس .. وهذا شيء طبيعي .. ظهرت عدة حلول .. أسهلها استخدام أحد دوال OpenGL .. وهي :
gluUnProject
بالامكان الاستفادة من هذه الروابط ./
http://pyopengl.sourceforge.net/documentat...Project.3G.html
http://www.gamedev.net/community/forums/to...?topic_id=65558
يوجد مثال بلغة البايثون ... أعتقد أنكم تبرمجون بلغة السي ...
اذا لم أنسَ .. سأضيف مثال هنا ..
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
شكرا لك أخي ولكني في برنامجي لم أستخدم ثلاثة أبعاد وإنما بعدين فقط
وهي تنحل بإستخدام
mouse function
ولكني لا أعرف كيف أقرأ نقطة x,y إذا نقرت بالزر اليسار للماوس على هذه النقطه حتى تتحرك الكره إلى هذه النقطه
اقتباسشكرا لك أخي ولكني في برنامجي لم أستخدم ثلاثة أبعاد وإنما بعدين فقط
اذا المشكلة صارت أسهل ..
اقتباسولكني لا أعرف كيف أقرأ نقطة x,y إذا نقرت بالزر اليسار للماوس على هذه النقطه حتى تتحرك الكره إلى هذه النقطه
مثال :
void mouse(int button, int state, int x, int y)
{
if (button == GLUT_RIGHT_BUTTON)
{
if (state == GLUT_DOWN)
cout << "Right button pressed"
<< endl;
else
cout << "Right button lifted "
<< "at (" << x << "," << y
<< ")" << endl;
}
}في الmain
glutMouseFunc(mouse);
شرحت هذه الدوال في هذا الموضوع :
لكن تبقى مشكلة التحويل من والى نظام احداثيات OpenGL .
هناك حلين :
1- أن تجعلي احداثيات OpenGL مثل احداثيات أي نافذة في الويندوز .
2- ان تعملي معادلة بسيطة للتحويل من والى OpenGL .
مرة ثانية ..اذا رجعت للبيت عملت المثال ..( ان شاء الله ما أنسى هذه المرة :) ) .. حاليا في الجامعة ولا اظنهم مثبتين OpenGL ....
لكن اذا كان ممكن .. اضيفي الجزء الخاص بالمنفذ .. مثال :
glViewport(.......); // ماهي القيم الموجودة هنا glOrtho(...........);// ماهي القيم الموجودة هنا
حتى نعطيك من الاخر .
تم تعديل هذه المشاركة بواسطة الشمري في 19 أبريل 2008 في 13:16
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
شكرا جزيلا لك على مجهودك
ولكني مبتدئه في open gl
فأرجوا أنك تحملني شوي
قبل ماأشوف ردك أستطعت أن أحرك الكوره ولكن بشكل عشوائي
#include <GL/glut.h>
#include <math.h>
const float PI = 3.14159;
void init (void)
{
glClearColor (1.0, 1.0, 1.0, 0.0);
glMatrixMode (GL_PROJECTION);
gluOrtho2D (0.0, 400.0, 0.0, 300.0);
}
void displayiFcn (void)
{
glClear (GL_COLOR_BUFFER_BIT); // Clear display window.
glColor3f (1.0, 0.0, 0.0);
float theta;
float x , y;
glBegin (GL_POLYGON); // For a solid circle
for (theta = 0; theta < (2 * PI); theta += 2 * PI / 10000)
{
x = 200 + 50 * cos(theta);
y = 150 + 50 * sin(theta);
glVertex2f (x,y);
}
glEnd ( );
glFlush ( );
}
void displayFcn (void)
{
glClear (GL_COLOR_BUFFER_BIT); // Clear display window.
glColor3f (1.0, 0.0, 0.0);
float theta;
float x , y;
for (int i = 240; i >= 50; i--)
{
glBegin (GL_POLYGON);
for (theta = 0; theta < (2 * PI); theta += 2 * PI / 10000)
{
glVertex2f (x,y);
y = i + 50 * cos(theta);
x =i + 50 * sin(theta);
}
glEnd ( );
glFlush ( );
glClear (GL_COLOR_BUFFER_BIT); // Clear display window.
}
}
void mouse(int button, int state, int x, int y)
{
switch (button) {
case GLUT_LEFT_BUTTON:
if (state == GLUT_DOWN)
glutIdleFunc (displayFcn);
break;
case GLUT_RIGHT_BUTTON:
if (state == GLUT_DOWN)
//glutIdleFunc(NULL);
break;
default:
break;
}
}
int main (int argc, char** argv)
{
glutInit (&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition (100, 100);
glutInitWindowSize (400, 300);
glutCreateWindow ("Moving Circle");
init ( );
glutDisplayFunc (displayiFcn);
glutMouseFunc(mouse);
glutMainLoop ( );
return 0;
}هذا الذي أنجزته حتى الآن
أعرف أن الكود يدل عدم الخبره
ولكن منكم نستفيد
تم تعديل هذه المشاركة بواسطة وريف في 20 أبريل 2008 في 23:11
السلام عليكم ورحمة الله وبركاته
أخي الشمري لقد أستطعت حل مشكلتي ولله الحمد
وجزاك الله خيرا على إهتمامك وجهودك
بارك الله فيك وزادك علما وعزا
بس ما بهو شي الكود يعني 75%
عذرا أختي الكريمة على تأخري في الرد .. والله كنت مجهز الكود من حوالي الاسبوع .. لكن طروف حالة دون اضافته ,
عموما الكود بالمرفقات .. وهو قريب مما طلبتيه .. لعل شخص اخر يستفيد منه .
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri