J'ai un quaternion représentant l'orientantion d'un objet (boîte jaune et sphère). Je voudrais savoir s'il est possible de diviser ce quaternion en autres quaternions qui nous donnent la rotation de chaque axe local (X, Y et Z).Diviser le quaternion en rotation d'axe
Ce que je fais jusqu'à présent est d'obtenir la représentation d'Euler et de travailler avec elle, mais ce n'est pas la bonne solution pour mon cas particulier:
Étant donné deux points (boîtes bleues), Je veux limiter l'orientation de mon objet pour qu'il ne puisse pas pointer du plan gris, même si mon quaternion regarde de ce plan. Je veux diviser (décomposer) le quaternion, parce que quand mon objet atteint la limite du plan (par exemple, le droit), je veux le faire rester (dans ce composant), puis faire pivoter mon objet dans le composante verticale, en utilisant l'un des nouveaux quaternion divisé.
Je travaille avec Unity.
je l'espère, il est compréhensible mon problème :)
serait 'rotation Quaternion = Quaternion.Euler (nouveau Vector3 (transform.eulerAngles.x, 0, 0)) 'être applicable? –
Merci @Peh pour l'édition. Merci Ryan, mais je veux éviter les angles d'Euler car le quaternion originel vient d'un IMU externe, et en limitant l'orientantion avec des angles d'Euler j'ai eu quelques problèmes – javinair
[Quaternion.eulerAngles] (https://docs.unity3d.com /ScriptReference/Quaternion-eulerAngles.html) est une chose, mais je pense que c'est ce que vous utilisez déjà. Je sais que les valeurs 'wxyz' n'aideront pas du tout car elles sont incomplètes. Le mieux que je puisse penser est de calculer un Euler 'AngleTo()' (vous devrez écrire cette méthode) sur les deux cases bleues et vérifier que les deux composantes X et Y sont supérieures à 0 (ou moins, selon le cas). – Draco18s