Géométrie dans l'espace - Position système d'axe fonction d'

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Kontiki
Membre Naturel
Messages: 21
Enregistré le: 17 Nov 2015, 09:56

Géométrie dans l'espace - Position système d'axe fonction d'

par Kontiki » 17 Nov 2015, 10:57

Bonjour à tous

Je travaille dans la modélisation 3D et je cherche un peu d'aide sur une fonction que je n'arrive pas à mettre au point.

Voici les données du problème.

Soit un monde avec une origine 0 en X,Y et Z

Dans ce monde, un cercle placé sur le plan XY du monde.

Sur ce cercle un point représentant l'axe d'une autre pièce.

La rotation du cercle entraine la pièce.

Mon problème consiste à calculer les angles de l'axe de la pièce dans le monde lors de la rotation.

Voici un schéma et une photo de la modélisation :

Image

Image

Le cardan entraine la biellette dans sa rotation.

Soit :
H l'angle de rotation dans le plan X,Z
P l'angle de rotation dans le plan Y,Z
et B l'angle de rotation dans le plan X,Y

j'ai avancé la résolution du problème de la façon suivante :

Bb = cos (Hb) x Bc
Pb = sin (Hb) x Bc

avec b pour biellette et c pour cardan. Les angles sont en radians dans le calcul.

Ces formules fonctionnent pour un angle de biellette de 0° ou les multiples de 90°.

Si la biellette est orientée entre ces angles, la position à l'arrivée n'est pas bonne.

Un exemple ici :

Position de départ avec la biellette orientée à -30°

Image

La position d'arrivée après un renversement de -90° du cardan donne ceci :

Image

=> les angles d'arrivés sont mauvais.

Voilà, j'ai été bien long mais j'espère vous avoir donner une bonne compréhension de ma problématique et si d'aventure l'un de vous peut m'aider, j'en serais ravi.

Je pense que les fonctions sin et cos ne sont pas les bonnes.

Il me semble que la progression devrait suivre un incrément linéaire et que le facteur multiplicateur soit de 0.5 pour 45°. Mais c'est juste un sentiment, j'ai décroché avec cerveau obturé depuis quelques jours sur ce problème. Une vision neuve peut certainement être salvatrice.

Merci de votre lecture et de votre aide.



Robot

par Robot » 17 Nov 2015, 12:53

C'est long, mais pas clair du tout. Incapable de comprendre quel est ton problème, pour de vrai. Ni non plus le rapport exact entre la première partie de ton message et la suite avec ton mécanisme.
Et pourtant, en tant que Robot, les articulations universelles (ou de Cardan), je connais !

Kontiki
Membre Naturel
Messages: 21
Enregistré le: 17 Nov 2015, 09:56

par Kontiki » 17 Nov 2015, 13:11

Déjà, merci Robot d'avoir lu et répondu.

Je comprends la difficulté de lecture et d'interprétation. J'ai du mal à exposer clairement cette problématique.

Voici donc la synthèse de ce que je souhaite obtenir :

Image

La valeur en rouge est la valeur de contrainte que j'impose à l'angle Hb de la biellette.

La colonne Bcs est celle de l'angle de rotation du cardan.

Je dois trouver les formules me permettant d'arriver aux valeurs de Hb, Pb, Bb en fonction de l'angle donné au cardan. j'ai retenu pour ma recherche un incrément de 15° entre 0 et -90°.

Pour info, les valeurs dans les cellules les valeurs angulaires en degrés en référence aux axes d'origine que j'ai pu recueillir à l'aide d'une simulation sur le logiciel de Cao. De même - mais tu dois connaitre - HPB représente Heading, Pitch et bank (Lacet, tanguage, Roulis en Français)

J'espère que c'est plus clair comme cela.

Merci encore.

Robot

par Robot » 17 Nov 2015, 13:36

Je connais plutôt Yaw, pitch and roll mais ça ne me clarifie pas ton problème.
Pourquoi parles-tu de "l'angle donné au cardan" ? Dans le cardan il y a deux articulations rotoïdes, donc deux angles, non ?

Kontiki
Membre Naturel
Messages: 21
Enregistré le: 17 Nov 2015, 09:56

