DivideConcept.net

le blog de divide.

Archive pour janvier 2013

Si il y a bien un type de calcul qui revient très fréquemment dans le monde du jeu vidéo ou dans les applications techniques et scientifiques, c’est bien les fonctions trigonométriques. Dès qu’un calcul implique des vecteurs, que ce soit de la 2D, de la 3D ou même du son, ces fonctions (sin, cos, atan2 et sqrt) sont indispensables.

Malheureusement ce sont aussi des fonctions qui consomment beaucoup de temps de calcul (par rapport à une simple addition ou multiplication).
Il existe quelques approximations connues, comme le Fast inverse square root popularisé par John Carmack par exemple, mais ce genre de fonctions restent très imprécises (erreurs de 0.1% à 1%) et sont même dépassés en terme de performance par d’autres méthodes plus précises.

SpectraLayers fait énormément appels aux vecteurs et à la trigonométrie (un spectre étant intégralement composés de vecteurs 2D), je me suis donc attelé à la mise au point d’une librairie spécifique pour la version 2.
Le but de cette librairie est de gagner significativement en performance par rapport aux fonctions standard, tout en conservant un maximum de précision.

2 niveaux d’approximation sont proposés:
L’erreur maximum des fonctions FT:: varie de 0.024% à 0.06%
L’erreur maximum des fonctions FTA:: varie de 0% à 0.0007%

Une version SSE (traitement de 4 valeurs en parallèle) et Qt (pour une utilisation facile sur les classes QVector2D et QVector3D) est également proposé.

Pour les fonctions FT:: le gain en vitesse va de 2 à 8 sur Visual Studio 2012 x64 selon les fonctions et la déclinaison utilisé (normale ou SSE).
Pour les fonctions FTA:: le gain en vitesse va de 1.5 à 5 sur Visual Studio 2012 x64 selon les fonctions et la déclinaison utilisé (normale ou SSE).
Le gain peut être potentiellement plus important encore sur d’anciens compilateurs ou compilateurs x86.

La bibliothèque FastTrigo peut se télécharger ici : https://github.com/divideconcept/FastTrigo

MAJ: Rajout de 3 panoramiques supplémentaires

Avec Android 4.2, Google a rajouté une fonction Photo Sphere pour capturer des panoramas à 360 degrés similaires aux vues Google Street. Comme les conditions météo s’y prêtaient, petite session dans Paris ce matin pour tester cette nouvelle fonctionnnalité avec le Galaxy Nexus…

Pour l’instant les Photo Spheres ne peuvent être visualisés en mode “Google Street” que via Google+ ou Google Maps (si géolocalisé). Cliquer sur l’image ci-dessous pour accéder à l’album Google+, puis sur chaque photo pour l’afficher en mode “Street View” :
Paris sous la neige 360

Le mode Photo Sphere est vraiment très facile à utiliser; les résultats sont variables si la prise de vue est trop rapide ou si le point de vue n’est pas stable, mais dans l’ensemble le collage marche plutôt bien, sachant qu’il s’agit d’un assemblage de 44 photos pour chaque panoramique. Il faut compter en gros 2 minutes pour capturer la totalité d’une sphère via l’application Android.

Pour compléter, une série de 16 photos “classiques” prises avec un Panasonic GH1 :
Paris sous la neige