Как поворачивать объект вокру конкретной ручки (grip-point) ?

Автор Тема: Как поворачивать объект вокру конкретной ручки (grip-point) ?  (Прочитано 6403 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн knightrockerАвтор темы

  • ADN OPEN
  • Сообщений: 31
  • Карма: 1
Здравствуйте.


Среда: MSVS 2015, Autocad 2017, Platform х64
Проект находится в архиве MyProject-Center-Point.zip
Проект подчистил от комментариев, и на сколько пока могу сделал код более читабельным.
Если к классу есть замечания, уточняйте какие, постараюсь внести изменения.

Описание: В классе Bolt я завёл точку m_ptCntr - центр объекта и точку m_ptEdge - точка посередине резьбы на её конце.
Вопрос: Я хотел написать функцию rotateAroundPt(), которая при нажатии на 7-ой грип у объекта осуществляла бы поворот всего объекта вокруг точки центра m_ptCntr, а при нажатии на 8-ой грип осуществляла бы поворот всего объекта вокруг точки m_ptEdge.
Пока что поэкспериментировал с изменением позиций векторов направления m_vecU и m_vecV, но безуспешно.
Само собой, пока хотел написать сначала одну функцию, поворачивающую объект хотя бы вокруг точки m_ptEdge, чтобы уже после посмотреть, можно ли эту функцию написать на столько универсально, чтобы она крутила объект, вокруг любой точки, которую ей передашь, или же придётся писать 2 отдельные функции для поворота вокруг каждой точки соответственно.

Отмечено как Решение knightrocker 10-07-2018, 16:56:02

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Код - C++ [Выбрать]
  1. void Bolt::rotateAroundPt(AcGeVector3d offset, AcGePoint3d p)
  2. {
  3.   AcGeVector3d zDir = m_vecU.crossProduct(m_vecV);
  4.   double ang = m_vecU.angleTo(offset, zDir);
  5.   AcGeMatrix3d mat; mat.setToRotation(ang, zDir, p);
  6.   transformBy(mat);
  7. }

P.S.: Из проекта смело можешь выкинуть файлы squarent.cpp и squarent.h. Файл ArxProject3.aps передавать не нужно.

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн knightrockerАвтор темы

  • ADN OPEN
  • Сообщений: 31
  • Карма: 1
Большое спасибо

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Большое спасибо
Пожалуйста. У нас есть еще [+] и Решение.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение