Это небольшая часть более сложной задачи, связанной с геометрией, которой я сейчас занимаюсь.
Вопрос вроде простой, но что-то "не думается".

А вопрос ещё скорее геометрический.
Смысл такой: в трехмерном пространстве есть 2 вершины с известными координатами. Нужно программно определить координаты третьей, чтобы был прямоугольный треугольник.

Принятый ответ

Смысл такой: в трехмерном пространстве есть 2 вершины с известными координатами
В трехмерном пространстве не определить однозначно у тебя бесконечное множество решений, которые образуют конус
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2
20
9 лет назад
Отредактирован Mihahail
2
На отрезке(определяемом двумя точками) можно построить бесконечное множество треугольников. Причем у всех у них вершина при прямом угле будет лежать на окружности, у которой данный отрезок - диаметр.
Точнее не на окружности, а на сфере, раз тут три-дэ
условие на координаты вершины соотвественно [(x1+x2)/2 - x]^2 + [ (y1+y2)/2 - y ]^2 + [ (z1+z2)/2 - z ]^2 == ( [ x1 - x2 ]^2 + [ y1 - y2 ]^2 + [ z1 - z2 ]^2 )/2
Но тебе ведь не это нужно, ты наверно не указал всё, что тебе нужно в вопросе.
0
25
9 лет назад
Отредактирован П4ела
0
Слишком мало данных. Нужна длина еще одной стороны. Так же желательно узнать в какой вершине угол 90* (т.е. нужно знать, что катеты, а что гипотенуза).
Из этих 2-х вершин можно построить огромное количество прямоугольных треугольников.

Mihahail, отрезок может быть не только гипотенузой-диаметром но и одним из 2-х катетов, что увеличивает и без того бесконечное число треугольников =)
2
9
9 лет назад
Отредактирован AsagiriGen
2
Это вроде в двухмерном, а у меня трехмерное, да ещё и неизвестно, как повернут треугольник.
Ок, не увидел.
Принцип схожий: у третий точки должна быть одна из координат первой точки, а две остальные второй точки, или наоборот. Например, у тебя есть A(x1,y1,z3) и B(x2, y2 , z3). Чтобы получился прямоугольный треугольник, берем C(x1, y1, z2) или (x2, y1, z2) и т.д.
Проверил в Максе.
2
20
9 лет назад
Отредактирован Mihahail
2
А просто какая-нибудь вершина, чтоб был прямой угол, опираюийся на отрезок как на гипотенузу, то бери точку, у которой максимальная(или минимальная) z координата, из неё берешь x и y, а z берешь из другой точки.
GeneralElConsul, опередил)
П4ела, ну лол, если это катет, то просто делаем к нему перпендикулярный вектор любой длины(и "исходящий" из любого из двух концов отрезка). Т.е. тогда вершина лежит на одной из двух параллельных плоскостей, перпендикулярных отрезку. Условие: x(x1-x2)+y(y1-y2)+z(z1-z2) == [ x1 - x2 ]^2 + [ y1 - y2 ]^2 + [ z1 - z2 ]^2 или c обратным знаком в одной из сторон равенства. Из простых соображений, что вектор r - (r1-r2) лежит в нужной плоскости а значит его скалярное произведение на вектор отрезка(r1-r2) будет ноль.
Тогда получается, кстати, что множество допустимых вершин - это что-то вроде TIE-fighter'a(сфера, зажатая муж двух плоскостей).
Да, как я уже сказал, кто-то не дописал вопрос.
0
21
9 лет назад
0
хм, ну тогда ему сначала надо рассмотреть в плоскости Ox к примеру, имея как GeneralElConsul, написал общий Y из =((x2-x1)+(y2-y1))^2 , где у нас y2 = y1 =0 тогда так же делаешь и с 3 точки, находишь точные координаты(среднее) потом для z...
0
29
9 лет назад
Отредактирован alexprey
0
Смысл такой: в трехмерном пространстве есть 2 вершины с известными координатами
В трехмерном пространстве не определить однозначно у тебя бесконечное множество решений, которые образуют конус
Принятый ответ
0
20
9 лет назад
Отредактирован Mihahail
0
alexprey, конус? о_О
0
9
9 лет назад
Отредактирован AsagiriGen
0
Решение нашел интуитивно, но немного подумал, могу объяснить почему так.
смотреть сюда
Начнем с 2D: Система координат Декартовая - углы между осями прямые. Берем точку C(x1, y2).
1.Рисуем прямую со стороны первой точки: мы фиксируем x=x1, y - любое. Получается, любые значения не ездят по бокам по оси X, но зато летят вверх по оси Y. Получается прямая направленная строго от Ox под прямым углом, параллельная Oy.
2.То же самое со второй точкой: x - любое, фиксируем y=y2. Прямая направленная строго от Oy под прямым углом, параллельная Ox.
У нас такая система координат, что между Ox и Oy - прямой угол. Тогда и между прямыми тоже прямой угол.
3D: Берем C(x1, y1, z2).
1.Глядим со стороны первой точки: она знает, что её координаты x и y одолжила точка С. Что у неё за z - ей по барабану, главное чтобы долг x и y вернула. Так что x=x1 и y=y1 - фиксированное, z - без разницы какое. Имеем штырь, уходящий вверх.
2.Глядим со стороны второй точки. фиксируем z=z3, x и y - любые. Примерно так строят крышy в майнкрафте - фиксируют высоту и кладут по всей горизонтальной плоскости Oxy. Имеем фанеру с прямоугольной тенью на земле.
Ровно по той же причине, что и прошлом примере(только тут плоскость-прямая), растущий из земли вверх штырь пробивает фанеру-НЛО под прямым углом.
0
25
9 лет назад
0
Mihahail, dic.academic.ru/pictures/es/274581.jpg
GeneralElConsul, ты нашел 1 треугольник из возможных.
0
9
9 лет назад
0
GeneralElConsul, ты нашел 1 треугольник из возможных.
Дык, перебор всех комбинаций.
Может не самый лучший способ для установки, прмоугольный ли триангл, но просто для установления третьей точки прямоугольного треугольника - хорошо подходит.
0
20
9 лет назад
Отредактирован Mihahail
0
П4ела, так а при чем тут..?
GeneralElConsul, есть способ ещё проще, как мне кажется. Натягиваем на отрезок прямоугольный параллелепипед(надеюсь, правильно написал), так чтобы отрезок был диагональю.
Если себе всё хорошенько представить, то видно, что любая вершина(кроме исходных двух) будет искомой точкой.
угол D1AB - прямой
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.