singlepost

Движение объекта по точкам(OpenGl).Подскажите. << На главную или назад  

Всем привет. У меня возникла проблема, может кто то подскажет:
рисую, например, квадрат при помощи OpenGL и мене необходимо по заданным точкам(вводятся пользователем, допустим 5 точек) прорисовать движение квадрата по этим точка. Вопрос, как это сделать?
Я только сделал движение через одну точку, увеличивая ее координату.

P.S. OpenGL начал учить недавно. Так что не ругайтесь если че не так.

3 ответов в теме “Движение объекта по точкам(OpenGl).Подскажите.”

  1. 3
    Леонид Максимов ответил:

    translatePolugon (имя-то какое коварное – "полугон") занимается вовсе не транспонированием матрицы, а лишь рисованием и последующим изменением координат вершин.

    в общем, всем читать красную книгу.

  2. 2
    Анатолий Котелевец ответил:

    писал лабу по графики решил извратится на 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();
    }
    Если что пиши в ЛС скинуть полностью код!

  3. 1
    Леонид Максимов ответил:

    что значит движение квадрата по точкам?

    предположительно вы хотите следующее: увидеть, как квадрат перемещается от одной точки к другой. в этом случае вам требуется нарисовать несколько кадров (минимум – два, для начальной и конечной точек), в каждом из которых квадрат будет находиться в новом положении, которое определяется трансформациями (в вашем случае это банальное перемещение точки начала рисования – glTranslate), наложенными на вашу матрицу модели (или как там она называется). для каждого кадра вам потребуется сбросить матрицу модели, применить трансляцию, нарисовать свой квадрат, вывести на экран. поскольку точек много – по завершении перемещения начать перемещение к следующей точке.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.