правильно ли отображается точка пересечения двух отрезков?

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

правильно ли отображается точка пересечения двух отрезков?

Сообщение Medveckij 17 янв 2013, 17:21

Вопрос видимо туп как китайский ножик, но все же...

к примеру, нас интересует нахождение точки пересечения двух отрезков.

к примеру, у нас есть player и у нас есть enemy. рисуем еще одну точку - Vector3 eshioOdnaTochka = player.transform.TransformDirection(Vector3.forward);

вопрос номер раз: почему если вывести в консоль отрезок (player.position, eshioOdnaTochka), то в редакторе видно, что (eshioOdnaTochka) находится на оси координат (0, 0, 1) от нуля мировых координат, а не от центра позиции player`a. Если так и надо, то почему?
Если бы это было и вправду так, как рисует редактор, то находись enemy перпендикулярно player`у по оси x, точка пересечения двух отрезков не равнялась бы нулю, потому-что угол между отрезками был бы меньше 90гр., а значит cos(Θ) +. Или я запуталсo?

вопрос номер два: Какие вы знаете практические применения с вычислением точки пересечения двух отрезков? Ну кроме банального "враг находится сзади". Это тоже не верно, он не находится сзади.
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: правильно ли отображается точка пересечения двух отрезков?

Сообщение seaman 17 янв 2013, 18:25

1. Vector3.forward - "вперед" не у объекта, а у глобальной системы координат (мировой)
2.
находись enemy перпендикулярно player`у по оси x

Это не понял. Как может точка (позиция) перпендикулярно чему-нибудь?
к примеру, нас интересует нахождение точки пересечения двух отрезков.
к примеру, у нас есть player и у нас есть enemy. рисуем еще одну точку - Vector3 eshioOdnaTochka = player.transform.TransformDirection(Vector3.forward);

Вот совсем не стыкуется "точка пересечения двух отрезков" и положение двух объектов. Что Вы имели в виду? Где тут два отрезка? - нарисуйте.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: правильно ли отображается точка пересечения двух отрезков?

Сообщение Medveckij 17 янв 2013, 19:05

Изображение



во втором примере забыл стереть градусы, sorry.
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: правильно ли отображается точка пересечения двух отрезков?

Сообщение seaman 17 янв 2013, 19:12

И? К чему вообще все эти рисунки? Как они соотносятся с Вашими вопросами? Где тут вообще точка пересечения двух отрезков? Где тут вообще пересечение двух отрезков?
Зы Вы с кем сейчас говорили?
ЗЗЫ: а все же:
Vector3.forward - "вперед" не у объекта, а у глобальной системы координат (мировой)
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: правильно ли отображается точка пересечения двух отрезков?

Сообщение Medveckij 17 янв 2013, 19:18

Хорошо. Я окончательно запутался.

Синтаксис:
Используется csharp
Vector3 forward = transform.TransformDirection(Vector3.forward);

Vector3 toOther = other.position - transform.position;

float dot = Vector3.Dot(forward, toOther);
 


Если конечно не затруднит, нарисуйте как это должно выглядеть.
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: правильно ли отображается точка пересечения двух отрезков?

Сообщение seaman 17 янв 2013, 19:27

У меня с пространственным воображением тоже не очень. Я не могу сообразить куда будет направлен:
Синтаксис:
Используется csharp
Vector3 forward = transform.TransformDirection(Vector3.forward);

Vector3.forward - это глобальная ось Z
transform.TransformDirection - это перенос вектора Vector3.forward (т.е. - глобальной оси Z ) из локальной системы координат трансформа transform в глобальную систему координат.
Что в итоге получится - выше моего понимания.
Как я понимаю Вы хотите чтобы я нарисовал в итоге то:
Синтаксис:
Используется csharp
 float dot = Vector3.Dot(forward, toOther);

Но это - скаляр! Как его вообще нарисовать? :-?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: правильно ли отображается точка пересечения двух отрезков?

Сообщение Medveckij 17 янв 2013, 19:34

seaman писал(а):У меня с пространственным воображением тоже не очень. Я не могу сообразить куда будет направлен:
Синтаксис:
Используется csharp
Vector3 forward = transform.TransformDirection(Vector3.forward);

Vector3.forward - это глобальная ось Z
transform.TransformDirection - это перенос вектора Vector3.forward (т.е. - глобальной оси Z ) из локальной системы координат трансформа transform в глобальную систему координат.
Что в итоге получится - выше моего понимания.
Как я понимаю Вы хотите чтобы я нарисовал в итоге то:
Синтаксис:
Используется csharp
 float dot = Vector3.Dot(forward, toOther);

Но это - скаляр! Как его вообще нарисовать? :-?



Хорошо, становится яснее. А какой конкретно угол мне нужно считать, чтобы понять будет ли cos(Θ) 0, (+) или (-)? Где он находится на оси координат?
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: правильно ли отображается точка пересечения двух отрезков?

Сообщение seaman 17 янв 2013, 19:59

Я не понял? Вам нужно просто определить знак cos(Θ) - угла между двумя векторами?
Если да, то
Синтаксис:
Используется csharp
Vector3 one; // первый вектор
Vector3 two; // второй вектор
float cos = Vector3.Dot(one, two); // косинус угла отсчитываемого от вектора one к вектору two

ЗЫ: Вы так ставите задачи уже не в первый раз - я вот совсем не могу понять что Вам надо. Научитесь ставить вопросы. Правильно поставленный вопрос - половина ответа!
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: правильно ли отображается точка пересечения двух отрезков?

Сообщение Medveckij 17 янв 2013, 20:59

seaman писал(а):Я не понял? Вам нужно просто определить знак cos(Θ) - угла между двумя векторами?
Если да, то
Синтаксис:
Используется csharp
Vector3 one; // первый вектор
Vector3 two; // второй вектор
float cos = Vector3.Dot(one, two); // косинус угла отсчитываемого от вектора one к вектору two

ЗЫ: Вы так ставите задачи уже не в первый раз - я вот совсем не могу понять что Вам надо. Научитесь ставить вопросы. Правильно поставленный вопрос - половина ответа!



Спасибо за помощь и потраченное время. Ответа я правда так и не получил. Но вы правы, правильно поставленного вопроса не было, а значит можно сказать вопроса как такового тоже не было. Впредь постараюсь формулировать четко.
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44


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

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

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