par Kontiki » 17 Nov 2015, 14:22

Parce que ce n'est pas un fonctionnement de cardan, mais une biellette (qui est orientable manuellement) sur ce que j'ai appelé un cardan mais qui en fait est un double fût tel que représenté sur les captures.

Ce "cardan" qui n'a qu'un seul degré de liberté est manœuvrable sur un arc de cercle d'environ 320°. En fait j'aurais plutôt du dire "angle auquel le cardan a été positionné".

C'est uniquement pour avoir des résultats en regard de quelques valeurs discontinues que j'ai fait cette simulation afin de pouvoir éventuellement mettre en équation et comprendre le fonctionnement linéaire et/ou sinusoïdale de la fonction à trouver.

Robot

par Robot » 17 Nov 2015, 14:30

Je comprends de moins en moins.

Kontiki
Membre Naturel
Messages: 21
Enregistré le: 17 Nov 2015, 09:56

par Kontiki » 17 Nov 2015, 15:34

Robot a écrit:Je comprends de moins en moins.


Désolé...

Pour tenter une dernière fois, je me concentre uniquement sur un des tableau :

Image

La colonne Hb me fait penser à une fonction de la forme d'un Cosinus : quand Bcs augmente, elle croit de -45° à 0°. J'approche le résultat avec la formule suivante : -45*cos(Bcs)

Inversement la colonne Pb me fait penser à une fonction en lien avec le sinus : quand Bcs augmente, elle croit aussi de 0 à 45°. Là aussi, j'approche le résultat avec la formule suivante : Bcs*sin(-45)

La colonne Bb elle varie en relation (linéaire ?) à celle de Bcs, de 0 à -90°. Je n'ai pas encore déterminé de formule approchant le résultat.

Les deux formules de Hb et Bb sont fausse, de plus en plus éloignée du résultat tel qu'il est mentionné dans ce tableau.
Par exemple, pour la valeur -45° de bcs, le résultat que j'obtiens en appliquant la formule ci-dessus pour Hb est de 31.82 au lieu de 35.264.

Il me manque donc un paramètre à prendre en compte pour être juste. C'est cela que je n'arrive pas à identifier.

Merci encore pour le temps que tu m'as consacré.

siger
Membre Complexe
Messages: 2705
Enregistré le: 16 Fév 2013, 19:56

par siger » 20 Nov 2015, 17:30

Bonjour

je suis comme Robot, je ne comprends pas grand chose a ton probleme ......

1-veux tu une aide pour resoudre (si possible) ton probleme mecanique? dans ce cas il faudrait mieux preciser clairement ce que tu cherches a obtenir et peut etre que les lecteurs auront une idee de solution
2- veux-tu une aide pour t'aider a resoudre le probleme methematique tel que tu l'as posé, de maniere astucieuse ou non?

en tout cas , d'apres les figures de mecanique presentées je ne vois pas le rapport avec les fonctions que tu cherches...

remarque: mon prof de physique aurait hurlé de colere si on lui avait presenté, comme tu le fais, des courbes representant "rien" en fonction d' "autre chose" ( mais ....c'etait il y a longtemps!)

Kontiki
Membre Naturel
Messages: 21
Enregistré le: 17 Nov 2015, 09:56

par Kontiki » 21 Nov 2015, 09:20

Franchement, je ne sais pas comment présenter autrement la problématique :
- Le cercle théorique et l'axe de fixation sont représentés schématiquement
- L'application qui en est faite est montrée, avec le défaut résultant de la situation actuelle.
- Les valeurs que je recherce sont données (et ce n'est pas rien en fonction de rien mais l'angle de chaque axe selon l'angle de rotation du cercle comme précisé dans les entêtes de colonne).
- Le raisonnement que je pressent est expliqué.
- l'ensemble est écrit dans un français syntaxiquement correcte et sans faute.

Il ne manque que la formule à trouver, pour arriver aux valeurs du tableau . C'est bien ce que je recherche.

Quelle information donner en plus ???

Désolé, là je sèche sur la formulation. Dommage que ton prof de physique ne soit pas là pour m'aider à mieux décrire, mais on a pas eu le même... et moi c'était il y a très, très longtemps.

;)

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 21 Nov 2015, 11:10

