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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2012, 13:51   #1
Truepak
 
Регистрация: 05.12.2012
Сообщений: 3
По умолчанию Компьютерная графика

Задание : повернуть треугольник ABC относительно оси Oz на угол alpha и относительно оси Oy на угол beta.

Входные данные: координаты точек A, B, C и углы поворота (в градусах).

Выходные данные: координаты нового треугольника, матрица преобразования.

Делаю на C# получилось реализовать поворот вокруг OZ используя формулу:

x = x*cos(a) - y*sin(a)
y = x*sin(a) + y*cos(a),

где а - угол поворота.



Скорее всего нужно переписывать код. Чтобы строило и поворачивало по матрицам. Не знаю как это сделать...

Поворот вокруг OZ(матрица 4х4):
cos -sin 0 0
sin cos 0 0
0 0 1 0
0 0 0 1

Поворот вокруг Oy(матрица 4х4):
cos 0 sin 0
0 1 0 0
-sin 0 cos 0
0 0 0 1
Truepak вне форума Ответить с цитированием
Старый 05.12.2012, 14:50   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

И в чем проблема?

Может в том, что Вы думаете, что записанный так поворот должен поворачивать фигуру относительно центра экрана?
Нет, вокруг верхнего левого угла. Притом хорошо, если это угол клиентской области Вашего окна, а не всего экрана.
s-andriano вне форума Ответить с цитированием
Старый 05.12.2012, 14:57   #3
Truepak
 
Регистрация: 05.12.2012
Сообщений: 3
По умолчанию

Думал над вариантом переноса треугольника в начало координат, там повернуть и перенести обратно.
Truepak вне форума Ответить с цитированием
Старый 05.12.2012, 17:51   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

И еще один момент:
сначала Вы вычисляете х, а потом - у, но при вычислении у Вы используете новое значение х, а нужно - старое.
Следует сначала запомнить значение х, затем вычислить новое, а затем вычислять у не по новому, а по запомненному х.
s-andriano вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компьютерная графика F1nk Помощь студентам 0 17.03.2011 14:47
Компьютерная графика на С++ Nikolai2010 Общие вопросы C/C++ 10 06.06.2010 19:04
Компьютерная графика на C# Mclaren Софт 0 02.06.2010 23:57
компьютерная графика Черная тень Паскаль, Turbo Pascal, PascalABC.NET 6 11.01.2009 07:29