Кейс на неоднозначность: дан отрезок AB и точка P вне его. Какие построения дают единственное решение задачи найти точку X на AB такую, что ∠APX задана, и в каких случаях решений может быть несколько или ни одного; подробно обсудите случаи вырожденности
Пусть задан отрезок ABABAB, точка PPP вне него, и задан угол α∈[0,π]\alpha\in[0,\pi]α∈[0,π]. Требуется найти точки X∈ABX\in ABX∈AB такие, что ∠APX=α\angle APX=\alpha∠APX=α. Короткая конструкция и полная классификация случаев. Конструкция (общая и практически универсальная) - Рассмотрите лучи из PPP, получающиеся поворотом луча PAPAPA на углы +α+\alpha+α и −α-\alpha−α. Обозначим их направления единичными векторами u1,u2u_1,u_2u1,u2. - Пересечения этих лучей с прямой ABABAB дают все возможные решения; среди пересечений остаются только точки, лежащие именно на отрезке ABABAB. Аналитическая проверка пересечения - Параметризация: точка на отрезке ABABAB имеет вид X=A+t(B−A)X=A+t(B-A)X=A+t(B−A), t∈[0,1]t\in[0,1]t∈[0,1]. Точка на луче из PPP в направлении uuu имеет вид X=P+suX=P+s uX=P+su, s≥0s\ge0s≥0. - Решение пересечения даёт система A+t(B−A)=P+suA+t(B-A)=P+s uA+t(B−A)=P+su. В 2D из векторного произведения получаем t=(P−A)×u(B−A)×u.
t=\frac{(P-A)\times u}{(B-A)\times u}. t=(B−A)×u(P−A)×u.
Пересечение существуют и даёт решение на отрезке тогда и только тогда, когда t∈[0,1]t\in[0,1]t∈[0,1] и соответствующий s≥0s\ge0s≥0. (Если (B−A)×u=0(B-A)\times u=0(B−A)×u=0, направления параллельны — см. вырождения.) Классификация результатов 1. Общий случай ( PPP не лежит на прямой ABABAB, α≠0,π\alpha\neq0,\piα=0,π ): - Лучи u1,u2u_1,u_2u1,u2 различны. Каждый из них пересекает прямую ABABAB в некоторой точке (если не параллелен). Возможны 0, 1 или 2 решений на отрезке: - Два решения: оба луча пересекают прямую ABABAB внутри отрезка (t∈(0,1)t\in(0,1)t∈(0,1) для обоих). - Одно решение: только один из лучей даёт точку на отрезке; второй пересекает прямую вне отрезка или пересечение на обратном (отрицательном) луче (s<0s<0s<0). - Ноль решений: оба луча пересекают прямую вне отрезка либо оба дают s<0s<0s<0. 2. Случай параллельности (для некоторого луча uuu(B−A)×u=0(B-A)\times u=0(B−A)×u=0): - Если (P−A)×u≠0(P-A)\times u\neq0(P−A)×u=0 — луч параллелен прямой ABABAB и не пересекает её: для этого луча пересечения нет. - Если (P−A)×u=0(P-A)\times u=0(P−A)×u=0 — луч коллинеарен прямой ABABAB. Тогда либо весь луч лежит на той же прямой: - Если у пересечения есть точки с s≥0s\ge0s≥0 и соответствующие t∈[0,1]t\in[0,1]t∈[0,1], то либо конечное множество (обычно одно значение ttt) либо бесконечное множество (вся подчасть отрезка) — см. вырождения ниже. 3. Вырожденные углы α=0\alpha=0α=0 и α=π\alpha=\piα=π: - α=0\alpha=0α=0: требуется, чтобы PXPXPX был коллинеарен с PAPAPA в том же направлении. Если PPP не на прямой ABABAB — возможны 0 или 1 решение (пересечение луча PAPAPA с отрезком). Если PPP лежит на прямой ABABAB: - Если весь отрезок ABABAB лежит на луче из PPP в сторону AAA (то есть все X∈ABX\in ABX∈AB дают направление PXPXPX совпадающее с PAPAPA), тогда все X∈ABX\in ABX∈AB — решения (бесконечно много). - Иначе решения нет или одно (если только один из концов совпадает с лучом). - α=π\alpha=\piα=π: аналогично, но направление противоположно PAPAPA. 4. Случай PPP лежит на прямой ABABAB (но вне отрезка ABABAB): - Для α∉{0,π}\alpha\notin\{0,\pi\}α∈/{0,π} решений нет: любые PXPXPX и PAPAPA коллинеарны, угол только 000 или π\piπ. - Для α=0\alpha=0α=0 или π\piπ возможны решения как в пункте 3 (вплоть до всех точек отрезка). 5. Концы отрезка как возможные решения: - X=AX=AX=A всегда даёт ∠APX=0\angle APX=0∠APX=0. Значит при α=0\alpha=0α=0 точка AAA — тривиальное решение. - X=BX=BX=B даёт ∠APB\angle APB∠APB; если α=∠APB\alpha=\angle APBα=∠APB, то BBB — решение. Краткое практическое резюме - Построение: повернуть луч PAPAPA в обе стороны на α\alphaα; пересечения с прямой ABABAB отфильтровать по условию X∈ABX\in ABX∈AB. - Возможные количества решений: 0, 1, 2 или (в вырожденном коллинеарном случае) бесконечно много (все точки подотрезка). - Вырождения возникают при α∈{0,π}\alpha\in\{0,\pi\}α∈{0,π} и/или при коллинеарности PPP и прямой ABABAB (т.е. когда направление повёрнутого луча параллельно ABABAB).
Конструкция (общая и практически универсальная)
- Рассмотрите лучи из PPP, получающиеся поворотом луча PAPAPA на углы +α+\alpha+α и −α-\alpha−α. Обозначим их направления единичными векторами u1,u2u_1,u_2u1 ,u2 .
- Пересечения этих лучей с прямой ABABAB дают все возможные решения; среди пересечений остаются только точки, лежащие именно на отрезке ABABAB.
Аналитическая проверка пересечения
- Параметризация: точка на отрезке ABABAB имеет вид X=A+t(B−A)X=A+t(B-A)X=A+t(B−A), t∈[0,1]t\in[0,1]t∈[0,1]. Точка на луче из PPP в направлении uuu имеет вид X=P+suX=P+s uX=P+su, s≥0s\ge0s≥0.
- Решение пересечения даёт система A+t(B−A)=P+suA+t(B-A)=P+s uA+t(B−A)=P+su. В 2D из векторного произведения получаем
t=(P−A)×u(B−A)×u. t=\frac{(P-A)\times u}{(B-A)\times u}.
t=(B−A)×u(P−A)×u . Пересечение существуют и даёт решение на отрезке тогда и только тогда, когда t∈[0,1]t\in[0,1]t∈[0,1] и соответствующий s≥0s\ge0s≥0. (Если (B−A)×u=0(B-A)\times u=0(B−A)×u=0, направления параллельны — см. вырождения.)
Классификация результатов
1. Общий случай ( PPP не лежит на прямой ABABAB, α≠0,π\alpha\neq0,\piα=0,π ):
- Лучи u1,u2u_1,u_2u1 ,u2 различны. Каждый из них пересекает прямую ABABAB в некоторой точке (если не параллелен). Возможны 0, 1 или 2 решений на отрезке:
- Два решения: оба луча пересекают прямую ABABAB внутри отрезка (t∈(0,1)t\in(0,1)t∈(0,1) для обоих).
- Одно решение: только один из лучей даёт точку на отрезке; второй пересекает прямую вне отрезка или пересечение на обратном (отрицательном) луче (s<0s<0s<0).
- Ноль решений: оба луча пересекают прямую вне отрезка либо оба дают s<0s<0s<0.
2. Случай параллельности (для некоторого луча uuu (B−A)×u=0(B-A)\times u=0(B−A)×u=0):
- Если (P−A)×u≠0(P-A)\times u\neq0(P−A)×u=0 — луч параллелен прямой ABABAB и не пересекает её: для этого луча пересечения нет.
- Если (P−A)×u=0(P-A)\times u=0(P−A)×u=0 — луч коллинеарен прямой ABABAB. Тогда либо весь луч лежит на той же прямой:
- Если у пересечения есть точки с s≥0s\ge0s≥0 и соответствующие t∈[0,1]t\in[0,1]t∈[0,1], то либо конечное множество (обычно одно значение ttt) либо бесконечное множество (вся подчасть отрезка) — см. вырождения ниже.
3. Вырожденные углы α=0\alpha=0α=0 и α=π\alpha=\piα=π:
- α=0\alpha=0α=0: требуется, чтобы PXPXPX был коллинеарен с PAPAPA в том же направлении. Если PPP не на прямой ABABAB — возможны 0 или 1 решение (пересечение луча PAPAPA с отрезком). Если PPP лежит на прямой ABABAB:
- Если весь отрезок ABABAB лежит на луче из PPP в сторону AAA (то есть все X∈ABX\in ABX∈AB дают направление PXPXPX совпадающее с PAPAPA), тогда все X∈ABX\in ABX∈AB — решения (бесконечно много).
- Иначе решения нет или одно (если только один из концов совпадает с лучом).
- α=π\alpha=\piα=π: аналогично, но направление противоположно PAPAPA.
4. Случай PPP лежит на прямой ABABAB (но вне отрезка ABABAB):
- Для α∉{0,π}\alpha\notin\{0,\pi\}α∈/{0,π} решений нет: любые PXPXPX и PAPAPA коллинеарны, угол только 000 или π\piπ.
- Для α=0\alpha=0α=0 или π\piπ возможны решения как в пункте 3 (вплоть до всех точек отрезка).
5. Концы отрезка как возможные решения:
- X=AX=AX=A всегда даёт ∠APX=0\angle APX=0∠APX=0. Значит при α=0\alpha=0α=0 точка AAA — тривиальное решение.
- X=BX=BX=B даёт ∠APB\angle APB∠APB; если α=∠APB\alpha=\angle APBα=∠APB, то BBB — решение.
Краткое практическое резюме
- Построение: повернуть луч PAPAPA в обе стороны на α\alphaα; пересечения с прямой ABABAB отфильтровать по условию X∈ABX\in ABX∈AB.
- Возможные количества решений: 0, 1, 2 или (в вырожденном коллинеарном случае) бесконечно много (все точки подотрезка).
- Вырождения возникают при α∈{0,π}\alpha\in\{0,\pi\}α∈{0,π} и/или при коллинеарности PPP и прямой ABABAB (т.е. когда направление повёрнутого луча параллельно ABABAB).