Форум программистов, компьютерный форум, киберфорум
Наши страницы
Алгоритмы
Войти
Регистрация
Восстановить пароль
 
Крашеная
140 / 25 / 5
Регистрация: 06.08.2018
Сообщений: 77
Завершенные тесты: 1
1

Дуга окружности в 3d пространстве. Определение интервала по каждой из осей

22.11.2018, 17:09. Просмотров 404. Ответов 5

Имеется:
3d пространство. В нем окружность. Знаем нормаль плоскости в которой лежит окружность и координаты центра окружности.
Меня интересует лишь дуга от точки "начало" до точки "конец" на этой окружности. 3d координаты этих точек тоже сть.
Я рассматриваю за раз одну из осей и определяю минимальное и максимальное значение.

Если у меня не дуга, а окружность - все просто. Радиус и угол между нормалью и рассматриваемой осью позволяют определить две экстримальные точки на этой окружности, точнее не точки, а их координаты вдоль рассматриваемой оси. (Составлять и решать уравнение в 3d для определения остальных координат этих точек не хочется и, кажется, не обязательно)

В случае дуги надо понять - лежат ли эти экстримальные точки между "началом" и "концом" дуги.
Как это сделать наиболее элегантным способом, чтоб без громоздких вычислений?
Подкиньте идей, плз!
Что-то туплю и никак не могу понять как попроще алгоритм построить...

Пока на ум приходит что-нибудь типа векторного произведения вектора из "центра на начало дуги" с направлением оси и "из центра на конец дуги". Если они одного знака, то "экстремальные" точки шобще не нужны, а надо брать (эту) координату начала дуги и конча дуги как мин и макс значения вдоль этой координаты... дальше туплю
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2018, 17:09
Ответы с готовыми решениями:

ООП - Дуга Окружности (Графика)
Создать Объект - Дугу Окружности. Написать Программу Движения Фигуры По Экрану, не выходя за его...

При изменении интервала график изменяется, но значения координатных осей нет
Помогите, пожалуйста, график он строит от корня, но значения координатных осей не меняет, но я не...

Составьте уравнение окружности, касающейся осей x и y и прямой y=6
Составьте уравнение окружности, касающейся осей x и y и прямой y=6 Рассуждения: Данная окружность...

Параметрическое уравнение окружности в 3д,зная углы поворота осей
Eсть параметрическое уравнение окружности: x= x0+R*cos(a) y = y0+R*sin(a) Мне нужно...

Определение осей тела
Определение осей тела с помощью моментов инерции... Это как? Вот пример тела:

5
Shamil1
Модератор
2270 / 1567 / 352
Регистрация: 26.03.2015
Сообщений: 5,654
23.11.2018, 02:15 2
Цитата Сообщение от Крашеная Посмотреть сообщение
В случае дуги надо понять - лежат ли эти экстримальные точки между "началом" и "концом" дуги.
Можно сначала выполнить поворот, чтобы окружность оказалась в плоскости ХУ, а потом перевести координаты в полярные.
0
snake32
23.11.2018, 15:55
  #3

Не по теме:

Честно - ни хрена не понял что как и зачем :(

0
Крашеная
140 / 25 / 5
Регистрация: 06.08.2018
Сообщений: 77
Завершенные тесты: 1
30.11.2018, 17:16  [ТС] 4
Все, задача решена.
Если кому инересно, то вкратце:
Сначала проецируем окружность на плоскость (например XY).
Записываем получившийся элипс в параметрическом виде.
Находим коэффициенты через компоненты нормали к плоскости в которой окружность лежала.

Дифференцируем по dx, приравниваем к 0. Получаем значение параметра, при котором точка имеет максимальное или минимальное значение х. Подставляем в параметрически заданное уравнение эллипса - находим y-координаты этих точек. Для нахоздения 3й координаты используем изначальное оравнение окружности + уравнение плоскости.

Дифференцируем по dy ... проделываем то же самое - получаем значение параметра для экстримальных значенийпо y...

Повторяем все снова для XZ-проекции или YZ-проекции - находим точки, где z принимает экстримальные значения.

Поскольку у нас не окружность, а только кусок, то проверяем лежат ли наши "экстримальные точки" в нужной части окружности.
Для этого находим еще одну точку заведомо лежащую на дуге между началом и концом дуги. (у меня еще есть условие, что дуга <90, так что это легко). Проверяем направления векторных произведений векторов из центра окружности к началу, "середке", концу дуги и к интересующей точке. Если знак одинаковый, точка левит на нужной дуге.

Последний шаг: для каждой координаты выбираем минимальное и максимальное значение той компоненты из точек: начало дуги, конец дуги и экстримальная точка, которая лежит на дуге.
Как-то так
0
Excalibur921
809 / 495 / 88
Регистрация: 12.10.2013
Сообщений: 3,258
30.11.2018, 21:43 5
поиск bounding box для дуги окружности в 3д
bounding box arc
Не проще взять N точек дуги и найти maxmin по каждой оси?
0
Крашеная
140 / 25 / 5
Регистрация: 06.08.2018
Сообщений: 77
Завершенные тесты: 1
30.11.2018, 23:52  [ТС] 6
Цитата Сообщение от Excalibur921 Посмотреть сообщение
поиск bounding box для дуги окружности в 3д
bounding box arc
именно оно. Только если гуглить, то там несколько другие или исходные данные (хотя местами чстично подходит) или для игровой индустрии - там не проекции, а перспектива.... или если проекция, то на наклонную плоскость, а не на плоскости образованные декартовыми координатами... короче все чуток по-другому. Ну из того, что я нашла.
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Не проще взять N точек дуги и найти maxmin по каждой оси?
Нет, к сожалению не проще. Дуга задана именно как я описала. Причем следующий шаг - это не для единичной дуги, а для комбинации как минимум нескол'ких дуг и прямых - ими более сложные фигуры заданы. Получается надо каждую делить на N точек и, если хочется поточнее, надо, чтоб N большим... И это все в running time будет капать... А так, хоть мороки много но все аналитически, с точностью проблем нет, а все выкладки на бумаге. В running time останется только несколько конечных формул подставить.
Причем, что классно получилось - это что даже не надо синусы, косинусы и тангенсы считать - они все довольно легко получаются из компонент нормального вектора.
0
30.11.2018, 23:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2018, 23:52

Координаты окружности в пространстве
Здравствуйте У меня есть задание, построить цилиндр в пространстве Для этого мне нужно сначала...

Динамическое определение размера осей Chart
Здравствуйте, уважаемые форумчане! Может, не так искал, но не нашёл. Требуется найти размер осей...

Построить окружности в 3-х мерном пространстве.
Как построить круги в трехмерной проекции, первый круг радиусом 10 сплошной линией, через 2 вверх...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru