Russian Qt Forum
Ноябрь 23, 2024, 11:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Повернуть отрезок  (Прочитано 19135 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Октябрь 06, 2013, 19:05 »

Добрый день

Есть отрезок в трехмерном пр-ве заданный 2-мя точками p0(x, y, z) и p1(x, y, z). Требуется повернуть отрезок на заданный угол alpha вокруг оси проходящей через точку p0 и имеющей направление dir(x. y, z).

Ну что, пацаны, опять будет "молчание ассистентских ягнят" - или есть смелые?  Улыбающийся

Спасибо
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Октябрь 06, 2013, 20:25 »

http://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula вроде оно
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Октябрь 06, 2013, 21:56 »

Никогда этого не видел. Прочитав впал в просрацию/меланхолию - потому что как превратить это в реальный код = ноль мыслей  Улыбающийся

Боже мой, ну ведь здесь всего три значения (ну пусть каждое вектор), значит и решение должно быть нормальным, простым. Мысли?
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #3 : Октябрь 06, 2013, 22:29 »

Задачка плюшевая..

Предлагаю обобщить алгоритм на случай произвольной размерности)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #4 : Октябрь 06, 2013, 22:32 »

Задачка плюшевая..
Зачем вы так.
Это аффинные преобразование... одна из немногих тем где уважаемый гуру может показать себя. Подмигивающий
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Октябрь 06, 2013, 22:42 »

Задачка плюшевая..

Предлагаю обобщить алгоритм на случай произвольной размерности)
Ну флаг Вам в руки - с удовольствием послушаю для 4 размерностей (4-я = время)

Это аффинные преобразование... одна из немногих тем где уважаемый гуру может показать себя. Подмигивающий
Мне остается только сожалеть что мои лавры не дают Вам покоя  Улыбающийся Вот удобный случай - я никогда не понимал что значит "аффинные" (Афтна - богиня проституции). Объясните пожвлуйста куда здесь керосин заливать?  Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #6 : Октябрь 06, 2013, 22:48 »

Мне остается только сожалеть что мои лавры не дают Вам покоя  Улыбающийся
А кто говорил про лавры? Вы сами? Улыбающийся

Вот удобный случай - я никогда не понимал что значит "аффинные" (Афтна - богиня проституции). Объясните пожвлуйста куда здесь керосин заливать?  Улыбающийся
Так вы в википедию зайдите, там все на пальцах объясняют. Прямо в первом предложении. Улыбающийся
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Октябрь 06, 2013, 22:55 »

Никогда этого не видел. Прочитав впал в просрацию/меланхолию - потому что как превратить это в реальный код = ноль мыслей  Улыбающийся
эта формула вызывает сложности в реализации?


или в чем загвоздка?
Цитировать
Афтна - богиня проституции
может Афродита? да и отсутствие второй буквы «ф» тоже как бы намекает.
« Последнее редактирование: Октябрь 06, 2013, 22:58 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Октябрь 06, 2013, 23:03 »

А кто говорил про лавры? Вы сами? Улыбающийся
Агааа  Улыбающийся

Так вы в википедию зайдите, там все на пальцах объясняют. Прямо в первом предложении. Улыбающийся
По-моему там написано полное фуфло  Улыбающийся Если не так, прошу показать на живом примере

Код
C++ (Qt)
QVector3D p0(0, 0, 0);
QVector3D p1(0.4, 0,5, 0.7);
QVector3D dir(0.707, 0,707, 0.707);
alpha = M_Pi / 6 (30 degrees)
 
Решение фыркркающего знатока(ов)?  Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Октябрь 06, 2013, 23:06 »

эта формула вызывает сложности в реализации?

Конечно вызывает - я даже не знаю с чего начать
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #10 : Октябрь 06, 2013, 23:10 »

По-моему там написано полное фуфло  Улыбающийся Если не так, прошу показать на живом примере
Пожалуйста, я всегда готов помочь, даже в таком простом вопросе:
Цитировать
Аффи́нное преобразование (от лат. affinis — соприкасающийся, близкий, смежный)

И это... гоните от себя эти мысли про проституток... Лучше почитайте про что-то еще, кроме аффинных преобразований.

Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #11 : Октябрь 06, 2013, 23:20 »

эта формула вызывает сложности в реализации?

Конечно вызывает - я даже не знаю с чего начать
вектор — p1-p0, синус/косинус — стандартными функциями, сложение векторов и умножение вектора на скаляр — думаю можно не объяснять, скалярное произведение — сумма произведений компонент, векторное произведение — . даже если в проекте не используется ни одна математическая библиотека, эти операции пишутся за 5 минут (действительно нужно блеснуть познаниями программирования?). или я чего-то в корне не понимаю? вон у QVector3D даже есть статические методы для вычисления произведений.
« Последнее редактирование: Октябрь 06, 2013, 23:23 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #12 : Октябрь 06, 2013, 23:27 »

Аффи́нное преобразование (от лат. affinis — соприкасающийся, близкий, смежный)
И это... гоните от себя эти мысли про проституток... Лучше почитайте про что-то еще, кроме аффинных преобразований.
Ну одно другому не мешает, код повортота предъявляем, а не только базарим
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #13 : Октябрь 06, 2013, 23:36 »

Ну одно другому не мешает, код повортота предъявляем, а не только базарим
Вот и я про то-же. А то вы только базарите.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #14 : Октябрь 06, 2013, 23:43 »

Код
C++ (Qt)
   QVector3D p0(0, 0, 0);
   QVector3D p1(0.4, 0.5, 0.7);
   QVector3D dir(0.707, 0.707, 0.707);
   double alpha = M_PI / 6;
 
   QVector3D v = p1 - p0, k = dir - p0;
   QVector3D v_rot = v * cos(alpha) + QVector3D::crossProduct(k, v) * sin(alpha) + QVector3D::dotProduct(k, v) * (1 - cos(alpha)) * k;
   qDebug() << v_rot; // QVector3D(0.524257, 0.43411, 0.748715)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.093 секунд. Запросов: 23.