Немного геометрии, затупил...

Общие вопросы о Unity3D

Немного геометрии, затупил...

Сообщение Левш@ 24 мар 2012, 12:44

Собственно сабж, встала задача:

Изображение

Имеем длины сторон a, b, c и можем измерить угол С (в реалтайме).
Вопрос - как исходя из этих данных вычислить вертикальную высоту между С и B (длину d) ???
Вроде все просто, но затупил... :-\
Нужна максимально простая формула.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Немного геометрии, затупил...

Сообщение Order 24 мар 2012, 12:47

рассматривай прямоугольный треугольник, гипотенуза и катеты.

А подробнее задачу ? может еще проще сделать ?
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Re: Немного геометрии, затупил...

Сообщение Левш@ 24 мар 2012, 12:54

прямоугольный треугольник

:( Он не прямоугольный, он может быть любой произвольной формы.

может еще проще сделать ?

Нет проще никак...
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Немного геометрии, затупил...

Сообщение seaman 24 мар 2012, 12:57

b - вертикальна? Если да - d=a*cos(C)
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Немного геометрии, затупил...

Сообщение Левш@ 24 мар 2012, 13:00

Да, b всегда строго вертикальна, обьект С это дочерний обьект А
А обьект B подвижен, его вертикальную высоту относительно С и надо вычислять в реалтайме.
Последний раз редактировалось Левш@ 24 мар 2012, 13:05, всего редактировалось 1 раз.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Немного геометрии, затупил...

Сообщение Левш@ 24 мар 2012, 13:07

Мне тут подсказали на другом форуме : d = a*sin(90-C) вроде аналогично?

PS. Нефик мне было в школе прогуливать математику... :-w А солнышко за окном манило... :)
Последний раз редактировалось Левш@ 24 мар 2012, 18:38, всего редактировалось 1 раз.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Немного геометрии, затупил...

Сообщение seaman 24 мар 2012, 13:18

Ну да. cos(a) = sin(90-a)
Изображение
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Немного геометрии, затупил...

Сообщение jetyb 24 мар 2012, 13:21

Формула Герона -> площадь треугольника -> площадь треугольника через 2 стороны a ,b и угол C -> sin(C) -> cos(C) -> d .
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Немного геометрии, затупил...

Сообщение Левш@ 24 мар 2012, 13:25

Всем спасибо! :) Щас все это перенесу в код.
Это для 3 мерного радара, мне надо вычислять текущую высоту цели относительно камеры радара и игрока, не зависимо от дистанции и позиции цели.
Глобальные position.y тут не катят, потому что радар вращается в пространстве.
Последний раз редактировалось Левш@ 24 мар 2012, 18:39, всего редактировалось 4 раз(а).
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Немного геометрии, затупил...

Сообщение seaman 24 мар 2012, 13:27

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

Re: Немного геометрии, затупил...

Сообщение jetyb 24 мар 2012, 13:39

seaman
Для нахождения катетов CFB все равно придется находить его углы, а по условию они неизвестны.
Хотя действительно странно, что радар может измерить расстояние до цели но не знает ее угловые координаты.

Да и если результат вычислений совершенно однозначный, то зачем их проводить, можно попросту "украсть" координаты цели.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Немного геометрии, затупил...

Сообщение seaman 24 мар 2012, 13:46

Читаем условие:
и можем измерить угол С (в реалтайме)
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Немного геометрии, затупил...

Сообщение Левш@ 24 мар 2012, 13:58

можно попросту "украсть" координаты цели.

Глобальные position.y тут не катят, потому что радар вращается в пространстве.

Глобальные координаты цели тут ничем не помогут, когда летишь вверх ногами все меняеться местами, а игроку нужно из любого положения в пространстве знать в каком направлении относительно него (не глобального 0) находиться цель на радаре. Поэтому в Update вычисляеться относительная к игроку и радару вертикальная высота цели.
Может кому понадобиться, получилась такая вот конструкция:

Синтаксис:
Используется javascript
var plrHgt = Vector3.Distance(radCam.position, plr.position); // b
var trgDist = Vector3.Distance(radCam.position, trg.position); // a
var plrDir = plr.position - radCam.position; // vector C > A
var trgDir = trg.position - radCam.position; // vector C > B
var radAngle = Vector3.Angle(plrDir, trgDir); // angle C
var trgHgt = trgDist * Mathf.Cos(radAngle); // искомое d
 
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Немного геометрии, затупил...

Сообщение Левш@ 24 мар 2012, 16:35

Вобщем мура это все, не взлетело... соотношение высот все равно сохраняеться при повороте плеера.
Все решилось гораздо проще.
Угол между радаром и transform.forward плеера всегда = 90гр. Даже мерять не надо.
Остаеться замерить угол между радаром и таргетом и сравнить с первым. :))
Дема тут: viewtopic.php?f=17&t=7821&st=0&sk=t&sd=a
Последний раз редактировалось Левш@ 24 мар 2012, 17:18, всего редактировалось 1 раз.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Немного геометрии, затупил...

Сообщение artk 24 мар 2012, 16:37

И зачем тогда так сложно? У вас есть пространство векторов. Зачем вам углы? Сделайте преобразование системы координат. И пора уж вспомнить школьную программу...
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

След.

Вернуться в Общие вопросы

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16