Bonjour Kontiki,

Mon problème consiste à calculer les angles de l'axe de la pièce dans le monde lors de la rotation.

un angle est définit entre deux vecteurs.
Si on prend l'axe x de la pièce, quel est l'autre vecteur qui sert pour calculer l'angle par rapport à x?
la vie est une fête :)

Kontiki
Membre Naturel
Messages: 21
Enregistré le: 17 Nov 2015, 09:56

par Kontiki » 21 Nov 2015, 21:04

un angle est définit entre deux vecteurs.
Si on prend l'axe x de la pièce, quel est l'autre vecteur qui sert pour calculer l'angle par rapport à x?


L'origine est donné par l'origine du monde selon un système Oxyz.

Le cercle tourne dans le plan XY du monde

Chaque axe de la pièce est calculé par rapport à l'axe du monde. Ainsi :
L'axe x de la pièce est à 0° lorsqu'il est confondu avec l'axe X du monde. De même pour l'axe Y de la pièce avec celui du monde et pareillement en Z.

Pour la bonne compréhension, sur cette photo est représenté le système de déplacement angulaire des axes du double fût. Son seul degré de liberté est représenté par la bande bleue (angle B). De la même façon la biellette est - pour cet exemple - décalée de -30° selon la bande verte (De son propre système d'axe). Ce décalage reste constant pendant toute la rotation du double fût.

Image

Voici une série de clichés décomposant le mouvement que j'obtiens. Sur ces clichés sont représentés les 3 systèmes d'axes : Le monde avec la flèche bleue en Z, le trait vertical vert en Y et le trait rouge pour l'axe des X. Chaque pièce (le double fut et la biellette ont aussi un système d'axe représenté en RVB pour X,Y et Z.

Le système au départ : angle B du double fût est de 0°: son système d'axe est dans la même position que celui du monde. La biellette est orientée en H de -30°.
Image


Ci-dessous, après que le double fût ait pivoté de -30°. La biellette semble (mais en fait c'est faux) avoir correctement suivi le mouvement de rotation.

Image

On voit bien que l'axe rouge du double fut a bougé par rapport à l'axe rouge du monde. Tous les axes de la biellette sont modifiés par rapport au monde et devraient être stables par rapport au système d'axe du double fut.

Ci-dessous, la rotation est de -60°. On commence à voir que la biellette n'a pas correctement suivi le double fût.

Image

Maintenant la rotation est passée à -90° et on perçoit parfaitement que la biellette n'a pas du tout suivi le double fût.

Image

Mon problème se situe ici.

La formule que je dois appliquer doit permettre d'arriver aux valeurs d'angle de chacun des axes figurant dans le(s) tableau(x) ci-avant.

Franchement, je vous remercie de me montrer votre volonté de m'aider.

N'étant ni mathématicien, ni physicien, je regrette de ne pouvoir vous expliquer plus formellement la difficulté devant laquelle je me trouve confronté. Pourtant, ceci doit être la base de tout logiciel de travail en 3D. La solution existe quelque-part, c'est certain.

Merci encore.

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 22 Nov 2015, 17:40

hello,

J'ai pas appliqué les résultats, mais à défaut de me planter, j'aurai au moins exprimé un peu plus le problème que je pense avoir bien compris depuis tes dernières explications.

ton cercle est de rayon R.
Soit P un point de ton cercle (qui définit l'origine du repère associé à ta pièce)
P va décrire le cercle et sa position est donnée par

P(theta) = R(cos(theta), sin(theta), 0) (car rotation autour de z)

Le repère local de la pièce donne qqchose comme (P, Px, Py, Pz).
Avec Px, Py, Pz des vecteurs unitaires (et orthogonaux).

Le but est de trouver Px, Py, Pz en fonction de theta.
Une fois qu'on connait Px, on peut calculer l'angle entre Px et x (ton repère du monde: (1,0,0)).
Raisonnement analogue pour Py, et Pz.

1) Calcul de Px
2) Calcul de l'angle entre deux vecteurs

1) Calcul de Px
(Soit Px' l'extrêmité de Px donc un point)
Px(theta) = Px'(theta) - P(theta)

