void Reshape(int width, int height)
{if (width>height)
glViewport((width-height)/2,0,height,height);
else glViewport(0,(height-width)/2,width,width);
//glEnable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-10,10,-10,10);
glMatrixMode(GL_MODELVIEW);
}
void Display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
Ray myray;
myray.start.x=0;
myray.start.y=0;
myray.start.z=5;
for(float i=0;i<200;i++)
for(float j=0;j<200;j++)
{
Point t;
t.x=-10+i/20;
t.y=10-j/20;
t.z=0;
//FILE * f=fopen("output.txt","r");
myray.dir.x=t.x-myray.start.x; //задаю направление луча, думаю ошибка где-то здесь, хотя //может неправильно перевожу экранные координаты
myray.dir.y=t.y-myray.start.y;
myray.dir.z=t.z-myray.start.z;
//fprintf(f,"x=%f, y=%f, z=%f\n",myray.dir.x,myray.dir.y,myray.dir.z);
float A=sqr(myray.dir,myray.dir);
float B=sqr(myray.dir,myray.start);
float C=sqr(myray.start,myray.start)-1;
float D=B*B-4*A*C;
if (D>0)
printf("i=%d j=%d %f\n",i,j,D);
if (D<0)
{
glColor3f(0,0,0);
glRecti(i,j,i+1,j+1);
}
else
{
//float t1,t2;
//t1=(-B-sqrt(D))/(2*A);
//t1=(-B+sqrt(D))/(2*A);
glColor3f(1,1,1);
glRecti(i,j,i+1,j+1);
}
//glFlush();
}
glFlush();
}
Может кто знает, где можно найти книгу Лорен Хейни "Построение изображений метод слежения луча"?
Сообщение отредактировано: Lapp -