Уравнение луча в пространстве и на плоскости?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Re: Уравнение луча в пространстве и на плоскости?

Сообщение NOVA 09 фев 2018, 20:57

Cr0c писал(а):Известны 5 точек го1, 4 точки го2 и все углы из го2?

Эм нет. Из точек известно только. GO1 (0,0,0) И одна из любых точек пересечения. Как душе угодно берём за единицу любую точку. Известны все углы у всех ГО и векторов. Кстати векторов с углами можно сделать больше, потому что как вещают СМИ 4-ёх векторов недостаточно для определения местоположения второго ГО. Осталось найти всё остальное.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Уравнение луча в пространстве и на плоскости?

Сообщение Cr0c 09 фев 2018, 21:13

Не подумай, что я придираюсь...
Поименуй точки (A, B, C, D, G1, G2)
Сделай список известных точек, углов (по правилам точка-вершина-точка) и расстояний.
Про вычисление G2 я понял.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Уравнение луча в пространстве и на плоскости?

Сообщение NOVA 09 фев 2018, 21:33

Ок завтра. Сдаюсь пока. Может Ваша смена будет дежурить.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Уравнение луча в пространстве и на плоскости?

Сообщение Yaro 10 фев 2018, 03:05

По скольким осям идет вращение фигуры?
Yaro
UNIт
 
Сообщения: 86
Зарегистрирован: 20 сен 2016, 21:44

Re: Уравнение луча в пространстве и на плоскости?

Сообщение Cr0c 10 фев 2018, 08:44

Yaro писал(а):По скольким осям идет вращение фигуры?

Не важно, там точка вращения.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Уравнение луча в пространстве и на плоскости?

Сообщение NOVA 10 фев 2018, 13:19

Вобщем опять.
Есть два GO (GO0 и GO1) Известно положение первого GO в 3d пространстве (0,0,0). Из этих GO исходит по 4 вектора вектора направления бесконечной длины. Известны направления всех векторов и углы между ними. Неизвестны все точки пересечения кроме одной. LP = GO0+LeftVector0.normalized. Найти любое положение GO1 при котором все соответствующие вектора пересекаются. На изображении готовый результат. На старте задачи ни один вектор не пересекается кроме LeftVector0 и LeftVector1 в точке LP. Причём мы знаем вектор LP-GO0 (берём за единицу), но не знаем вектор LP-GO1.
Скрытый текст:
Изображение

Раньше я это делал поэтапно динамически - это долгий некрасивый процесс. Потом возникла мысль, а что если вывести какое-нибудь уравнение по точкам пересечения и уравнениям хотя бы прямых? Мне почему-то кажется, что такого уравнения не существует.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Уравнение луча в пространстве и на плоскости?

Сообщение Cr0c 10 фев 2018, 14:09

Углы у go1 и go2 идентичны?
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Уравнение луча в пространстве и на плоскости?

Сообщение NOVA 10 фев 2018, 15:13

Нет. Они все разные. Прямых углов нет.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Уравнение луча в пространстве и на плоскости?

Сообщение Cr0c 10 фев 2018, 15:37

NOVA писал(а):Раньше я это делал поэтапно динамически - это долгий некрасивый процесс

10 итераций - 1/1024 от шага в лучшем случае и 1/256 в худшем - при первом шаге 90 градусов. Та самая "артиллерийская вилка", не помню другого названия.
Кроме этих данных у go2 ничего не известно, только углы между векторами?
Подумаю, пара идей есть, но обещать не буду.
Последний раз редактировалось Cr0c 10 фев 2018, 15:50, всего редактировалось 1 раз.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Уравнение луча в пространстве и на плоскости?

Сообщение NOVA 10 фев 2018, 15:49

да. Я сейчас картинки дорисую, объясню в чём проблема динамического метода.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Уравнение луча в пространстве и на плоскости?

Сообщение NOVA 10 фев 2018, 16:11

Вобщем вот. Допустим я без труда сделал так, чтобы левые и правые вектора попарно пересекались. Это не сложно. Далее, надо сделать так чтобы для начала пересеклись верхние вектора, и левый с правым остались пересечёнными. Кроссвектор показывает расстояние между верхними лучами. MidPoint = LeftPoint+(RightPoint-LeftPoint)*0.5f. Иначе говоря середина между левой и правой точкой. MoveVector=MidPoint-GO1.
Скрытый текст:
Изображение