Tu dis qu'au début, Px fait un angle de -30 par rapport à x donc
Px'(0) = P(0) + (cos(beta), 0, sin(beta)) (car rotation beta=-30, autour de y, avec theta = 0)
Sur ton schema, P(0) = (-R,0,0)

Maintenant, considère Px' comme un point de ta pièce qui va tourner. Il faut lui appliquer une rotation de centre O et d'angle theta.
Pour ca, on exprime Px' avec une composante dans le plan (CP(theta))+ une composante suivant z (Cz).
A:) Px'(theta) = CP(theta)+Cz

Calcul de Cz (une constante)
Cz = Px'(0).z

Calcul de CP(theta)
On enlève la composante en z:
CPz = Px'(0) - Cz * z/||z||

On fait rotater CPz en fonction de theta:
CP(theta) = ||CPz|| * (cos(theta), sin(theta), 0)

D'où remplacant CP(theta) par ci-dessus dans A:)
Px'(theta) = ||CPz|| * (cos(theta), sin(theta), 0) + Cz

Pour visualiser, imagine un cercle à l'intérieur du cercle du monde.
ce cercle décrit Cpz, rajouter Cz pour obtenir Px'(theta) et quand P(theta) décrit le cercle extérieur, Px'(theta) varie en fonctione et de fait Px(theta) aussi

2) Calcul de l'angle entre deux vecteurs
ca se trouve sur le net. Appliquer sur Px(theta) et x.
la vie est une fête :)

Robot

par Robot » 22 Nov 2015, 21:52

A la fin, qu'est-ce que tu veux ? Une matrice de rotation ? Ca ce n'est pas trop dur à avoir !

Kontiki
Membre Naturel
Messages: 21
Enregistré le: 17 Nov 2015, 09:56

par Kontiki » 24 Nov 2015, 10:12

Merci fatal_error.

Je suis actuellement en train d'analyser ton raisonnement que j'essaye de transférer dans mon modèle.

1) Représentation graphique :

Dans ce schéma, P est l'axe de la biellette qui se trouve sur un rayon de 6.2 de l'axe du double fut (appelé cardan supérieur (cs) dans mon application)

J'ai référencé les vecteurs Px, Py et Pz (et l'on constate la rotation de -30° que j'ai conservée pour notre exemple). Le vecteur Px est défini par un couple (P,Px').

Image

Jusque là est-ce bon ?

2) Calcul de la position de P selon la rotation de thêta (rotation globale B chez moi)

Voici actuellement le calcul qui est réalisé pour placer correctement le point P en fonction de la rotation thêta.

Image

C'est de la programmation nodale. J'ai replacé le centre du cercle sur l'origine du monde pour faciliter les choses. Ce positionnement du point P via ce calcul est correct depuis le début.

Je considère que ce que je viens de décrire est en conformité avec cette partie de ta réponse :
Soit P un point de ton cercle (qui définit l'origine du repère associé à ta pièce)
P va décrire le cercle et sa position est donnée par

P(theta) = R(cos(theta), sin(theta), 0) (car rotation autour de z)

Le repère local de la pièce donne qqchose comme (P, Px, Py, Pz).
Avec Px, Py, Pz des vecteurs unitaires (et orthogonaux).


Dans ce cas, le point P a pour coordonnées X,Yet Z dans le monde : -6.2,0,0.

3)
Px(theta) = Px'(theta) - P(theta)

Il s'agit bien du module du vecteur qui est égal à la différence entre la position dans l'espace du point Px' et celle du point P ?


4)
Tu dis qu'au début, Px fait un angle de -30 par rapport à x donc
Px'(0) = P(0) + (cos(beta), 0, sin(beta)) (car rotation beta=-30, autour de y, avec theta = 0)


Image

L'application de cette formule génère un point Px' de coordonnées X,Y,Z (-5.334,0,-0.5) dans le monde.

Sur ton schema, P(0) = (-R,0,0)
, ce qui est d'ailleurs confirmé dans les nodes résultats de la programmation : X=-6.2, Y=0, Z=0.

5)
Calcul de Cz (une constante)
Cz = Px'(0).z


Que signifie le "." devant le z. Comment interpréter cette formule ?



