PDA

View Full Version : سوال: تغيير مختصات مركز صفحه در opengl



Nil00 far
یک شنبه 03 دی 1391, 22:55 عصر
سلام دوستان
ميخوام بدونم چطور ميشه در محيط VS به زبان سي++ مختصات مركز صفحه رو از نقطه 0 و 0 به نقطه ديگه اي تغيير داد البته با دستورات opengl
اگه تابعي داره لطفا معرفي كنيد ممنون

Nil00 far
شنبه 09 دی 1391, 21:38 عصر
سلام دوستان انگار كسي نتونست جواب سوالمو بده به هر حال ممنونم از همگي من خودم جواب سوالمو پيدا كردم خواستم اينجا هم بذارم تا شايد كسي بخواد ازش استفاده كنه و به دردش بخوره :لبخندساده:
در opengl يك تابعي وجود داره به نام (GlTranslatef(x,y,z كه مختصات مركز صفحه رو تغيير ميده
اين تابع سي بعد داره كه بعد آخرش براي فضاي سه بعديه كه اگه واسه فضاي دو بعدي ميخوايين بايد مقدار z رو 0.0 قرار بديد

mahak006
شنبه 09 دی 1391, 22:00 عصر
سلام دوستان انگار كسي نتونست جواب سوالمو بده به هر حال ممنونم از همگي من خودم جواب سوالمو پيدا كردم خواستم اينجا هم بذارم تا شايد كسي بخواد ازش استفاده كنه و به دردش بخوره :لبخندساده:
در opengl يك تابعي وجود داره به نام (GlTranslatef(x,y,z كه مختصات مركز صفحه رو تغيير ميده
اين تابع سي بعد داره كه بعد آخرش براي فضاي سه بعديه كه اگه واسه فضاي دو بعدي ميخوايين بايد مقدار z رو 0.0 قرار بديد


این تابع فقط بره تغییر مرکز مختصات نیست . در واقع این تابع بره انتقال تصویر یا نقطه به کار می ره . به این ترتیب با قرار دادن این تابع هر مختصاتی که بعد از اون وارد بشه ُ با یه تابع انتقال به نقطه جدید خودش می ره .
اگه اون موقع سایت سر می زدم حتما بهت کمک می کردم .

Nil00 far
شنبه 09 دی 1391, 22:15 عصر
ممنونم من فقط واسه اين موضوع مي خواستم خيلي فوري بود ولي كسي جوابي نداد خيلي وقت بود گذاشته بودم :افسرده:

hodavafa
دوشنبه 02 بهمن 1391, 14:48 عصر
میشه یکی هم من رو راهنمایی کنه که چه جوری مختصات سه بعدی بدم به این تابع ؟
مثلا من میخوام 9 تا مکعب رو کنار هم بچینم ، بعد از رسم هر مکعب باید انتقالش بدم ولی نمی دونم چه جوری مختصات صفحه رو پیدا کنم ؟ :افسرده:

mahak006
دوشنبه 02 بهمن 1391, 22:50 عصر
این تابعی که گفتیم ، اصل کارش 3 بعدیه . فقط بره کاربرد های 2 بعدی z=0 قرار می دیم .
اگه با این تابع ، کارتون راه نمی افته ، سؤال رو دقیق تر بگید ، شاید تونستم کمکی کنم .

hodavafa
سه شنبه 03 بهمن 1391, 11:16 صبح
ممنون از توجهتون
من دارم سعی میکنم برنامه مکعب روبیک رو بنویسم
9تا مکعب رو میخوام کنار هم قرارشون بدم ولی نمی دونم با تابع translate چه جوری هر مکعب که می کشم رو منتقل کنم به نقطه دلخواهم . به صورت دقیق تر منظورم اینکه مختصات نقاط صفحه رو نمی تونم تجسم کنم و به عنوان پارامتر به تابع انتقال بدم .

برای رسم هر مکعب از حلقه زیر استفاده میکنم :

for (int i=0 ; i<9;i++)
{
glTranslatef(Matrix_T[i][1],Matrix_T[i][2],Matrix_T[i][3]);
miniSQUAD();
}

ماتریس مختصات تابع انتقال رو هم به صورت زیر تعریف میکنم :

float Matrix_T[9][3] ; //tranlate vectors

همین جور که مشخص ماتریس انتقال رو باید از قبل مقدار دهی کنم تا کار انتقال مکعب ها به درستی انجام بشه .

mahak006
پنج شنبه 05 بهمن 1391, 12:55 عصر
در ظاهر که نشون می ده درسته .
البته باید تابع miniSQUAD() رو بنویسید که چه چیزی هست . در ضمن اگه انتقال ها اشتباهه یا نمی دونید ماتریس انتقال چی می شه ، لازمه که بر اساس اندازه اضلاع مکعب ، عمل کنید . یعنی باید اندازه اضلاع باشه که بشه ماتریس انتقال رو بره هر مکعب مشخص کرد . نمی شه یه ماتریس واحد داشت که بدون دخیل بودن اندازه ضلع ، انتقال ها رو به درستی انجام بده .