Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Скейл относительно точки (http://www.flasher.ru/forum/showthread.php?t=209994)

Nooob 14.01.2015 13:09

Я понял в чем проблема, у тебя масштабирование изменяется до указанного, а у меня масштабируется масштабированное.
чтоб работало так же нужно sx и sy указать с учетом текущего масштаба * 1 / scale или
Код AS3:

                private function scaleAround2 (m:Matrix, p:Point, sx:Number, sy:Number):Matrix
                {
                        sx *= (1 / Math.sqrt(m.a * m.a + m.b * m.b));
                        sy *= (1 / Math.sqrt(m.d * m.d + m.c * m.c));
 
                        var a:Number = m.a * sx;
                        var b:Number = m.b * sx;
                        var c:Number = m.c * sy;
                        var d:Number = m.d * sy;
                        m.tx += (m.a - a) * p.x + (m.c - c) * p.y;
                        m.ty += (m.b - b) * p.x + (m.d - d) * p.y;
                        m.a = a;
                        m.b = b;
                        m.c = c;
                        m.d = d;
                        return m;
                }

ну в общем да

alatar 14.01.2015 15:09

В итоге у тебя получилось тоже самое. Нормализация векторов {a, b} и {c, d} и смещение на разницу между положением точки p до трансформации и после.

alatar 05.02.2015 19:49

http://www.flasher.ru/forum/blog.php?b=704


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

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