![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 09.10.2013
Сообщений: 78
|
![]()
Здравствуйте, кто может помочь с такой темой, наработок нет, так как теории в глаза не видел, можно ли скинуть ссылки на теорию(толковые)+что б был пример с кодом на С++, без кода очень не ясно
![]() Поворачивать любую фигуру, заданную замкнутой ломаной линией с яр-кой точкой на фигуре(многоугольник, похожий на круг, с ярким"пятном" на окружности), вокруг центра фигуры на угол r (30 градусов) по часовой стрел-ке, сдвигая фигуру так, чтобы она перемещалась по диагонали экрана, и незначительно увеличивая размеры фигуры в а раз (1.2 раза) относи-тельно своего центра, но так, чтобы пятно, вращаясь вместе с фигурой, оставалось на прежнем расстоянии от ее центра. Картина должна напо-минать катящийся с горы нарастающий снежный ком, а пятно напоми-нать о первоначальных размерах кома. Нарисовать гору и остановить ком в углу экрана. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Примерно понятно, но есть много вопросов. К примеру, как определить центр произвольного многоугольника?
![]() |
![]() |
![]() |
![]() |
#3 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Надо придумать, как заставить пользователя рисовать "многоугольник, похожий на круг"
Пользователь запускает приложение и он сам рисует этот многоугольник? Или приложение ему генерирует, какой-то правильный многоугольник? Давайте начнём со второго. Пусть изначально у нас есть правильный многоугольник, то есть в него можно вписать окружность (или описать вокруг него) Тогда следующий вопрос. Я не понимаю этой фразы: Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Вот как мне видится ситуация. Перед тем как рисовать, вам нужно научиться создавать окно. Это может быть: Qt, WinAPI, glut, Windows Forms, MFC, Builder и т.д. Я предпочитаю Qt
Рисовать вы можете десятками разных средств из библиотек выше. Но есть, к примеру, такая проблема: как вы будете поворачивать объект? как будете его перемещать? как будете масштабировать? Самый простой способ для перемещения фигуры - это умножить векторА её вершин на матрицу перемещения. Вектор вершины начинается в начале координат и заканчивается в точке вершины. Для того чтобы повернуть фигуру нужно умножить векторА её вершин на матрицу поворота. Для того чтобы масштабировать фигуру нужно умножить векторА её вершин на матрицу масштабирования Я пока не знаю деталии того, как строятся матрицы перемещения, поворота, масштабирования, потому что в OpenGL для этого есть функции обёртки над этими операциями: void glTranlatef( float x, float y, float z) - трансляция (перемещение) фигуры на x, y, z void glRotatef( float angle, float x, float y, float z ) - поворот фигуры на угол angle вокруг вектора x, y, z (вектор идёт от начала координат в точку x, y, z) void glScalef( float x, float y, float z ) - масштабирование, где x, y, z - это масштабные коэффициенты по x, y, z Например, glScalef( 2.0f, 1.0f, 1.0f ) - растянет в два раза фигуру по x (фигуру, которая будет рисоваться после вызова glScalef) В DirectX, я думаю, тоже есть такие функции. Если вы будете рисовать с помощью других средств, которые не поддерживают такие операции как трансляция, поворот, масштабирование, то вам нужно изучить соответствующие разделы линейной алгебры и самому научиться строить матрицы трансляции, поворота и масштабирования Последний раз редактировалось 8Observer8; 28.10.2014 в 11:59. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
По поводу с чего начать и литературы
Начать предлагаю с пошаговой инструкции: Пошаговая инструкция введения в OpenGL на Qt Литература: - OpenGL Суперкнига (диск к книге) - Beginning OpenGL Game Programming, 2nd edition, 2009 (book+code) P.S. Ко всем примерам есть exe-шники. Рекомендую сразу позапускать их, чтобы познакомится с тем, что умеют примеры |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 09.10.2013
Сообщений: 78
|
![]()
Я работаю в Visual Studio( Windows Form)
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C++ Афинные Преобразования на плоскости С ГРАФИКОЙ | Levons | Помощь студентам | 0 | 03.06.2013 00:49 |
C++ Афинные Преобразования на плоскости С ГРАФИКОЙ | Levons | Помощь студентам | 0 | 25.05.2013 19:57 |
Геометрические преобразования в OpenGL | alhon | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 1 | 03.07.2010 07:07 |
геомГетрические преобразования на плоскости | netbioz | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 02.06.2009 01:50 |
геометрические преобразования на плоскости(Графика в Паскале) | netbioz | Помощь студентам | 3 | 30.05.2009 14:59 |