@robot : je pense que les choses commencent (très) légèrement à s'éclaircir pour moi. Néanmoins
cette notion de matrice de rotation m'a l'air intéressante, il faut que je m'y penche aussi. Je finis de comprendre le développement de fatal_error, puis si ça ne devait pas marcher, je reviendrais vers cette solution.

Merci encore à vous deux pour votre aide... et patience.

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 24 Nov 2015, 14:06

1) représentation graphique ok on se comprend

Pour les questions:

Il s'agit bien du module du vecteur qui est égal à la différence entre la position dans l'espace du point Px' et celle du point P ?

non il s'agit du vecteur lui même.
C'est comme si je te parle du vecteur (c'est juste que j'ai pas mis la flèche)
avec par example B = (1,2,3), A=(4,5,6) et AB = (1-4,2-5,3-6) (il s'agit bien d'un vecteur, pas d'un module == distance)

Px'(theta) et P(theta) sont des points

Que signifie le "." devant le z. Comment interpréter cette formule ?

le point est l'opérateur pour le produit scalaire (au même titre que * pour la multiplication)
en particulier pour deux vecteurs u(u_x, u_y, u_z) et v(v_x, v_y, v_z) on définit
u.v = u_x*v_x + u_y*v_y + u_z*v_z
la vie est une fête :)

Robot

par Robot » 24 Nov 2015, 14:35

Bon, je pense avoir compris la situation, une fois dépassé l'utilisation malheureuse du terme "cardan".
Par contre, je ne comprends pas bien ton problème au fond. Il s'agit bien pour toi de positionner correctement la biellette ?
Quel logiciel de rendu 3D utilises-tu ? Il me semble qu'un logiciel honnête devrait avoir une façon très simple de régler le problème.
Le seul logiciel 3D que j'utilise (hormis les logiciels de calcul formel) est povray. En povray, bien positionner la biellette est facile :
Je suppose que tu as un objet "biellete" déjà modélisé, avec son point P à l'origine. Il suffit de faire

#declare bielettebougee =
object{ bielette
rotate <0,beta,0>
translate <-rayon,0,0>
rotate <0,0,theta>
}

et puis c'est tout ! Ton logiciel n'a pas de commande "rotate" ou "translate" ?

Kontiki
Membre Naturel
Messages: 21
Enregistré le: 17 Nov 2015, 09:56

par Kontiki » 24 Nov 2015, 15:02

Salut Robot.
Tout vient à point pour qui sait attendre, et je suis de ceux là. Merci de ta réponse.

Il s'agit bien pour toi de positionner correctement la biellette ?
C'est exactement cela !

J'utilise Cinema 4D qui est un logiciel de modélisation et d'animation, de la même veine que 3DS max ou Maya.

Et à bien y regarder... il existe des fonctions de rotation, vectorielle, par point ou matricielle. Je ne les connaissait pas, je découvre cette partie de programmation (de surcroit, elle n'est pas documentée.).

Donc cette question est très pertinente.

Maintenant, vu le temps que j'ai passer à essayer de résoudre ce problème via des fonctions trigonométriques (et vu le temps que vous avez investi aussi), je vais aller jusqu'au bout de sa résolution.

Il serait dommage de s’arrêter en si bon chemin et ça peut certainement m'aider à comprendre/appliquer les fonctions internes du soft.

@fatal_error : merci de ces précisions, je revoie toutes ces notions vectorielles qui sont malheureusement passées au oubliettes.

Je pense réellement que nous sommes sur la bonne voie. merci encore à vous deux.

Robot

par Robot » 24 Nov 2015, 15:08

Pourquoi faire simple quand on peut faire compliqué ? :lol3:

Kontiki
Membre Naturel
Messages: 21
Enregistré le: 17 Nov 2015, 09:56

par Kontiki » 24 Nov 2015, 15:18

Pour le plaisir de ré-apprendre, non ?

Mais aussi parce que ces fonctions ne font en fait pas parties du soft, mais d'un plugin et affecte plutôt les particules.

Donc ça nécessite encore plus de continuer.

;)

Robot

par Robot » 24 Nov 2015, 15:31

OK, bon courage !

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 106 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite