![]() |
|
|
![]()
|
|
| Чих_и_Пых_Пых(MySql_and_PHP) |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 20.4.2005 Репутация: нет Всего: 2 |
Помогите, пожалуйста.
Нужна следующая функция: Дано: четыре координаты четырёхугольника, угол поворота. На выходе: четыре координаты повёрнтого четырёхугольника. Спасибо. Добавлено @ 18:19 Интересно, я не регистрировался, а имя форум мне сам присвоил что ли? |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Поворачивать как будем? Относительно какой точки? |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Здесь самое правильное (сам программировал геометрию) расчитать матрицу оператора поворота. Тебе даны точки (по три координаты) и точка, вокруг которой поворачивать. Сначала каждой точке сопоставляешь радус-вектора (от точки поворота к точке, которую вертеть).
Теперь тебе могут быть заданы углы. Углы вращения надо задать вокруг осей, совпадающих с векторами базиса, перенесенными в точку вращения ( вектора базиса - это те, через которые ты выразил координаты радиус-векторов). Скорее всего i, j и k :-) . Теперь так. Если ось вращения x (т.е. через вектор i). То свои вектора ты домножаешь на следующую матрицу: | 1 0 0 | | 0 cos f sin f | | 0 sin f cos f | Примени эту матрицу к какой-нить точке и посмотри, куда она вращает, мне сейчас лень думать. Потом, после того как ты повернул вокруг оси x, ты можешь домножить на другую матрицу примерно такого же вида тока единица теперь будет стоять на месте той координаты, вокруг базисного вектора которой будет происходить вращение. Можно на листочке перемножить две такие матрицы (с двумя разными углами) и получить конечную матрицу. Вот примерно в таком духе и удобно работать с вращениями. Если у тебя двухмерное пространство, то все еще проще :-) . |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: нет Всего: 17 |
Извините, забыл. Зарегистрироваться. Это я. Пробуй, считай
|
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Я вот тута поворатами точек занимался, почитайте...
http://forum.vingrad.ru/index.php?showtopic=22163 -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Ага, не лишне только добавить, что порядок поворота вокруг осей важен. Сменишь порядок - получишь совершенно другое решение |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
а кто-нибудь может выложить готовую функцию типа (на Delphi например)
type TPoints: array[0..3] of TPoint; function Rotate (Source: TPoints; Angle: Integer): TPoint; var ... begin ... end; |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Вот например VB...
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| yaja |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 30.3.2005 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Наверное, матрица поворота следующая | 1 0 0 | | 0 cos f -sin f | | 0 sin f cos f | (во всяком случае для плоскости она точно | cos -sin| | sin cos|) Код cardinal только подтверждает это |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |