![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Его пока нет, но, думаю скоро появится
И не одинЯ только начал изучать векторы |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 137
|
М-да...
public function set length(value:Number):void { var _angle:Number = angle; _x = Math.cos(_angle) * value; _y = Math.sin(_angle) * value; if(Math.abs(_x) < 0.00000001) _x = 0; if(Math.abs(_y) < 0.00000001) _y = 0; } /** * Returns the length of the vector. **/ public function get length():Number { return Math.sqrt(lengthSquared); } Длину надо кэшировать. Для того, чтобы можно было: Последний раз редактировалось semenyakinVS; 13.02.2011 в 03:16. Причина: Глючный тег [AS3] |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
|
|
|||||
|
Регистрация: Mar 2010
Сообщений: 137
|
Хм... Ну, как сказать. Вместо трёх тригонометрических функций и двух умножений имеем два умножения и два деления.
|
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
Не знаю, если бы это были какие-то сложнейшие функции, то может и был бы смысл их заменять, а так... |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 137
|
Ладно... Объясню по-другому.
Я проверял быстродействие разных элементарных математический операций. Результаты (10000000 итераций): (+): 819 (-): 748 (*): 775 (/): 856 (%): 1263 (cos): 3102 (atan2): 3807 Если честно, немного удивил результат для умножения и деления. До этого я получал другие показатели. Код проверки: var iterCount:uint = 10000000; var i:uint; var time:Number; var b:Number = Math.random(); // ===================================== time = getTimer(); for(i = 1 ; i <= iterCount ; i++) { i+b; } trace("(+): "+(getTimer()-time)); // ===================================== time = getTimer(); for(i = 1 ; i < iterCount ; i++) { i-b; } trace("(-): "+(getTimer()-time)); // ===================================== time = getTimer(); for(i = 1 ; i <= iterCount ; i++) { i*i; } trace("(*): "+(getTimer()-time)); // ===================================== time = getTimer(); for(i = 1 ; i <= iterCount ; i++) { i/b; } trace("(/): "+(getTimer()-time)); // ===================================== time = getTimer(); for(i = 1 ; i <= iterCount ; i++) { b%i; } trace("(%): "+(getTimer()-time)); // ===================================== time = getTimer(); for(i = 1 ; i <= iterCount ; i++) { Math.cos(i); } trace("(cos): "+(getTimer()-time)); // ===================================== time = getTimer(); for(i = 1 ; i <= iterCount ; i++) { Math.atan2(b,i); } trace("(atan2): "+(getTimer()-time)); // ===================================== |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Раз пошла такая пьянка, то вот вам пища для размышления
![]() public class Vector2 { public function Vector2( x:Number=0.0, y:Number=1.0 ) { this.x = x; this.y = y; } // fields public var x:Number; public var y:Number; // registers private static var $r_f01:Number; public function normalize( len:Number=1.0 ):void { $r_f01 = len / Math.sqrt(x*x + y*y); x *= $r_f01; y *= $r_f01; } }
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 137
|
О!.. Кстати, давно хотел спросить - что вот это такое? $r_f01
|
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
не понял? обычная переменная вроде бы как..
__________________
Загружаем картинки, минуя ошибки безопасности |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:50. |
|
|
« Предыдущая тема | Следующая тема » |
|
|