Что вы думаете? Здесь три степени свободы в перемещениях для того, чтобы словить пересечение верхнего вектора.
1 вариант. Вращать вокруг MidPoint по вектору RightPoint-LeftPoint, пока верхние вектора не пересекутся (определяя нехитрым алгоритмом в какую сторону крутить).
2 вариант. Двигать по вектору GO0-MidPoint, то есть вправо-лево. В данном случае влево, потому что лучи сужаются слева.
3 вариант. Двигать по вектору MoveVector назад вперёд.
Я выбрал третий вариант, дабы максимально разнести GO друг от друга.
Но во втором и третьем варианте при движении левые и правые вектора перестают пересекаться.
Скрытый текст:
Изображение

Приходится доводить их движением вокруг левой и правой точки. Тогда опять верхний вектор не пересекается.
Вобщем туда сюда прыг скок.
Для полного решения нужен 5-тый и шестой вектор, но они получаются только после выравнивания по четырём. 5-тый веткор - вектор максимального разноса. 6-й вектор - вектор окончательной коррекции. То есть может так получиться, что у пятых векторов даже кроссвектор не находится. Вернее он с другой стороны.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Уравнение луча в пространстве и на плоскости?

Сообщение NOVA 12 фев 2018, 18:52

Вобщем много погуглив, становится ясно, что нужно, но возникает куча вопросов.
Уравнение для LeftVector0 должно строится по двум точкам (получить хотя бы уравнение прямой).
Ок. Первая точка 0.0.0, вторая точка. 0.0.1
Результат в калькуляторе.
Скрытый текст:
Изображение

Всё бы нормально, но что такое t? Временной континуум в сферическом вакууме? Смысл системы гласит. При любом z x=0,y=0.
Ладно поехали дальше.
Уравнение для RightVector0 не имеет второй точки и поэтому должно плясать на угловых коэффициентах.
А вот вменяемое уравнение с угловыми коэффициентами в 3d пространстве я толком не нашёл. К чему считаются эти угловые коэффициенты? В 2d - это тангенс угла к оси X
Такое ощущение, что всё надо выводить через t. И о мама родная. По-любому перенос из системы координат одного объекта в другой. И в итоге найти углы поворота и смещения между координатными системами двух ГО. Да точно.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Уравнение луча в пространстве и на плоскости?

Сообщение Cr0c 16 фев 2018, 07:30

Что-то не получается у меня вывести формулу расчета (((
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Уравнение луча в пространстве и на плоскости?

Сообщение NOVA 16 фев 2018, 17:39

Cr0c писал(а):Что-то не получается у меня вывести формулу расчета (((

Никто не говорил, что это легко. Тут бы хоть с кватернионами до конца разобраться и вечно всё нормировать надо. Но формула должна быть. Эти вещи проделывают другим методом.
Надо просто приравнять снос позиции и поворот в кватернионах второй системы координат из которой выходят все вектора. То ест у всех векторов должен быть один поворот. И пересекаются они все с соответствующими векторами в другой системе.
То есть соответствующие X,y,z этих векторов попарно равны. Так -то можно вывести одно через другое и приравнять всё к сносу и повороту в кватернионах. А и не забыть, что точка пересечения одного вектора известна. Например (-1,0,1) Уравнение луча приобретает простецкий вид.
Я пока что застрял на получении перпендикулярного вектора. У меня по известной формуле почему-то выводятся разные вектора за фрейм.
float px = y0 * z1 - z0 * y1;
float py = z0 * x1 - x0 * z1;
float pz = x0 * y1 - y0 * x1;

//CrossVectornormalized
Debug.Log(new Vector3(px, py, pz).normalized);
Эти вектора противоположны по направлению. Так то можно это легко победить SQRT (py^2). Но надо понять почему так происходит.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Уравнение луча в пространстве и на плоскости?

Сообщение Cr0c 17 фев 2018, 07:16

NOVA писал(а):То есть соответствующие X,y,z этих векторов попарно равны.

Тэк-с, не понял. Второй объект на таком же угле к той плоскости, что и первый?
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Пред.След.

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 23