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

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

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

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Март 19, 2013, 11:53 »

-QVector3D::dotProduct(nor, vec[0]) - тоже получается расстояние в функции QVector4D(nor, -QVector3D::dotProduct(nor, vec[0]))?
Уравнение плоскости ax + by + cz + d = 0;
Отсюда d = -(ax + by + cz);
В правой части скалярное произведение нормали к плоскости (a, b, c) на точку лежащую на ней (x, y, z)

И еще хочу поинтересоваться: в чем смысл трех вложенных циклов for?
В том что (судя по картинкам в Вике) отрезки Миллера могут задавать множество (семейство) секущих плоскостей, напр (1, 1, 2) уже 2 плоскости
Записан
Skrypnyk
Гость
« Ответ #16 : Март 19, 2013, 21:14 »

Ага, спасибо, Ваша правда)).

А по поводу индексов Миллера, то это величины, обратные к отрезкам, отсекаемым плоскостью на координатных осях. Например, если мы запишем плоскость (2, 2, 2) используя индексы Миллера в круглых скобках, то мы обозначим единственную плоскость, которая пересекает оси в точках (1/2; 0; 0), (0; 1/2; 0) и (0; 0; 1/2). Если же записать {2, 2, 2} в фигурных скобках, тогда речь идет о семействе плоскостей (они являются семейством в силу симметрии): (-2, -2, -2), (-2, 2, -2), (-2, -2, 2)... (2, 2, 2).

Поэтому 3 вложенных цикла, я полагаю, можно убрать.

Да, еще хотелось бы заметить, что нормаль к плоскости (2, 2, 2) - это вектор [2, 2, 2]. В последнем случае 3 числа в квадратных скобках обозначают вектор с началом в точке (0; 0; 0) и концом в точке (2; 2; 2).
« Последнее редактирование: Март 19, 2013, 21:21 от Skrypnyk » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #17 : Март 20, 2013, 12:45 »

А по поводу индексов Миллера, то это величины, обратные к отрезкам, отсекаемым плоскостью на координатных осях. Например, если мы запишем плоскость (2, 2, 2) используя индексы Миллера в круглых скобках, то мы обозначим единственную плоскость, которая пересекает оси в точках (1/2; 0; 0), (0; 1/2; 0) и (0; 0; 1/2). Если же записать {2, 2, 2} в фигурных скобках, тогда речь идет о семействе плоскостей (они являются семейством в силу симметрии): (-2, -2, -2), (-2, 2, -2), (-2, -2, 2)... (2, 2, 2).
А я чего-то, бегло глянув Вику, подумал не так - ну Вам виднее  Улыбающийся

Да, еще хотелось бы заметить, что нормаль к плоскости (2, 2, 2) - это вектор [2, 2, 2]. В последнем случае 3 числа в квадратных скобках обозначают вектор с началом в точке (0; 0; 0) и концом в точке (2; 2; 2).
Тогда еще проще получается - сразу готовая нормаль и точка (напр cntr + (1/2, 0, 0)).  Займитесь визуализацией исходных точек и тех что лежат на секущих плоскостях. Считайте все в реальных/исходных координатах (в тех что задавали точки) и получайте в пикселях только перед выводом. A когда дело дойдет до разворота плоскости - я Вам матрицу нарисую.

Edit: нормаль готова "прямо из отрезков" только если оси ортогональны, иначе придется все равно находить 3 точки как выше
« Последнее редактирование: Март 20, 2013, 12:48 от Igors » Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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