Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2014, 10:17   #1
dykee
Пользователь
 
Регистрация: 09.10.2013
Сообщений: 78
По умолчанию Геометрические преобразования на плоскости

Здравствуйте, кто может помочь с такой темой, наработок нет, так как теории в глаза не видел, можно ли скинуть ссылки на теорию(толковые)+что б был пример с кодом на С++, без кода очень не ясно Или если у кого-то есть работы на подобие скиньте посмотреть)



Поворачивать любую фигуру, заданную замкнутой ломаной линией с яр-кой точкой на фигуре(многоугольник, похожий на круг, с ярким"пятном" на
окружности), вокруг центра фигуры на угол r (30 градусов) по часовой стрел-ке, сдвигая фигуру так, чтобы она перемещалась по диагонали экрана, и
незначительно увеличивая размеры фигуры в а раз (1.2 раза) относи-тельно своего центра, но так, чтобы пятно, вращаясь вместе с фигурой, оставалось на прежнем расстоянии от ее центра. Картина должна напо-минать катящийся с горы нарастающий снежный ком, а пятно напоми-нать о первоначальных размерах кома. Нарисовать гору и остановить ком в углу экрана.
dykee вне форума Ответить с цитированием
Старый 28.10.2014, 10:30   #2
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Примерно понятно, но есть много вопросов. К примеру, как определить центр произвольного многоугольника?

8Observer8 вне форума Ответить с цитированием
Старый 28.10.2014, 10:51   #3
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Надо придумать, как заставить пользователя рисовать "многоугольник, похожий на круг"

Пользователь запускает приложение и он сам рисует этот многоугольник? Или приложение ему генерирует, какой-то правильный многоугольник?

Давайте начнём со второго. Пусть изначально у нас есть правильный многоугольник, то есть в него можно вписать окружность (или описать вокруг него)

Тогда следующий вопрос. Я не понимаю этой фразы:

Цитата:
вокруг центра фигуры на угол r (30 градусов) по часовой стрел-ке, сдвигая фигуру так, чтобы она перемещалась по диагонали экрана
8Observer8 вне форума Ответить с цитированием
Старый 28.10.2014, 11:42   #4
8Observer8
Старожил
 
Регистрация: 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.
8Observer8 вне форума Ответить с цитированием
Старый 28.10.2014, 12:30   #5
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

По поводу с чего начать и литературы

Начать предлагаю с пошаговой инструкции: Пошаговая инструкция введения в OpenGL на Qt

Литература:
- OpenGL Суперкнига (диск к книге)
- Beginning OpenGL Game Programming, 2nd edition, 2009 (book+code)

P.S. Ко всем примерам есть exe-шники. Рекомендую сразу позапускать их, чтобы познакомится с тем, что умеют примеры
8Observer8 вне форума Ответить с цитированием
Старый 28.10.2014, 18:43   #6
dykee
Пользователь
 
Регистрация: 09.10.2013
Сообщений: 78
По умолчанию

Я работаю в Visual Studio( Windows Form)
dykee вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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