Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1769 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  [Algo] - RollerCoaster

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Algo] - RollerCoaster

n°502155
red factio​n
Posté le 29-08-2003 à 21:05:19  profilanswer
 

EDIT :  
 
Bon voila j'ai presque fini  :sol:  
Jarrive a tordre les rails now, et tout marche vraiment bien
le seul probleme persiste dans les looping(voir photo)pour calculer lorientation dun rail je calcule le vecteur  perpendiculaire de deux points qui se suivent dans le trace
 
donc jai les 2 points p0 p1 (en vert)
 
je calcule le vecteur (en bleu):
 
 

Code :
  1. v0=Vector(p0,p1);
  2. puis
  3. vp=Perpendicular(v0);
  4. vertex Vector(vertex v1, vertex v2){
  5. vertex vv;
  6. vv.x=v2.x-v1.x;
  7. vv.y=v2.y-v1.y;
  8. vv.z=v2.z-v1.z;
  9. return vv;
  10. }
  11. vertex Perpendicular(vertex v1){
  12. vertex vv;
  13. vv.x=-v1.z;
  14. vv.y=0; 
  15.         vv.z=v1.x;
  16. Normalize(&vv);
  17. return vv;
  18. }


 
 
http://users.skynet.be/fa218598/555.png
 
la premiere photo est vue de cote, la deuxieme la meme boucle mais vu du dessus
 
on voit clairement qua mi-hauteur de la boucle il y a une inversion  :(  
 
j'ai volontairement retirer tout les elements pour quon voit bien le probleme
 
 
PS : je sais que je pourrais surdefinir loperateur = pour vertex blablabla mais je suis oblige de le faire en c (c pour une demo (4k) et la taille est tres importante)
 
j'ai pas change le systeme de coordonees, Y represente la hauteur...


Message édité par red faction le 01-09-2003 à 21:22:24
mood
Publicité
Posté le 29-08-2003 à 21:05:19  profilanswer
 

n°502162
ffluff
Challenge Everything
Posté le 29-08-2003 à 21:14:53  profilanswer
 

ben il me semble que le truc en 3d c'est lors du chargement on stocke les sin et cos dasn un tableau ainsi plus besoin de faire les appels tout le temps.
 
c'est des montagne russe ??

n°502163
chrisbk
-
Posté le 29-08-2003 à 21:16:23  profilanswer
 

je vois pas ce que tu evux faire :??:
(avec tes splines j'entend)
 
(le reste arrive)

n°502164
chrisbk
-
Posté le 29-08-2003 à 21:17:17  profilanswer
 

fFluFf a écrit :

ben il me semble que le truc en 3d c'est lors du chargement on stocke les sin et cos dasn un tableau ainsi plus besoin de faire les appels tout le temps.
 
c'est des montagne russe ??


 
fini ce tps la, maintenant on privilegie l'optimisation memoire a l'optimisation d'instruction (meme si eviter de faire 25685 sqr c tjs ca de pris)
 
en l'occurence les tables de cos/sin, byebye

n°502165
red factio​n
Posté le 29-08-2003 à 21:17:37  profilanswer
 

fFluFf a écrit :

ben il me semble que le truc en 3d c'est lors du chargement on stocke les sin et cos dasn un tableau ainsi plus besoin de faire les appels tout le temps.


a oui ca je c. c clair que tu te tappe pas les calculs a chaque fois
 
le probleme c de determine les points r1 r2
 
en 2d c lequation dun cercle mais ici  :??:  
 

fFluFf a écrit :


c'est des montagne russe ??


 
oui  :D  
bon spa tres joli mais pour linstant ca sert plus de debug qu'autre chose


Message édité par red faction le 29-08-2003 à 21:19:06
n°502168
red factio​n
Posté le 29-08-2003 à 21:18:35  profilanswer
 

chrisbk a écrit :


 
fini ce tps la, maintenant on privilegie l'optimisation memoire a l'optimisation d'instruction (meme si eviter de faire 25685 sqr c tjs ca de pris)
 
en l'occurence les tables de cos/sin, byebye
 


 
ca me rappelle les bon vieux plasma en mode 13h   :sol:


Message édité par red faction le 29-08-2003 à 21:20:17
n°502170
red factio​n
Posté le 29-08-2003 à 21:24:09  profilanswer
 

sinon le rapport entre le dessins avec les courbes et lhistoire du cone , c pour permettre de tordre les rails (ce qui nest pas possible pour linstant , ce qui explique la courbe du looping qui est cassée...
 

n°502172
ffluff
Challenge Everything
Posté le 29-08-2003 à 21:28:33  profilanswer
 

ben a mon avis pour trouver r1 et r2 c'est complique a expliquer:
tu parle d'angle de rotation donc tu dois avoir une position par defaut (r0).
 
Si tu as r0 => simple rotation 3d (avec des matrices & co)
 
Si tu dois calculer r0:
tu cherche un vecteur perpendiculaire a p1-p2 et tu as ton r0 a la distance :p2-r0 :D
 
C'est vrai que c'est facil à dire(ecrire) désolé j'ai pas d'alcgo sous la main :(
Je cherche de mon coté ca m'interesse aussi :p

n°502195
red factio​n
Posté le 29-08-2003 à 22:18:09  profilanswer
 

jviens ptet de trouver
 
en 2d on a  
 
x=cos  
y=sin  
 
pourquoi ne pas implementer z avec aussi un cos(mais decale)
 
c ptet nimporte quoi ... je teste
 
EDIT : marche pas


Message édité par red faction le 29-08-2003 à 22:35:38
n°502211
LeGreg
Posté le 29-08-2003 à 22:40:23  profilanswer
 

il te manque une info.
effectivement il te faut un point de départ sur le cercle pour déterminer un angle !
 
L'idéal c'est qu'en plus du déplacement entre p1 et p2 tu aies aussi paramétré le changement d'orientation du systeme
(T,N) avec T, le vecteur tangent à la courbe de ton déplacement et N, un vecteur qui représenterait ton orientation. (il manque un vecteur à ta base mais il découle de T et de N, du moment que tu sais si tu es gaucher ou droitier ce qui déterminera dans quel sens tourneront r1 et r2 en fonction de ton angle Theta).  
 
C'est pas aussi simple qu'en 2D mais en 3D il faut changer de systeme de pensée.
 
Attention à la façon dont tu parametres ta courbe de déplacement et à la gestion des points critiques (j'espere que si c'est un ride et que tu as des points critiques tu ne vas pas faire subir des accelerations infinies aux clients de tes montagnes russes :P ).
 
LeGreg

mood
Publicité
Posté le 29-08-2003 à 22:40:23  profilanswer
 

n°502221
red factio​n
Posté le 29-08-2003 à 22:49:40  profilanswer
 

heu langle de depart je le connais c une donnnee
p1 et p2 sont connus aussi
 
p1 et p2 serait un peu comme deux pilliers du roller coaster
ett r1 et r2 lendroit par lequel  passe les rails
 
r1 et r2 sont toujours oppose dun angle Pi (180degres donc) sinon les rails ne sont plus parralles ce qui pose un petit probleme  :whistle:  
 
en donnant un angle, je pourrais faire pancher les rails
 

n°502236
MrX
Posté le 29-08-2003 à 23:07:47  profilanswer
 

euh moi j'ai ptet un idée mais c'est un peu le bordel.. bon je tente kan meme
tu dois savoir ke tu pe tiré un vecteur orthogonal à 2 vecteurs coplanaires, suffit de faire un produit vectoriel. 2 vecteur coplanaire forme un angle ke tu pe retrouver avec un produit scalaire. Donc prenont les 2 points p1 et p2, on a le vectuer p1p2. apres tu fixe le point r1 de maniére a ce ke p1p2 soit orthogonal à p2r1. pour trouver r1 c'est simple : cos(90) = 0
donc on a p1p2*p2r1 = 0. ensuite si tu fais le produit vectoriel de p1p2 et p2r1 tu trouve le point r2 tel que p2r2 est orthogonal a p2r1 et a p1p2. Apres tu normalise les vecteurs p2r1 et p2r2 et tu aura les 2 vectuer directeur de l'unique plan auquel p1p2 est normal, et en plus p2r1 et p2r2 sont de meme norme et sont orthogonal, donc ca te fait un jolie petit repere orthonormal ou tu pe retrouvé un angle avec sinus cosinus les doigt dans le nez, apres t'a plus qu'a transformé les valeurs 2d de ton point en 3d, mais ca c'est facile alors j'explique po

n°502239
red factio​n
Posté le 29-08-2003 à 23:15:54  profilanswer
 

merci  [:prosterne]  
 
jvais regarder a tous ca
 
si jarrive a faire qqchose de bien un ptit update...
 
et qui sait une nouveau screen  :D

n°502244
red factio​n
Posté le 29-08-2003 à 23:21:37  profilanswer
 

jsuis entrain de travailler chez moi endessous de la lampe de bureau  pour voir la projection des ombres dun crayon (donc la projection 2d)
 
jvous raconte pas le bordel  [:yamusha]

n°502253
MrX
Posté le 29-08-2003 à 23:29:38  profilanswer
 

pkoi tu fait ca?

n°502265
LeGreg
Posté le 29-08-2003 à 23:43:48  profilanswer
 

Peut-etre que je n'étais pas clair alors on va la refaire.
 
A ton point de départ (appelons le p0)  
tu as l'orientation de ton rail défini par (T0,N0,B0).
Information que tu connais précisemment.
 
pour passer du point n au point n+1,
tu as besoin de plusieurs choses: le déplacement p(n+1) - p(n)
que tu obtiens en échantillonnant ta courbe paramétrée.
Et le changement de l'orientation de ton système (Tn, Nn, Bn).
 
Pour calculer Tn+1 c'est tres facile il s'agit de la tangente à ta courbe au point p(n+1). (si tu as du mal a calculer la tangente, fais moi signe). Le passage de Tn à Tn+1 constitue un premier changement d'orientation. Tu peux construire une matrice, un quaternion ou ce que tu veux pour passer de l'un à l'autre.
(si tu as de la misere pour construire la matrice de passage de Tn à Tn+1 fais moi signe).
 
Tu as aussi fait le choix d'avoir un deuxième changement d'orientation représenté par un angle Théta. Cet angle Théta tout seul ne veut pas dire grand chose, donc on va dire que ça représente un angle de rotation selon l'axe ORIENTÉ par Tn+1 (après que tu aies appliqué la première transformation donc.. le résultat ne sera évidemment pas le même si tu changes l'ordre d'application des transformations).
Cela constitue une deuxieme matrice de passage ou un deuxième quaternion. (si tu as de la misère à calculer cette deuxieme matrice de passage fait moi signe)
Pour obtenir la transformation globale de ton système (Tn,Nn,Bn) tu dois donc composer ces deux transformations dans le bon ordre.  
 
Maintenant comment calculer la position des rails ?
C'est simple si r est ton rayon, le premier rail est en pn + r*Bn et le deuxieme est en pn - r*bn.
 
A+
LeGreg

n°502481
red factio​n
Posté le 30-08-2003 à 17:06:37  profilanswer
 

[:yoyoz]

n°502806
MrX
Posté le 30-08-2003 à 21:40:03  profilanswer
 

pkoi up ? t'y arrive tjs po?

n°503040
red factio​n
Posté le 31-08-2003 à 00:37:21  profilanswer
 

MrX a écrit :

pkoi up ? t'y arrive tjs po?
 


 
ben si voir premier post  [:shooter]

n°503287
MrX
Posté le 31-08-2003 à 14:14:44  profilanswer
 

z'ai po pigé mais c po grave  :heink:

n°503396
red factio​n
Posté le 31-08-2003 à 16:57:36  profilanswer
 

ben heu si j'y suis arrive dans mon premier post jai editer et j'ai ajouter une video qui montre les points en rotation
 
enfait jai mit 4 points (en bleu) pour chaque section(en vert) les 4 points dune section  seront relies au 4 points de la section suivante de facon a former un boite (pour apres ca)
 
 
pour l'instant jessaie doptimiser un peu le code et de transformer tout ces points en polygones , apres il faudra encore ajouter les formules de physique pour le deplacement du train


Message édité par red faction le 31-08-2003 à 17:00:21
n°503438
MrX
Posté le 31-08-2003 à 18:03:57  profilanswer
 

a j'avais po vu, j'ai pigé maintenant ^^

n°504440
red factio​n
Posté le 01-09-2003 à 21:15:47  profilanswer
 

[:yoyoz]

n°504442
chrisbk
-
Posté le 01-09-2003 à 21:16:22  profilanswer
 

up pour quoi ??

n°504443
red factio​n
Posté le 01-09-2003 à 21:18:16  profilanswer
 

voir audessus c plus le meme probleme
 
sinon jefface celui ci et jen recree un nouveau

n°504444
chrisbk
-
Posté le 01-09-2003 à 21:19:56  profilanswer
 

red faction a écrit :

voir audessus c plus le meme probleme
 
sinon jefface celui ci et jen recree un nouveau


 
ah ok j'avais pas vu le changment :O

n°504631
LeGreg
Posté le 02-09-2003 à 06:09:26  profilanswer
 

red faction a écrit :

voir audessus c plus le meme probleme
 
sinon jefface celui ci et jen recree un nouveau


 
ben pourquoi tu ne suis pas mes conseils..
ca t'éviterait d'avoir de tels problemes..
 
LeGreg

n°504773
MrX
Posté le 02-09-2003 à 10:29:22  profilanswer
 

on peu voir les formules ke tu utilise, moi me semble ton probleme vien d'un cosinus ke tu a mal interprété

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  [Algo] - RollerCoaster

 

Sujets relatifs
algo tolérance orthographique[ALGO] Générateur grille mots croisés
[ALGO] TCP/IP Fletcher 16 bit.algo pour trouver tous les chemins...
algo gloutonQuestion methode c++ (algo)
[ASP/Algo] Nombre en Français[RESOLU][ALGO]Comment fonctionne le tracking par mail ?
Algo de Hashage/Signaturechanger un entier en double ? ou bien mon algo est mauvais ...help
Plus de sujets relatifs à : [Algo] - RollerCoaster


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR