CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Maths] fonction polynomiale matricielle

Fvirtman
Fvirtman
Niveau 10
28 avril 2006 à 11:11:28

Salut, ma question est d´ordre mathématique. (mais pour implémenter ensuite !)
Je cherche a faire une courbe dans l´espace, paramétrique (parametre t domaine [0,1])

Pour bien comprendre, voici déja ce que j´arrive a faire :
Voici un polynome du 3e degré paramétrique
A + B*t + C*t^2 + D*t^3 = P

A,B,C,D sont des vecteurs (ax,ay,az) de nombres réels.

Si je décompse en paramétrique, j´ai :

Ax + Bx*t + Cx*t^2 + Dx*t^3 = P
Ay + By*t + Cy*t^2 + Dy*t^3 = P
Az + Bz*t + Cz*t^2 + Dz*t^3 = P

Avec ça, j´ai, pour chaque parametre t, un point. Et la fonction est continue (c´est important)

Maintenant, ce que je voudrais, c´est que pour chaque t, j´ai un repere : donc une matrice 4*4

La derniere colonne (donc le point) sera typiquement mon point P.
Mais les vecteur X,Y,Z seraient également cohérants, et surtout CONTINUS !! !

En gros, je veux pouvoir faire avancer un repere sur une courbe polynomiale paramétrique de degré 3, de façon continue !

(je veux aussi imposer qu´un des axes (par exemple l´axe X), soit tangent a la courbe (ça se calcule facilement avec la dérivée du polynome))
Mais ce qu´il me manque, c´est un Y. Je sais que ce Y ne sera pas unique, et dépendra de paramétres supplémentaires, a définir !
(apres, Z se calcule avec un produit vectoriel)

Mais il me manque un Y :(

Si vous avez des idées, je suis preneur !

godrik
godrik
Niveau 30
28 avril 2006 à 12:43:12

pourquoi ne pas prendre une normale a la courbe ?
tu as un vecteur x
il suffit de trouver un vecteur orthogonal a x (rotation de x sur n´importe quel axe de 90°)

LGV
LGV
Niveau 28
28 avril 2006 à 14:51:00

je ne vois pas non plus tres bien le probleme :-? tu peux facilement calculer un repere facon Frenet n´importe, et eventuellement l´orienter automatiquement en utilisant la courbure de la courbe.
Si le passage en discret est un soucis, un coup de "arc length parametrization" (par approx cubique locale, ou approche dichotomique) devrait regler ca.
j´avais fait un truc similaire, ou un avion suivait une spline par morceaux ; je calculais un repere automatiquement oriente correctement pour simuler le "roll" de l´avion dans les virages serres.

Fvirtman
Fvirtman
Niveau 10
28 avril 2006 à 15:10:09

J´avais pensé a prendre une normale a la courbe quelconque (ce qui peut se faire facilement)
Mais le soucis, si j´en prends une "au hasard" au point t, alors au point t+dt, la normale soit radicalement différente, ce qui fait une cassure.
Je veux assurer une continuité sur le vecteur orthogonal Y également.
Déja, X est assuré, car la dérivée d´un polynome est assurée.

Vous allez me dire que si je prends le meme algorithme pour calculer mes normales, cela pourrait etre bon, mais justement, j´ai peur d´avori des soucis dans certains cas limites.
Auriez vous un algo de calcul de vecteur orthogonal Y au vecteur X, qui m´assure de la continuité de celui ci ?

godrik
godrik
Niveau 30
28 avril 2006 à 15:19:14

si tu tourne par rapport a un axe fixe ca devrait aller non ?

Fvirtman
Fvirtman
Niveau 10
28 avril 2006 à 15:24:47

LGV : quand tu parles du roll, c´est exactement ce que je veux aussi : avec un parametre supplémentaire (voir une fonction linaire alpha = F(t) ) me donne un angle qui me permette de faire un "roll" :)
Mais pour cela, il faut que je calcule correctement le vecteur Y (qui me définira angle = 0 en tout point t)

Fvirtman
Fvirtman
Niveau 10
28 avril 2006 à 15:25:38

Godrik : ben en fait, non : car imagine que ma courbe parte dans tous les sens : il y a le cas ou l´axe fixe peut se retrouver colinéaire avec l´axe X, et la je suis mort...

Fvirtman
Fvirtman
Niveau 10
28 avril 2006 à 15:29:16

et meme si on ignore ce cas limite : c´est a dire que si on a le cas limite, on dit que t = t + dt (pour approximer)
Aux 2 bornes de ce cas limite, X sera quand meme "continu"
mais Z, calculé avec un produit vectoriel, risque carrément de s´opposer en t+dt...
Pas de continuité, je suis mort....

Fvirtman
Fvirtman
Niveau 10
28 avril 2006 à 16:03:09

Aller, quit a parler de cas compliqués et ambigus, en voici un que j´ai trouvé : (qui montre que (je pense) ce n´est pas si simple)

Imaginez un jeu de voiture 3D (voiture accrobatique)
La route est une courbe : le vecteur "LOOK" de la voiture, c´est l´orientation de la voiture : la ou on regarde (AT - Centre)
2 cas :

- la route est plate : au départ, Look = (1,0,0), et on a, au bout d´une ligne droite, un virage a 180°. A la sortie du virage, Look = (-1,0,0) donc...
- la route amorce un looping : au départ, Look = (1,0,0) aussi. Au bout, le looping. Quand on est en haut, on a la tete en bas, et Look vaut aussi (-1,0,0)

Cependant, dans ces 2 cas, le vecteur ref Y est opposé : dans un cas il vaudra (0,1,0), dans l´autre (0,-1,0), pareil pour Z (vecteur UP) car l´un a la tete en haut, l´autre en bas.
Et pourtant, sémantiquement, j´ai toujours la meme tangente a la courbe dans les 2 cas : (-1,0,0)...

Apres bien sur, je ne cherche pas une position particuliere pour le vecteur Y (je me fous qu´il soit (0,1,0) ou (0,-1,0)
Ce que je veux juste c´est que les composantes de ce vecteurs soient continues quand t varie... et ce pour n´importe quel type de courbe...

LGV
LGV
Niveau 28
28 avril 2006 à 16:23:00

je dirais qu´il n´y a pas de "solution" a proprement parler : c´est implicitement dependant du modele physique que tu souhaites appliquer au contexte dans lequel tu utilises ta courbe.
L´enonce de pb determine un espace de solution, l´ajout de contraintes physiques en selectionne qq unes comme valides.
ton exemple simpliste de la voiture donne des situations "incorrectes" ; mais si tu changes de "modele" (i.e. avion, helicoptere), ca devient parfaitement coherent : les calculs n´ont pas change, l´interpretation est differente.
Tu dois avoir connaissance du modele physique pour pouvoir poser des aprioris qui te permettent de deduire des donnees de base, et determiner quelles situations sont "bonnes" et lesquelles sont "mauvaises". Si tu n´as pas ces criteres, on ne peut pas distinguer les situations, et tout peut etre potentiellement acceptable.
Pour un modele sans a priori evident, il n´a pas de possibilite de calcul explicite et la seule solution acceptable consiste a laisser tourner le moteur physique (et les contraintes qui lui sont propres) sur les donnees, et obtenir le resultat en fin de calcul.
par ex. si tu tentes d´appliquer un modele explicite et CONTINU a ta voiture qui fait un looping, il y a de fortes chance qu´avec une modelisation basique soit en fin de boucle ta voiture se retrouve dans la mauvaise direction, soit ta voiture "roll" sur elle meme, ce qui n´est pas physiquement possible pour ce modele.

LGV
LGV
Niveau 28
28 avril 2006 à 16:33:39

idee d´un cas extreme qui ne depend ni du modele, ni de la physique : un avion a l´horizontale, il avance droit devant lui et effectue un demi-looping (= se retrouve au dessus de sa position de depart) mais toujours a l´horizontale (= durant la montee, il roll sur lui meme de Pi)

si tu veux calculer le truc, ton avion tournera sur lui meme dans le sens horaire, ou anti-horaire ? ..

c´est un choix purement arbitraire, et les deux solutions sont correctes, independament du modele.

c´est une chode que j´ai retenue en tentant de calculer des modeles d´orientations (surtout pour des animations) : 1) pour etre explicite le modele doit avoir des apriori qui permettent de "selectionner" les solutions 2) sinon, on fait appel a la physique et on simule le phenomene, du coup le modele devient implicite..
il n´y pas de solutions explicites sans contraintes. Parfois modeliser les contraintes peut etre complique, cela dit..

gollumkawder
gollumkawder
Niveau 10
29 avril 2006 à 21:18:12
  • crok* *crok*

/me mange des pop-corns en lisant des threads de geek 8]

dnob700
dnob700
Niveau 10
30 avril 2006 à 00:19:29

Comme LGV l´a dit plushaut, il y a (mais je ne suis pas sûr d´avoir compris la question en fait) ce qu´on appel le repert de frenet.

Si tu as une courbe (donc une fonction vectoriel M(t)), dans le cas général, (M´(t),M´´(t),M´´´(t)) forment une base de l´espace (dans R^3) pour tout t. Malheureusement, si l´un de ces vecteurs est nul (ce qui, pour une courbe, prise "au hasard" n´a aucune chance de se produire) ou si ils ne forment pas une famille libre (ce qui malheureusement, est plus courant) il faut bidouiller à la main.

Mais je n´aispas tout a fait comris tes contraintes, tu veux que l´un de tes axes suivent ta courbe, c´est ça ?

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment