Пересечение линии и цилиндра
Пересечение линии и цилиндра — это расчет любых точек пересечения с учетом геометрии аналитического описания линии и цилиндра в трехмерном пространстве.
Произвольная линия и цилиндр могут вообще не иметь пересечения. Или может быть одна или две точки пересечения. [1] Или линия может лежать вдоль поверхности цилиндра параллельно его оси, что приводит к бесконечному множеству точек пересечения. Описанный здесь метод различает эти случаи и, если пересечения существуют, вычисляет их положения.
Термин «цилиндр» может относиться к трехмерному телу или, как в этой статье, только к изогнутой внешней поверхности твердого тела. Вот почему считается, что линия, пронизывающая объем цилиндра, имеет две точки пересечения: точку на поверхности, где она входит, и ту, где она выходит. См. § торцевые заглушки .
Основная идея такого рода задачи пересечения состоит в том, чтобы представить каждую фигуру в виде уравнения, справедливого для всех точек фигуры. Решая их как систему двух одновременных уравнений, находятся точки, принадлежащие обеим формам, что является пересечением. Приведенные ниже уравнения были решены с использованием Maple .
Этот метод находит применение в вычислительной геометрии , графическом рендеринге , моделировании форм , физическом моделировании и связанных с ним типах вычислительного 3D-моделирования. Это привело к различным реализациям. [2] [3] [4] Этот метод тесно связан с пересечением линии и сферы .
Уравнение цилиндра, без торцевых крышек
[ редактировать ]Позволять быть основанием цилиндра (или одной конечной точкой), быть единичным вектором оси цилиндра,радиус цилиндра и высота (или длина оси) . Цилиндр может иметь любую ориентацию.
Уравнение бесконечного цилиндра можно записать в виде
где любая точка на поверхности цилиндра. Уравнение просто утверждает, что точки находятся точно на евклидовом расстоянии от оси начиная с точки , где измеряется в единицах . Обратите внимание, что если является единичным вектором. Поскольку обе части уравнения всегда положительны или равны нулю, мы можем возвести его в квадрат и исключить операцию извлечения квадратного корня из евклидовой нормы в левой части:
Точка находится на расстоянии со знаком
от основания вдоль оси. Следовательно, два уравнения, определяющие цилиндр, исключая торцевые крышки, имеют вид
Линия
[ редактировать ]Позволять быть линией, проходящей через начало координат, будучи единичным вектором,и расстояние от начала координат.
Если ваша линия проходит не через начало координат, а через точку , т.е. ваша линия ,заменять с повсюду; расстояние тогда расстояние от .
Проблема с перекрёстком
[ редактировать ]Пересечение прямой и цилиндра есть
где расстояние со знаком вдоль оси является
Решение
[ редактировать ]Перестановка первого уравнения дает квадратное уравнение для . Решив это для дает
где если является единичным вектором. Если
линия параллельна оси и пересечения нет, либо пересечение представляет собой прямую. Если
линия не пересекает цилиндр.
Решение дает только расстояние, на котором линия пересекает бесконечный цилиндр. Чтобы увидеть, происходит ли пересечение внутри детали, которую мы считаем реальным цилиндром, нам нужно проверить, соответствует ли расстояние со знаком от основания цилиндра вдоль оси до перекрестка находится в пределах нуля, а длина цилиндра:
где все еще
Торцевые заглушки
[ редактировать ]Вышеупомянутое предполагает, что цилиндр не имеет торцевых крышек; их необходимо проверять отдельно.Предполагается, что шов, где торцевая крышка соединяется с цилиндром, принадлежит цилиндру и исключается из торцевой крышки.
Полусферические торцевые заглушки
[ редактировать ]Полусферические торцевые крышки представляют собой просто полусферы на обоих концах цилиндра. Этот объект иногда называют капсулой,или, возможно, сфера с линейной стреловидностью фиксированного радиуса.
Высота цилиндра не включает торцевые заглушки. Если - высота цилиндра, включая обе полусферические торцевые крышки, тогда .
Проверьте, есть ли линия пересекаетлюбая сфера: центр или и радиус :
Если
линия не пересекает сферу торца.
Если есть решения , примите только те, которые попадают в фактическую полусферу торцевой крышки:
- или
где, еще раз,
Плоские торцевые заглушки
[ редактировать ]Плоские торцевые заглушки представляют собой круглые области, радиус , в плоскостях с центром и , с единичными нормальными векторами и , соответственно. Линия пересекает плоскость тогда и только тогда, когда
Решение d простое:
Обратите внимание, что если
линия параллельна плоскости торцевой крышки (а также перпендикулярна оси цилиндра). Наконец, тогда и только тогда, когда
точка пересечения находится внутри фактической торцевой крышки (круглой области в плоскости).
Единичный вектор нормали в точке пересечения
[ редактировать ]Одно из многих применений этого алгоритма — трассировка лучей , где вектор нормали единичного цилиндра на перекрестке необходим для преломленных и отраженных лучей и освещения.
В приведенных ниже уравнениях используется расстояние со знаком до точки пересечения с базы вдоль оси , что всегда
Для поверхности цилиндра (без учета торцевых крышек, но включая шов) :
Для сферической торцевой крышки у основания :
для сферической торцевой крышки на другом конце, :
Для плоской торцевой крышки у основания :
для плоской торцевой крышки на другом конце, :
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Нарриен, Джон (1846). «Глава VI». Аналитическая геометрия со свойствами конических сечений . Лондон: Лонгман, Браун, Грин и Лонгманс. п. 156 . Проверено 12 декабря 2023 г.
...Таким образом, прямая линия может пересечь кривую поверхность второго порядка только в двух точках...
- ^ Шэне, Чинг-Куанг (1994). «Вычисление пересечения прямой и цилиндра (Глава V.1)» . В Хекберте, Поле (ред.). Графические драгоценные камни IV . AP Professional, Бостон. стр. 353–355. ISBN 9780123361561 . Проверено 12 декабря 2023 г.
- ^ Цихош, Джозеф М.; Ваггенспак, Уоррен Н. младший (1994). «Пересечение луча с цилиндром (глава V.2)» . В Хекберте, Поле (ред.). Графические драгоценные камни IV . AP Professional, Бостон. стр. 356–365. ISBN 9780123361561 . Проверено 12 декабря 2023 г.
- ^ Хелд, Мартин (1997). «ERIT — сборник эффективных и надежных тестов пересечений». Журнал графических инструментов . 2 (4): 25–44. дои : 10.1080/10867651.1997.10487482 .
Внешние ссылки
[ редактировать ]- Сборники методов пересечений для вычислительной геометрии:
- Пересечения (страница ресурсов по трассировке лучей) Эрика Хейнса , таблица ссылок для многих расчетов пересечений, включая лучевой цилиндр.
- коллекция пересекающихся лучей-поверхностей для шейдеров графического процессора от Inigo Quilez, включая ray-cylinder.
- Выводы, которые требуют, чтобы цилиндр находился в ограниченной ориентации:
- пересечение линии и цилиндра Йоханнеса Бюхнера в сборнике формул пересечения линий
- Пересечение линии и цилиндра — в IllusionCatalyst
- Пересечение линейных цилиндров на сайте Mathematics Stack Exchange (math.stackexchange.com)
- Частичное решение:
- Вычисление точек пересечения луча и цилиндра на Mathematics Stack Exchange (math.stackexchange.com)