forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   ATan2... (http://forum.boolean.name/showthread.php?t=7876)

Slepetc 21.02.2009 02:02

ATan2...
 
Народ, дело в том, что щас я пишу игру на пирике и мне очень помогло, если кто-то смог бы выложить уравнение, по которому работает ATan2 в BB.

ABTOMAT 21.02.2009 02:19

Ответ: ATan2...
 
Вложений: 1
Товарищ, это же простейшая тригонометрия:
Тангенс есть отношение противолежащего угла к прилежащему (в нашем случае это y и x соответственно) Ну, а имея тангенс можно получить и его арктангенс. Таким образом получаем:
Код:

Font = LoadFont("Arial",18)
SetFont font
Print ATan2(4.0,3.0) ; Через ATan2
Print ATan(4.0/3.0) ; Через описанное выше и ATan
WaitKey

Выводит 2 одинаковых знаения Ч.т.д.

HolyDel 21.02.2009 03:48

Ответ: ATan2...
 
хм. а так?
Код:

Font = LoadFont("Arial",18)
SetFont font
Print ATan2(4.0,0.0) ; Через ATan2
Print ATan(4.0/0.0) ; Через описанное выше и ATan
WaitKey


johnk 21.02.2009 08:20

Ответ: ATan2...
 
Цитата:

4.0/0.0
:blink:

jimon 21.02.2009 09:11

Ответ: ATan2...
 
JohnK
это же float

johnk 21.02.2009 09:55

Ответ: ATan2...
 
Я что-то упустил, или блиц умеет делить на ноль?


SBJoker 21.02.2009 12:35

Ответ: ATan2...
 
Как дети малые..делить на ноль нельзя целые числа, а дробные можно.

HolyDel 21.02.2009 13:52

Ответ: ATan2...
 
дробные тоже нельзя. точнее будет "бесконечность"
курите ftp://ftp.elin.ru/pdf/iBDL/Float_IEEE_754.pdf

поэтому то я и говорю, что atan(a/b) это не одно и тоже, что и atan2(a,b).

Slepetc 21.02.2009 13:59

Ответ: ATan2...
 
Цитата:

Сообщение от ABTOMAT (Сообщение 98702)
Товарищ, это же простейшая тригонометрия:
Тангенс есть отношение противолежащего угла к прилежащему (в нашем случае это y и x соответственно) Ну, а имея тангенс можно получить и его арктангенс. Таким образом получаем:
Код:

Font = LoadFont("Arial",18)
SetFont font
Print ATan2(4.0,3.0) ; Через ATan2
Print ATan(4.0/3.0) ; Через описанное выше и ATan
WaitKey

Выводит 2 одинаковых знаения Ч.т.д.

Я собственно обратился потому что, если x<0 и y<0, то результат будет неверен.Я терялся из-за того, что пурик выводил результат в радианах, а я эт не сразу заметил.

HolyDel 21.02.2009 14:06

Ответ: ATan2...
 
вообще atan2 довольно тупая команда (как пробка).
есть две точки, x1,y1 и x2,y2.
тогда atan2(x2-x1,y2-y1) показывает направление от точки 1 к точке 2.

а какие в пурике есть тригонометрические операции?

Slepetc 21.02.2009 16:12

Ответ: ATan2...
 
Стандартные Asin Sin ATan Tan ACos Cos и всё.Причем углы возвращаются в радианах, а вводить их надо в градусах.


В итоге я это сделал так:
Код:

Procedure ag(x.f,y.f)
If y.f=0
y.f=0.001
EndIf

ag.f=-ATan(x.f/y.f)
ag.f=ag.f*#rad

If y>=0
ag.f=ag.f+180
EndIf

    RotateSprite3D(me, ag.f, 0)
EndProcedure


impersonalis 21.02.2009 21:45

Ответ: ATan2...
 
http://forum.boolean.name/showpost.p...07&postcount=4

impersonalis 21.02.2009 21:47

Ответ: ATan2...
 
Цитата:

Сообщение от JohnK (Сообщение 98710)
Я что-то упустил, или блиц умеет делить на ноль?

http://forum.boolean.name/showthread.php?t=167

impersonalis 21.02.2009 22:16

Ответ: ATan2...
 
Цитата:

поэтому то я и говорю, что atan(a/b) это не одно и тоже, что и atan2(a,b).
дело в-первую очередь не в делении на ноль, а в том что atan для пары чисел (a,b) и (-a,-b) будет возвращать одно и тоже значение, а atan2 - нет. Для разных задач требуется то atan, то atan2.
мат.часть


Часовой пояс GMT +4, время: 20:09.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot