Всем привет. У меня возникла проблема, может кто то подскажет:
рисую, например, квадрат при помощи OpenGL и мене необходимо по заданным точкам(вводятся пользователем, допустим 5 точек) прорисовать движение квадрата по этим точка. Вопрос, как это сделать?
Я только сделал движение через одну точку, увеличивая ее координату.
P.S. OpenGL начал учить недавно. Так что не ругайтесь если че не так.
11 апреля 2009 в 0:02
translatePolugon (имя-то какое коварное – "полугон") занимается вовсе не транспонированием матрицы, а лишь рисованием и последующим изменением координат вершин.
в общем, всем читать красную книгу.
10 апреля 2009 в 19:03
писал лабу по графики решил извратится на openGL нужно было перемещать фигуру…
вот тебе кусок кода который это делает
//Начальные координаты фигуры
wcPt2D verts[3]={{110, 110}, {130, 140}, {150, 120}};
//Ф-ция транспонирования матрицы
//Входные параметры, коэфф. приращение к точке
void translatePolugon(GLfloat tx, GLfloat ty)
{
glColor3f(1.0,0.0,0.0);//Задание цвета линий
line(verts[0].X,verts[0].Y,verts[1].X,verts[1].Y);//Постороение линии
line(verts[0].X,verts[0].Y,verts[2].X,verts[2].Y);
line(verts[1].X,verts[1].Y,verts[2].X,verts[2].Y);
//Цикл приращения к конечным точкам, коэфф.
for (int k=0; k<3; k++)
{
verts[k].X+=tx;
verts[k].Y+=ty;
}
}
void displyaFcn (void)
{
glClear(GL_COLOR_BUFFER_BIT);//Очищается окно экрана
glPushMatrix();//Копирует верхнию матрицу стека и записывает копию во второюу позицию стека
translatePolugon(xInc,yInc);//Ф-ция Транспонирования матрици
glPopMatrix();//Удаляет врехнюю матрицу стека и помещается вторую матрицу в верх стека
glutSwapBuffers();//Обмен береднего и заднего буфера
glFlush();
}
Если что пиши в ЛС скинуть полностью код!
9 апреля 2009 в 23:02
что значит движение квадрата по точкам?
предположительно вы хотите следующее: увидеть, как квадрат перемещается от одной точки к другой. в этом случае вам требуется нарисовать несколько кадров (минимум – два, для начальной и конечной точек), в каждом из которых квадрат будет находиться в новом положении, которое определяется трансформациями (в вашем случае это банальное перемещение точки начала рисования – glTranslate), наложенными на вашу матрицу модели (или как там она называется). для каждого кадра вам потребуется сбросить матрицу модели, применить трансляцию, нарисовать свой квадрат, вывести на экран. поскольку точек много – по завершении перемещения начать перемещение к следующей точке.