السلام عليكم ورحمه الله وبركاته
ممكن اخواني عندي سؤال
الأن عندما نريد أن نعمل دوران حول نقطة ولكن غير نقطة الأصل
كيف اعمله
هل اعمل ازاحه للجسم لنقطه الأصل ولكن ماهي الخطوات بعده
بليز ياريت توضحولي كيف بالتفصيل بالنص
وجزاكم الله كل خير
السلام عليكم ورحمه الله وبركاته
ممكن اخواني عندي سؤال
الأن عندما نريد أن نعمل دوران حول نقطة ولكن غير نقطة الأصل
كيف اعمله
هل اعمل ازاحه للجسم لنقطه الأصل ولكن ماهي الخطوات بعده
بليز ياريت توضحولي كيف بالتفصيل بالنص
وجزاكم الله كل خير
فين المساعدات
بيلز محتاجه للإجابه في اسرع وقت من فضلكم
بلييييييييييز
تكملة لسؤال عن الدوران
هل يسوجب دائما انه عند الدوران حول نقطة معينه
لا بد من استخدام الدوال المثلثه فيه؟ وماهي الدواال المثلثيه هذه
وكيف اعمل عندما اريد ان يدور الشكل حول نفسه
وحول نقطة الأصل
الله يفتح عليكم ويسهل اموركم
ارجو الرد على موضوعي كله بالتفصيل


راجعى الجزء الخاص بـ Two-Dimension فى الرابط السابق
شكرا اخي على الرد
وجزاك الله خير
ولكن احتاج الرد والتوضيح ايضا من اخواني في المنتدى
احب ان اذكر
بأنني اعرف متغيرات الدوران وفاهمتها
ولكن سؤالي بالتحديد عن الدوران حول نقطه معينه ..كيف استخدم الدوال المثلثيه فيها
اريد الخطوات المستخدمه
ولماذا استخدم الدوال المثلثيه ؟وهل هذا الزامي عند الدوران حول نقطه معينه؟
انا فاهمه الإنسحاب والدوران والتحجيم للعلم فقط
ارجو التوضحي من فضلكم
اعتقد انه لا توجد حاجة لاستخدام الدوال المثلثية في حركة بسيطة كهده
لجعل نقطة او جسم يدور حول نقطة معينة و لتكن فرضا و . يجب اولا ازاحة الجسم او النقطة بقيمة (و) , ثم يتم استدعاء دالة الدوران , ثم يتم ازاحة الجسم او النقطة بقيمة - و
glTranslatef(point.x, point.y, point.z); glRotatef(angle, axis.x, axis.y, axis.z); glTranslatef(-point.x, -point.y, -point.z);
point : هو المتجه الدي نريد ان ندور الجسم عليه
ارجو اني قد افدت
تم تعديل هذه المشاركة بواسطة virtual في 4 يناير 2009 في 18:16
أولا معذرة على التأخر , و الاخوة ما قصروا ,
لم أقرأ كل الردود , ولكن رد الاخ virtual الاخير هو الاسهل حسب ما أظن :
مثال تطبيقي:
#include <windows.h>
#include <gl\glut.h>
// هنا نعين مصفوفة الاسقاط .. والمنفذ
void changeSize(int w, int h)
{
glViewport(0, 0, w, h);
if(h == 0)
h = 1;
float ratio = 1.0f * w / h;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// هنا نعين احداثيات اوبنجل .. فمثلا لو كانت أبعاد النافذة هي 400*400
/*
y=200
|
|
|
x=-200 -----------(0,0)-------------- x=200
|
|
|
y=-200
*/
gluOrtho2D(-w/2,w/2,-h/2,h/2);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
float angle = 0;
void renderScene(void) {
angle+=0.1;
if(angle>360)
angle=0;
glClear(GL_COLOR_BUFFER_BIT );
glLoadIdentity();
glColor3f(1,1,0);
glPointSize(4);
// النقطة التي سيحدث الدوران حولها
glBegin(GL_POINTS);
glVertex2f(50,50);
glEnd();
glLoadIdentity();
// نتحرك الى تلك النقطة .. بالازاحة
glTranslatef(50,50,0);
// نقوم بالدوران
glRotatef(angle,0,0,1);
// نعمل ازاحة اضافية .. حتى نوسع قطر الدوران
glTranslatef(30,30,0);
glColor3f(1,0,0);
glBegin(GL_POINTS);
glVertex2f(0,0);
glEnd();
glutSwapBuffers();
glutPostRedisplay();
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(400,400);
glutCreateWindow("Rotation");
glutDisplayFunc(renderScene);
glutReshapeFunc(changeSize);
glutMainLoop();
return(0);
}
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri