[js] Vec2 (двумерный вектор)
Двумерный Вектор (Vec2), на JavaScript.
Весьма "грубое" решение расширить Float32Array, т.к. IE9 не держит их, лечиться правда очень просто - условием что если Float32Array нету, присваиваем к нему Array, и всё работает даже на древних платформах. Исходники: https://gist.github.com/Maksims/8464888 Список поддерживаемых методов: PHP код:
Приставка S - метод принимает один аргумент - число. Приставка R - принимает один аргумент - угол в radians. Приставка XY - принимает два аргумента, x и y. Вот пример реализации 2д камеры pick (координаты экрана курсора преобразуем в координаты мира), с учётом - позиции, поворота и приближения камеры: PHP код:
|
Ответ: [js] Vec2 (двумерный вектор)
Изобрёл велосипед, не поискав готовых решений.
http://glmatrix.net/docs/2.2.0/ mat2 mat2d mat3 mat4 quat vec2 vec3 vec4 Уже давно есть и работает везде. |
Ответ: [js] Vec2 (двумерный вектор)
Я давно вкурсе про glMatrix ещё до имплементации данной библиотеки.
Но если ты работал с glMatrix, то ты отметишь для себя что данная библиотека не поддерживает chaining, а имеено то что я указал в примере, т.к. классы (по факту объекты) - лишь имеют функции а не методы над данными (не прототип над массивом). Следственно твой аргумент не уместен по причине отличия решений, и по факту невозможность chain'ить мат. выражения - является первопричиной разработки своей библиотеки. Также не имеет никакого "прозрачного" кеша для тебя, что прийдётся расширять библиотеку и переписывать методы копирования, инициализации и т.п. Моё решение решает только одну задачу: vec2, то что мне требуется. Да и моя библиотека рвёт glMatrix по производительности в клочья. |
Ответ: [js] Vec2 (двумерный вектор)
Цитата:
|
Ответ: [js] Vec2 (двумерный вектор)
Вложений: 1
Коментарии излишни...
(больше - лучше) http://jsperf.com/glmatrix-vec2-vs-vec2 Даже без кеша, выийгрывает почти вдвое, с кешем, выйгрывает в 11+ раз. Я уже не говорю о разнице того как код выглядит... glMatrix: PHP код:
PHP код:
Честно сказать это было и до тестов очевидно, если ты заглядывал в то как glMatrix работает и в моё решение, а не задавал бы подобных вопросов. И ещё факт того что я написал данную либу - позволило мне изучить как на самом деле работает математика каждой функции при работе с 2D векторами, и я считаю это огромный бенефит. |
Ответ: [js] Vec2 (двумерный вектор)
что понимается под кэшированием вектора?
|
Ответ: [js] Vec2 (двумерный вектор)
не хватает сравнения с кешироваными матрицами.
|
Ответ: [js] Vec2 (двумерный вектор)
Цитата:
Тем самым мы экономим огромное количество производительности. SBJoker, угу, там разница была бы ещё в разы круче. Но данная библиотека имплиментирует только 2ух мерный вектор, и матриц в ней нету. |
Часовой пояс GMT +4, время: 11:19. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot