Exemple GLGravity iPhone montrant comment utiliser l'accéléromètre et OpenGL souffre d'un problème de blocage de cardan. Je me demande s'il existe un code disponible utilisant la rotation du quaternion au lieu des angles d'Euler? Toute aide sera grandement appréciée, je me bats avec cela depuis longtemps sans succès ...Exemple d'iPhone GLGravity utilisant des quaternions
Répondre
Il aide à avoir une bonne compréhension de la théorie des choses avant d'essayer de l'implémenter et de l'utiliser soi-même. Voici deux articles d'introduction sur l'utilisation des quaternions pour les rotations. Les deux sont principalement liés à lisser rotation interpolations et évitant le blocage Cardan dans les rotations accumulées:
Gamedev.net - Quaternion Powers
Gamasutra - Rotating Objects Using Quaternions
Maintenant, en ce que le code réel va, je vous conseille de prendre et d'utiliser, une « force de l'industrie "bibliothèque de mathématiques de vecteur par opposition à rouler le vôtre. Ma suggestion serait de saisir la partie LinearMath du projet Middleware Bullet Physics. La physique des balles, et la bibliothèque mathématique linéaire incluse, est développée par certains des meilleurs ingénieurs de Sony et a été en développement actif pendant des années. Il est disponible gratuitement, n'est soumis à aucune licence (licence Zlib) et est utilisé par les développeurs de jeux professionnels du monde entier. La lib est plate-forme/architecture croisée et compile sur n'importe quoi de l'iPhone à la PS3.
La classe lib offre une classe Quaternion qui vous permet de créer des quaternions à partir d'angles euler ou d'une rotation autour d'un axe arbitraire, par ex. en utilisant setEulerZYX. Une fois que vous avez vos quaternions, il y a des fonctions intégrées pour toutes les opérations communes qui leur sont applicables; plus, moins, mul, normalize, slerp et bien plus encore.
Pour réellement appliquer votre quaternion final au rendu OpenGL, la classe Transform vous permet de construct une matrice à partir d'un quaternion. La classe de transformation inclut à son tour une fonction getOpenGLMatrix qui vous donne directement une matrice compatible à transmettre à OpenGL. Le lib comprend également une foule d'autres classes et fonctions matricielles et vectorielles très utiles.
Prenez le dernier dist Bullet de google code, ou simplement saisir la partie LinearMath du code directement à partir de la subversion en utilisant: svn checkout http://bullet.googlecode.com/svn/trunk/src/LinearMath
Wow, merci pour l'information utile! Je vais passer du temps à creuser dans la théorie et essayer de construire quelque chose d'utile à partir de la bibliothèque.Ces liens sont très utiles, après des jours de recherche je ne les ai pas frappés. –
- 1. 'Différence' entre deux quaternions
- 2. Exemple de liste liée utilisant des threads
- 3. asp.net fullcalendar exemple utilisant des formulaires Web
- 4. Comment faire pivoter autour du centre de l'écran en utilisant quaternions dans opengl?
- 5. Exemple d'un histogramme utilisant wxWidgets
- 6. Exemple utilisant JavaAdapter de rhino
- 7. Exemple utilisant BLOB dans SQLAlchemy
- 8. Exemple utilisant WikipediaTokenizer en Lucene
- 9. Exemple d'application Java ou .NET utilisant des services Web?
- 10. Problème de retournement lors de l'interpolation des rotations à l'aide de quaternions
- 11. Exemple d'application (s) utilisant Castle ActiveRecord?
- 12. Exemple de code client HID utilisant Bluez
- 13. Android Exemple Twitter xAuth utilisant twitter4j
- 14. Exemple d'analyseur d'expression simple utilisant Boost :: Spirit?
- 15. Exemple d'application Facebook utilisant TurboGears - pyFacebook
- 16. Castle ActiveRecord utilisant Linq pour Nhibernate Exemple
- 17. Exemple d'ASP.NET/C# utilisant Facebook Connect Toolkit 3.0
- 18. Exemple de génération d'UUID en utilisant Boost en C++
- 19. Exemple complet de traitement d'image utilisant l'API Cocoa
- 20. Exemple de recherche Delphi Prism Application ASP.Net utilisant SQL Server
- 21. Impossible de créer un exemple d'application en utilisant Yii Framework
- 22. Exemple de code Mac utilisant USB et CFRunLoopSource
- 23. Comment faire pivoter un objet autour d'un point à l'aide de quaternions?
- 24. django: form.fields pas itérer exemple des champs
- 25. Exemple d'utilisation des aides à l'action
- 26. Exemple de NSTask exécutant des pipelines complexes
- 27. Un exemple sur comment persister Objet avec une liste d'adresses distante utilisant des ensembles de données?
- 28. Comment obtenir UITableViewCell dans un exemple d'accessoire en utilisant des données de base
- 29. Demander un exemple de code pour analyser XML et obtenir des attributs en utilisant l'API GData
- 30. Exemple de jqgrid utilisant des données de tableau, qu'est-ce qui me manque?
dernier j'ai vérifié, il y avait beaucoup de conetention sur si oui ou non les développeurs même besoin de s'inquiéter quaternions. L'alternative la plus commune que j'ai vue était d'utiliser des cadres de référence relatifs pour éviter le blocage du cardan (le compromis semblait être que les quaternions nécessitaient un peu moins de code mais étaient plus difficiles à comprendre - les différences de performance étaient probablement négligeables). Je posterais un lien mais cela fait trop longtemps que je n'en trouve pas. :( – FrustratedWithFormsDesigner