Дано тетраэдр ABCD; исследуйте геометрическое место точек внутри тетраэдра, имеющих равные расстояния до трёх вершин, и покажите, когда такое множество непусто и как его найти
Кратко: множество всех точек, равноудалённых от вершин A,B,CA,B,CA,B,C, — прямая, проходящая через окружность центра треугольника ABCABCABC и перпендикулярная плоскости ABCABCABC. Пересечение этой прямой с внутренностью тетраэдра даёт всю искомую геометрическую оболочку: либо пусто, либо одна точка, либо (открытый) отрезок. Обоснование и как найти практически. 1) Локус равных расстояний. Пересечение двух перпендикулярных бисекторных плоскостей (внешних для пар A,BA,BA,B и A,CA,CA,C) даёт единственную прямую. Пусть OOO — центр описанной окружности треугольника ABCABCABC, n\mathbf nn — единичный вектор, нормальный к плоскости ABCABCABC. Тогда ℓ={ O+tn: t∈R }
\ell=\{\,O+t\mathbf n:\;t\in\mathbb R\,\} ℓ={O+tn:t∈R}
и для любой точки P=O+tnP=O+t\mathbf nP=O+tn расстояния до A,B,CA,B,CA,B,C равны (равны R2+t2\sqrt{R^2+t^2}R2+t2, где RRR — радиус описанной окружности). 2) Пересечение с тетраэдром. Поскольку тетраэдр — выпуклый, пересечение прямой ℓ\ellℓ с его объёмом есть либо пустое множество, либо отрезок (включая вырожденный отрезок — точку). Значит внутри тетраэдра находятся ровно те точки вида O+tnO+t\mathbf nO+tn, для которых параметр ttt лежит в некотором интервале (t1,t2)(t_1,t_2)(t1,t2) (возможно пустом или вырожденном). 3) Практический алгоритм нахождения (и критерий непустоты). - Вычислите OOO — центр описанной окружности треугольника ABCABCABC (пересечение перпендикуляров к двум сторонам). - Возьмите нормаль n\mathbf nn к плоскости ABCABCABC (направление к вершине DDD можно считать положительным). - Параметризуйте прямую: X(t)=O+tnX(t)=O+t\mathbf nX(t)=O+tn. - Для каждой из четырёх граней тетраэдра (треугольников ABC,BCD,CAD,ABDABC,BCD,CAD,ABDABC,BCD,CAD,ABD) найдите точку пересечения с плоскостью грани. Для грани с опорной точкой AiA_iAi и нормалью ni\mathbf n_ini (направленной наружу) при условии n⋅ni≠0 \mathbf n\cdot\mathbf n_i\neq0n⋅ni=0 параметр пересечения равен ti=(Ai−O)⋅nin⋅ni.
t_i=\frac{(A_i-O)\cdot\mathbf n_i}{\mathbf n\cdot\mathbf n_i}. ti=n⋅ni(Ai−O)⋅ni.
- Для каждого найденного tit_iti вычислите точку Pi=X(ti)P_i=X(t_i)Pi=X(ti) и проверьте, лежит ли PiP_iPi внутри соответствующего треугольника грани (например, по барицентрическим координатам или по знакам направленных площадей). Соберите все такие допустимые tit_iti. - Интервал пересечения с тетраэдром — отрезок между минимальным и максимальным допустимым tit_iti. Если допустимых tit_iti нет, пересечение пусто; если один — точка; если два (или более) — отрезок между крайними. Особые случаи: если n⋅ni=0\mathbf n\cdot\mathbf n_i=0n⋅ni=0 — прямая параллельна плоскости грани; тогда либо нет пересечения с этой плоскостью, либо прямая лежит в плоскости (последнее для перпендикулярной к ABCABCABC невозможно, кроме вырожденных случаев). Итого: геометрическое место точек внутри тетраэдра, равноудалённых от трёх вершин A,B,CA,B,CA,B,C, — это отрезок (возможно пустой или точка) на прямой ℓ\ellℓ через центр описанной окружности треугольника ABCABCABC и перпендикулярной плоскости ABCABCABC; проверка непустоты и нахождение концов выполняются описанным алгоритмом через пересечения ℓ\ellℓ с плоскостями граней и проверку принадлежности точек треугольникам.
Обоснование и как найти практически.
1) Локус равных расстояний. Пересечение двух перпендикулярных бисекторных плоскостей (внешних для пар A,BA,BA,B и A,CA,CA,C) даёт единственную прямую. Пусть OOO — центр описанной окружности треугольника ABCABCABC, n\mathbf nn — единичный вектор, нормальный к плоскости ABCABCABC. Тогда
ℓ={ O+tn: t∈R } \ell=\{\,O+t\mathbf n:\;t\in\mathbb R\,\}
ℓ={O+tn:t∈R} и для любой точки P=O+tnP=O+t\mathbf nP=O+tn расстояния до A,B,CA,B,CA,B,C равны (равны R2+t2\sqrt{R^2+t^2}R2+t2 , где RRR — радиус описанной окружности).
2) Пересечение с тетраэдром. Поскольку тетраэдр — выпуклый, пересечение прямой ℓ\ellℓ с его объёмом есть либо пустое множество, либо отрезок (включая вырожденный отрезок — точку). Значит внутри тетраэдра находятся ровно те точки вида O+tnO+t\mathbf nO+tn, для которых параметр ttt лежит в некотором интервале (t1,t2)(t_1,t_2)(t1 ,t2 ) (возможно пустом или вырожденном).
3) Практический алгоритм нахождения (и критерий непустоты).
- Вычислите OOO — центр описанной окружности треугольника ABCABCABC (пересечение перпендикуляров к двум сторонам).
- Возьмите нормаль n\mathbf nn к плоскости ABCABCABC (направление к вершине DDD можно считать положительным).
- Параметризуйте прямую: X(t)=O+tnX(t)=O+t\mathbf nX(t)=O+tn.
- Для каждой из четырёх граней тетраэдра (треугольников ABC,BCD,CAD,ABDABC,BCD,CAD,ABDABC,BCD,CAD,ABD) найдите точку пересечения с плоскостью грани. Для грани с опорной точкой AiA_iAi и нормалью ni\mathbf n_ini (направленной наружу) при условии n⋅ni≠0 \mathbf n\cdot\mathbf n_i\neq0n⋅ni =0 параметр пересечения равен
ti=(Ai−O)⋅nin⋅ni. t_i=\frac{(A_i-O)\cdot\mathbf n_i}{\mathbf n\cdot\mathbf n_i}.
ti =n⋅ni (Ai −O)⋅ni . - Для каждого найденного tit_iti вычислите точку Pi=X(ti)P_i=X(t_i)Pi =X(ti ) и проверьте, лежит ли PiP_iPi внутри соответствующего треугольника грани (например, по барицентрическим координатам или по знакам направленных площадей). Соберите все такие допустимые tit_iti .
- Интервал пересечения с тетраэдром — отрезок между минимальным и максимальным допустимым tit_iti . Если допустимых tit_iti нет, пересечение пусто; если один — точка; если два (или более) — отрезок между крайними.
Особые случаи: если n⋅ni=0\mathbf n\cdot\mathbf n_i=0n⋅ni =0 — прямая параллельна плоскости грани; тогда либо нет пересечения с этой плоскостью, либо прямая лежит в плоскости (последнее для перпендикулярной к ABCABCABC невозможно, кроме вырожденных случаев).
Итого: геометрическое место точек внутри тетраэдра, равноудалённых от трёх вершин A,B,CA,B,CA,B,C, — это отрезок (возможно пустой или точка) на прямой ℓ\ellℓ через центр описанной окружности треугольника ABCABCABC и перпендикулярной плоскости ABCABCABC; проверка непустоты и нахождение концов выполняются описанным алгоритмом через пересечения ℓ\ellℓ с плоскостями граней и проверку принадлежности точек треугольникам.