ФлеймФорумПрограммирование

Посетила такая идея пересечение отрезка и луча.

#0
(Правка: 13:29) 13:06, 23 окт 2025

3D xyz юзаю.
Как думаете сработает такой вариант ?
На рисунке видно, что луч не пересикает отрезок.
line-ray | Посетила такая идея пересечение отрезка и луча.
точка желтая это ray.origin, ray.dir зеленая стрелочка то есть наш луч.

Моя идея такая.
мы знаем вектор ray.dir .
Нам надо узнать он находится между linePointBegin и linePointEnd.
Для этого мы begin=linePointBegin-ray.origin; end=linePointEnd-ray.origin;
И сравним находится ли ray.dir между begin и еnd(на рисунке две синие стрелки ) ? Если да, то луч пересек отрезок.
Вопрос как это сравнение делать ? через dot или нахождение угла между двумя векторами ? Или еще как-то проще.

#1
13:12, 23 окт 2025

ronniko, это называется не "линия", а "отрезок". Поправь терминологию, чтоб тебя понимали правильно.

#2
13:49, 23 окт 2025

ronniko
> Как думаете сработает такой вариант ?
мы тут подумали и решили:
https://chat.qwen.ai/s/fc400ae4-b73a-48b9-a699-a6b2d58ac195?fev=0.0.233

ronniko
ну, на самом деле тут школьная геометрия, но если копать в сторону оптимизации,
то нужно написать конкретные методы для разных способов,
убедиться что они работают(реально протестировать)
и посчитать в них операторы и тогда уже точно говорить айс или не айс.

#3
14:41, 23 окт 2025

В 3д луч не пересекает отрезок с вероятностью 100%

#4
15:53, 23 окт 2025

1 frag / 2 deaths
совпадающие лучи. Или в его случае луч построенный из отрезка.

#5
(Правка: 19:17) 16:54, 23 окт 2025

Qwen крут. Спасибо за такое объяснение.

v1 = linePointBegin - ray.origin
v2 = linePointEnd - ray.origin
d = ray.dir

cross1 = v1.x * d.y - v1.y * d.x
cross2 = d.x * v2.y - d.y * v2.x

if not ((cross1 >= 0 and cross2 >= 0) or (cross1 <= 0 and cross2 <= 0)):
    return False  # Луч не между концами → нет пересечения
#6
19:10, 23 окт 2025

Зашёл прочитать "Я ваш отрезок лучом пересекал", от nes'a, а его нет.

#7
19:17, 23 окт 2025

1 frag / 2 deaths
> В 3д луч не пересекает отрезок с вероятностью 100%
Лежащие в одной плоскости?

#8
20:30, 23 окт 2025

master-sheff
В плоскости задача конечно имеет смысл
Но Роннико зачем-то сказал про 3д

#9
20:41, 23 окт 2025

1 frag / 2 deaths

> Но Роннико зачем-то сказал про 3д
Поэтому ИИ говно, что он не может предугадать помыслы человека роннико. Впрочем, как и мы все, лол

#10
20:47, 23 окт 2025

2D тоже бывает полезно.

ФлеймФорумПрограммирование