ورود

View Full Version : استفاده از کیبورد



mohamad1370
جمعه 24 آذر 1391, 22:01 عصر
مشکل این برنامه چیه هرکاری می کنم نمی تونم افزایش زاویه رو توسط کیبورد ببینم


#include <windows.h>
#include <GL/GL.H>
#include <GL/GLU.H>
#include <GL/glut.h>
#include <iostream>
using namespace std;

GLdouble Angle = 45.0 ,Nearsen = 0.1;
GLvoid display()
{
glClearColor(0.5,0.5,0.5,1.0);
glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//glFrustum(-0.1,0.1, -0.1*480/640,0.1*480/640, 0.1,10);
gluPerspective(45.0,640/480,0.1,20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glBegin(GL_TRIANGLES);
glColor3f(0,0,1);
glVertex3f(-0.4,-0.6,-1);
glVertex3f(0.4,-0.6,-1);
glVertex3f(0.4,-0.1,-1);
glVertex3f(0.4,-0.1,-1);
glVertex3f(-0.4,-0.1,-1);
glVertex3f(-0.4,-0.6,-1);
glColor3f(1,0,1);
glVertex3f(-0.4,-0.1,-1);
glVertex3f(0.4,-0.1,-1);
glVertex3f(0.3,0,-2);
glVertex3f(0.3,0,-2);
glVertex3f(-0.3,0,-2);
glVertex3f(-0.4,-0.1,-1);
glEnd();
glutSwapBuffers();
glutPostRedisplay();

}

GLvoid getKeuboard(unsigned char Key,int x,int y)
{
switch(Key)
{
case 'c':
Angle += 1.0;
cout << "Angle+="
<< Angle << endl;
break;
case 'v':
Angle -= 1.0;
cout << "Angle-="
<< Angle << endl;
break;

}
}

int main (int argc ,char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutInitWindowSize(640, 480);
glutCreateWindow("Quad");
glutDisplayFunc(display);
glutKeyboardFunc(getKeuboard);
glutMainLoop();
}

amin1softco
شنبه 25 آذر 1391, 08:04 صبح
افزایش چه زاویه ایی مد نظر شماست ؟
gluPerspective(Angle,640/480,0.1,20.0);
شما بهتره برای چرخش دوربین از تابع gluLookAt استفاده کنید.

mohamad1370
شنبه 25 آذر 1391, 17:00 عصر
ممنون داشتم به جوابتون نگاه می کردم باز متوجه نشدم چه اشتباهی انجام دادم :لبخند:

amin1softco
شنبه 25 آذر 1391, 17:48 عصر
منم راستش داشتم به سوال شما نگاه می کردم منظورتون را متوجه نشدم !!!
اگر اون خط را جایگزین کنید با کلید های c,v می تونید fovy را تغییر بدید بیشتر بدرد کوچیک و بزرگ کردن می خوره ولی برای زاویه باید از اون تابعی که گفتم استفاده کنید.

mohamad1370
یک شنبه 26 آذر 1391, 18:29 عصر
تابع gluLookAt نه تا تا پارامتر می گیره ولی دقیقاً متوجه نشدم سه پارامتر آخر کارشون چیه ؟در مورد این سه تا یه توضیح میدید
منظور از بردار بالا چیه؟

amin1softco
یک شنبه 26 آذر 1391, 22:27 عصر
شما یکسری برنامه آموزشی توابع در قسمت برنامه ها و مثال های opengl بود اونا رو بگیر می تونی مقادیر را کم و زیاد کنید و نتیجه را مشاهده کنید.
ولی اینجور فرض کنید که دوربین به مرکزیت خودش بچرخه مثلاً پایه دوربین را بچرخونی به اطراف با این سه تا پارامتر آخر مشخص می شه.
http://www.gamedev.net/topic/421529-manual-alternative-to-glulookat-/

mohamad1370
دوشنبه 27 آذر 1391, 20:08 عصر
یعنی اگه دوربین دنیای واقعی در نظر بگیریم سه پارامتر اول میشه پایه دوربین و سه پارامتر آخر خود دوربین یعنی با سه پارامتر آخر فقط می تونیم دید محدودی داشته باشیم و اگه بخوایم بچرخیم و پشت جسم رو ببینیم باید دوربین رو با پایه جابه جا کنیم ،سه پارامتر اول :لبخند: