Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 3D вращение, 3D вращение 
:(
    Опции темы
Gigabyte
Дата 20.10.2005, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Студент-халявщик
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 1.11.2004
Где: ПЫтер

Репутация: нет
Всего: 3



Подскажите формулу по которой можно найти координаты 3d тела при вращение если известен угол на которое тело было повернуто(центр вращения-цент фигуры)


--------------------

user posted image
user posted image
PM MAIL ICQ   Вверх
maxim1000
Дата 20.10.2005, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



тут еще надо знать вокруг чего тело вращалось...


--------------------
qqq
PM WWW   Вверх
Gigabyte
Дата 20.10.2005, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Студент-халявщик
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 1.11.2004
Где: ПЫтер

Репутация: нет
Всего: 3



тело вращается вокруг центра фигуры(т.е. вокруг своей оси)

Цитата
(центр вращения-цент фигуры)

я же написал


--------------------

user posted image
user posted image
PM MAIL ICQ   Вверх
maxim1000
Дата 20.10.2005, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



ох... представим себе человека
когда он стоит на земле, он может крутиться, например, направо - в горизонтальной плоскости, т.е. вокруг вертикальной оси
когда это какой-то гимнаст на кольцах, он может крутиться в вертикальной плоскости (т.е. вокруг горизонтальной оси)
и в том, и в другом случае они вертятся вокруг своего центра...


--------------------
qqq
PM WWW   Вверх
Dr.Wisdom
Дата 20.10.2005, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 6.1.2005

Репутация: нет
Всего: 0



Вообще имелось ввиду вокруг оси или точки.

Это точно было в курсе аналитической геометрии. Не помню убейте меня не помню. Учебник - погорелов. (или проскуряков) в общем аналитическая геометрия. там простое преобразование матриц.

А сточки зрения матана то напиши преобразование плоскости в сферу и бери любую функцию на плоскости. После преобразования произоыдет поворот. Вообще поворот, случайное движение.... я отвлекся.

Вращение вокруг оси - перемещение в плоскости ей перпендикулярной. Плоскость перпендикулярная вектору ..... э-э-э-э-х не помню простая формула.
--------------------
VIVA LA RESISTANCE
PM MAIL   Вверх
Gigabyte
Дата 20.10.2005, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Студент-халявщик
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 1.11.2004
Где: ПЫтер

Репутация: нет
Всего: 3



у меня есть формула вращения двух мерного тела вокруг оси

x = xo + r * cos(alpha + beta)
y = yo + r * sin(alpha + beta)

xo,yo - центр поворота,
r - длина отрезка OM
O - это центр поворота,
M - некая точк
угол alpha между отрезком OM и горизонталью
beta-угол поворота

а мне нужно вращать тело вокруг центра(задаётся 3 угла и координаты точки надо найти новые координаты точки)



--------------------

user posted image
user posted image
PM MAIL ICQ   Вверх
DENNN
Дата 20.10.2005, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Очень мне это формулировка нравится:

Цитата(Gigabyte @ 20.10.2005, 14:26)
а мне нужно вращать тело вокруг центра

Цитата(Gigabyte @ 20.10.2005, 13:54)
тело вращается вокруг центра фигуры


При такой формулировке вращать можно как угодно и "куда" угодно - все будет верно smile

Это сообщение отредактировал(а) DENNN - 20.10.2005, 16:12
PM ICQ   Вверх
S.A.P.
Дата 20.10.2005, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: нет
Всего: 71



Gigabyte может тебе нужно найти новые координаты вершин какой - нибудь фигуры? Потому что если фигура вращается вокруг своего центра, то координаты центра не меняются smile .
PM MAIL   Вверх
yaja
Дата 22.10.2005, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 30.3.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Ну наверное что-то вроде

a - a0 = r * A

A = cos(y) -sin(y) 0
sin(y) cos(y) 0
0 0 1

такая вот матрица, если вращать по по z. аналогично для осей х и у.
Если что-то другое, то плохо дело smile (склероз)
Можно канечно представить, как композицию двух поворотов, но есть формула для поворота вокруг произвольной оси работающая быстрее
PM MAIL   Вверх
cardinal
Дата 22.10.2005, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 5
Всего: 99



Почитайте что я делал:
http://forum.vingrad.ru/index.php?showtopic=22163


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Gigabyte
Дата 24.10.2005, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Студент-халявщик
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 1.11.2004
Где: ПЫтер

Репутация: нет
Всего: 3



cardinal напиши пожалуйста формулу которой ты пользовался в своём примере


--------------------

user posted image
user posted image
PM MAIL ICQ   Вверх
cardinal
Дата 24.10.2005, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 5
Всего: 99



Цитата(Gigabyte @ 24.10.2005, 10:36)
напиши пожалуйста формулу которой ты пользовался в своём примере

Тут в коде все формулы есть:
http://forum.vingrad.ru/index.php?showtopi...ndpost&p=150469
А ты напиши откуда ты smile Просто интересно...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
cardinal
Дата 24.10.2005, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 5
Всего: 99



А вот это формулы для того, чтобы поворачивать одновременно на углы альфа, бета и гамма вокруг всех осей. То есть не на определенный угол вокруг оси, например x, а вокруг нескольких сразу. Это вырезка из кода как я заметил не очень здорово прокомметирована поэтому, если есть вопросы то пиши…
Код

    angleX = angleX * PI / 180  ' rad from angle for x axis
    angleY = angleY * PI / 180  ' rad from angle for y axis
    angleZ = angleZ * PI / 180  ' rad from angle for z axis
    For i = 0 To object.pointsq
    
        DrawPoint object.pointCol(i), object.nocolor
        
        object.pointCol(i).X = object.pointCol(i).X - object.center.X
        object.pointCol(i).Y = object.pointCol(i).Y - object.center.Y
        object.pointCol(i).Z = object.pointCol(i).Z - object.center.Z
              
        newpoint.X = object.pointCol(i).X * _
                     Cos(angleZ) * Cos(angleY) _
                     - object.pointCol(i).Z * _
                     Cos(angleZ) * Sin(angleY) _
                     + object.pointCol(i).Y * _
                     Sin(angleZ)
        newpoint.Y = object.pointCol(i).X * _
                    (-Cos(angleX) * Sin(angleZ) * Cos(angleY) _
                     + Sin(angleX) * Sin(angleY)) _
                     + object.pointCol(i).Z * _
                     (Cos(angleX) * Sin(angleZ) * Sin(angleY) _
                     + Sin(angleX) * Cos(angleY)) _
                     + object.pointCol(i).Y * _
                     Cos(angleX) * Cos(angleZ)
        newpoint.Z = object.pointCol(i).X * _
                    (Sin(angleX) * Sin(angleZ) * Cos(angleY) _
                     + Cos(angleX) * Sin(angleY)) _
                     + object.pointCol(i).Z * _
                    (-Sin(angleX) * Sin(angleZ) * Sin(angleY) _
                     + Cos(angleX) * Cos(angleY)) _
                     - object.pointCol(i).Y * _
                     Sin(angleX) * Cos(angleZ)
                  
        newpoint.X = newpoint.X + object.center.X
        newpoint.Y = newpoint.Y + object.center.Y
        newpoint.Z = newpoint.Z + object.center.Z
        
        object.pointCol(i) = newpoint
        DrawPoint object.pointCol(i), object.color
        DoEvents    ' allow other processes
    Next
    RotatePObject3D = object



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
DENNN
Дата 25.10.2005, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Аффинные преобразования вас спасут.
PM ICQ   Вверх
Gigabyte
Дата 25.10.2005, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Студент-халявщик
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 1.11.2004
Где: ПЫтер

Репутация: нет
Всего: 3



Цитата
А ты напиши откуда ты  Просто интересно...

в смысле откуда из какого города? С-Пб!!!!


--------------------

user posted image
user posted image
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0554 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.