Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Урок Геометрии :) (http://www.flasher.ru/forum/showthread.php?t=98609)

Zuben 17.07.2007 15:59

Урок Геометрии :)
 
Народ, подскажите, по какой формуле вычисляется угол между двумя точками с известными координатами. Я всю ночь сегодня голову ломал, графики чертил, выявлял закономерности, но так ничего и не понял.
Без этого, чувствую, 3Д движок создать не удасться.

В школе учился давно и с читами. :(

dedsky 17.07.2007 16:07

для получения этого угла во флеше даже математику знать не надо. Есть такие функции Math.atan и Math.atan2

Double 17.07.2007 16:20

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

Zuben 17.07.2007 16:27

atan2 выдает какие-то странные числа. Что он берет за начало координат?

Код:

var mouseListener:Object = new Object();
mouseListener.onMouseMove = function()
{
    trace(Math.atan2(_xmouse, _ymouse));
}
Mouse.addListener(mouseListener);

Выдает значения от 0 до 1.6.

etc 17.07.2007 16:51

Ну для начала в atan2 первым аргументом идет y, а потом x. Значение выдается в радианах.

Zuben 17.07.2007 17:01

А как переводить радианы в градусы?

__i 17.07.2007 17:21

grad = rad/Math.PI * 180;
но я думаю что даже с этими знаниями тебе не удастся сделать 3д двиг...

Zuben 18.07.2007 15:15

Вложений: 1
Ну почему же? Движок почти собрал. Осталось только узнать, как вычислить координаты точки с известным углом и расстоянием от начала координат.
Может и здесь кто поможет?

На вложенном чертеже зеленым цветом выделены известные значения, а красным - то, что нужно найти.

goarcade 18.07.2007 15:54

x = Math.cos(alpha)*S;
y = Math.sin (alpha)*S;
//S - растояние от начала координат;
//alpha - угол в радианах.

vitlance 19.07.2007 08:59

координаты первой точки x_cord1; y_cord1
координаты второй точки x_cord2; y_cord2

А вот код подсчёта "угла" между ними:

Код:

delta_x = x_cord1 - x_cord2;
delta_y = y_cord1 - y_cord2;
angle = -Math.atan2(delta_x, delta_y)/(Math.PI/180);
trace(angle);



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

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.