Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Поворот линии полностью по всей окружности (http://www.flasher.ru/forum/showthread.php?t=153491)

Тимур 03.04.2011 22:32

Поворот линии полностью по всей окружности
 
Доброго времени суток...
У меня есть точка из которой выходит линия, упирающаяся в объект...как сделать так, чтобы линия полностью проходила окружность приклеенная к объекту...она же проходит половину окружности и делает + пи(180градусов)...
Код AS1/AS2:

var x1:Number = 100;
                        var y1:Number = 200;
                        var x2:Number = obj.x;
                        var y2:Number = obj.y;
                        var dx:Number = x2 - x1;
                        var dy:Number = y2 - y1;
                        var angle:Number = Math.atan(dy / dx);
                        if ((НУЖНО ПОСТАВИТЬ ВЕРНОЕ УСЛОВИЕ))
                        {
                                angle += Math.PI;
                        }
 
                        var dist:Number = Math.sqrt(dy * dy + dx * dx) - 50;
                        var endX:Number = x1 + Math.cos(angle) * dist;
                        var endY:Number = y1 + Math.sin(angle) * dist;
                        graphics.lineStyle(1, 0x000000);
                        graphics.moveTo(x1, y1);
                        graphics.lineTo(endX, endY);
                        arrow._rotation = angle * 180 / Math.PI;
                        arrow._x = endX;
                                  arrow._y = endY;

Вопрос в том чтобы подобрать условие для устранения проблемы...

dark256 03.04.2011 22:43

Rcur - текущий угол
Ncur - новый угол

Код AS1/AS2:

function calcAngle( Rcur, Ncur ){
        var N2cur = Number(Ncur)
 
        if ( Rcur < 0 ) { N2cur -= 360 }
        if ( N2cur-Rcur > 180 ) { N2cur -=360 } else if ( N2cur-Rcur < -180 ) { N2cur +=360 }       
 
        return N2cur
}

N2cur - результирующе верный :)

Тимур 04.04.2011 00:56

Прошу прощения за непонятливость, а что конкретнее должно быть равно Rcur, Ncur или N2cur в моем случае?

Добавлено через 12 часов 27 минут
Помогите...как то неправильно сипользую я вышеописанный метод?
Код:

var x1:Number = 100;
var y1:Number = 200;
var x2:Number = obj.x;
var y2:Number = obj.y;
var dx:Number = x2 - x1;
var dy:Number = y2 - y1;
var angle:Number = Math.atan(dy / dx);
                        var N2cur:Number;
                        if (angle < 0)
                        {
                                N2cur = angle - 2 * Math.PI;
                                var angleVar:Number = angle;
                                angle = N2cur;
                        }
                       
                        if (N2cur - angle > Math.PI)
                        {
                                angle = N2cur - 2 * Math.PI;
                        }
                        else if (N2cur - angle < -Math.PI)
                        {
                                angle = N2cur + 2 * Math.PI;
                        }
var dist:Number = Math.sqrt(dy * dy + dx * dx) - 50;
var endX:Number = x1 + Math.cos(angle) * dist;
var endY:Number = y1 + Math.sin(angle) * dist;
graphics.lineStyle(1, 0x000000);
graphics.moveTo(x1, y1);
graphics.lineTo(endX, endY);
arrow._rotation = angle * 180 / Math.PI;
arrow._x = endX;
arrow._y = endY;

потому что итог тот же остался


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

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