طيب كيف ممكن ادور نصف الجسم وبشكل سريع وحول نقطة معينه
الدوران و opengl ....
استخدم الدوال المثلثية .. . اذا اردت تجعله يدور حول نقطة معينة .
واستخدم glrotatef .. اذا اردته يدور حول نفسه ..
واجعل المتغير يقف عند 180 درجة ويعود الى الصفر .. اذا اردت نصف دورة . او تعكس اتجاهه .. اذا وصل 180 يتناقص حتى يصل الى الصفر وهكذا ..
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
مثل ايش الدوال المثلثيه تقصد SIN,COS واذا كانت هي ايش المتغيرات الي تاخذها
مثل ايش الدوال المثلثيه تقصد SIN,COS واذا كانت هي ايش المتغيرات الي تاخذها والدالهROTATFتدور الجسم كله يعني كل الي موجود بالشاشة
مثل ايش الدوال المثلثيه تقصد SIN,COS واذا كانت هي ايش المتغيرات الي تاخذها والدالهROTATFتدور الجسم كله يعني كل الي موجود بالشاشة
ان شاء الله سأشرحها ..
بالنسبة لدالة ROTATF تستطيع ان تجعلها تدور جيم واحد فقط
مثال :
glPushMatrix(); glRotatef(45,1,0,0); glRectd(0,0,1,1); glPopMatrix();
حيث الدالتين
glPushMatrix(); glPopMatrix();
كأنها حاجز ...تمنع تأثر باقي الاجسام ... بدالة التدوير ...هذه .., ,,
تستطيع تطبيق تلك الدالتين مع جميع دوال الماتركس .
تم تعديل هذه المشاركة بواسطة الشمري في 9 نوفمبر 2005 في 14:21
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
اشكرك اخوي جزيل الشكر ومعليش الظاهر بنتعبك معنا
بس وضعت الكود بهذا الشكل:
glLineWidth(5); glBegin(GL_LINES); glVertex2f(-.8,0.3); glVertex2f(-.9,.6); glEnd(); glFlush(); glPushMatrix(); glRotatef(45,1,0,0); glRectd(0,0,1,1); glPopMatrix();
ولكن لم يدور انا اريد الخط يدور مثل المروحه اتمنى انها تكون وصلت الفكرة وجزااااااااك الله خيرا
فصلنا الموضوع ... افضل .. حتى لا تتداخل ..المشاركات
اكيد ما راح يدور .... لازم يصير عندك متغير يزداد كل مرة
static int x;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glLineWidth(5);
glBegin(GL_LINES);
glVertex2f(-.8,0.3);
glVertex2f(-.9,.9);
glEnd();
glFlush();
glPushMatrix();
glRotatef(x,1,0,0);
glRectd(0,0,.3,.3);
glPopMatrix();
x++;
glutSwapBuffers();
}ستجد المربع يدور والخط مايدور ... لانك استخدمت Push و Pop
وايضا عندك x يزداد كل مرة ... اذا صار ينقص كل مرة رح تغير اتجاه الدوران
التطبيق بالمرفقات .
تم تعديل هذه المشاركة بواسطة الشمري في 10 نوفمبر 2005 في 10:20
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
الى الاخ الفاضل الشمري جزاك الله خير ولكن الكود الي ارسلته ماشي ويتحرك
لكن لما اطبقه على البرنامج اشيل كل المتغيرات بمعنى اني
glBegin(GL_LINES); glVertex2f(-.8,0.3); glVertex2f(-0.8,.6);
والكود الي انت وضعته هو من يقوم برسم الخط بناء على الاحداثيات+تحريكه اذا كان هذا صحيحا
أي الاحداثيات يمثل السيني والصادي وكذلك انا طبقت الكود بناء على فهمي السابق وتحرك الخط لكن تغير عن مكانه لاني ماني عارفه الاحداثيات لكل دالة
glRectd(0,0,.3,.3); Rotatef(x,1,0,
ماذا تعني بالاضافة الى ذلك اصبحت جميع ماهو موجود في الشاشه يؤشر فياليت الاقي التوضيح من حضرتك والله يجزاك خير عارفه اني طولتها وهي قصيرة بس استحملنا احنا مبتدئين في هذا الشي
تم تعديل هذه المشاركة بواسطة hihi في 11 نوفمبر 2005 في 01:46
لم افهم مشكلتك اخي .
glRectd(0,0,.3,.3);
ترسم مربع ... اذا ماتعرفها لاتستخدمها ..
glTranslatef
للتحريك ... تطلب منك ثلاث بارمترات الاحداثي السيني والصادي والعمق .
glRtatef
تطلب اربع
الاول درجة الدوران ... زاوية الدوران يعني ..
اذا وضعتها كمتغير رح يقعد يدور ..
البارمترات الثلاث الباقية ... انت تحدد هل تريد الدوران على الاحداثي السيني او الصادي او العيني (يسمى كذا ؟:)
اذا اردت تجعل تأثير التدوير او التحريك او التحجيم على جسم معين .. تحجزه باستخدام glPushMatrix - glPopMatrix
--
تم تعديل هذه المشاركة بواسطة الشمري في 3 يوليو 2009 في 18:54
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
هذا الموضوع مغلق.