See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: VC++ Multistage  (Read 5616 times)

0 Members and 1 Guest are viewing this topic.

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #25 - 21 October 2010, 00:39:49

Bravo !
:beer:


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline TranBert

  • Newbie
  • *
  • Posts: 16
  • Karma: 0
Reply #26 - 14 November 2010, 04:10:43
Et bien ca y'est. Mon voyage spatial touche a sa fin. J'ai bricole mon Dll pour avoir de la trainee et... de la portance (fonction LiftCoeff). mon vaisseau n'avait aucune valeur pour les coefficient lift et drag si bien qu'il arrivait dans l'atlantique a la vitesse de 4500m/s (marrant mais genant pour recuperer le materiel en bon etat).

J'arrive a obtenir une vitesse de 500m/s a 5Km de la surface. Je suis en train de bricoler un parachute pour reduire la vitesse a moins de 20m/s. En gros ca donne ca =>


Code: [Select]
                 const VECTOR3 OFS_PARA = {0.0,0.0,-16.513};
                 

 
 if (Altitude <= 5000 && AirSpeed <= 500) //Altitude et vitesse assez basses, le parachute se deploie
 {
 SetMeshVisibilityMode (InsertMesh ("TI\\Parachute",7,&OFS_PARA),MESHVIS_EXTERNAL);
           }
 else if (Altitude <= 100 &&)
 {
 DelMesh(7);
 }


Donc pas de probleme pour le mesh. Pour le coefficient de trainee induit par l'ouverture du parachute, j'ai fait des recherches dans l'API et j'ai trouve cette fonction

void CreateVariableDragElement (double *drag, double factor, const VECTOR3 &ref) const;

Cette fonction pratique permet si j'ai bien compris de generer de la trainee supplementaire quand par exemple le train d'atterrissage sort ou les aerobrakes sont abaisses (et donc me suis-je dit, a l'occasion, pour la sortie d'un parachute). J'ai regarde l'exemple du DeltaGlider dans la SDK pour voir comment etait utilise cette fonction.


Je la declare dans clbkSetClassCaps

CreateVariableDragElement (&ParaDeployed, 10, _V(0,0,-30));


A 30m derriere mon vaisseau (-30) le parachute se deploie. Le pointeur doit renvoyer selon l'API a une valeur "double" comprise entre 0 (pas de trainee) et 1 (trainee maximale). Je le renvoie donc a la variable ParaDeployed que j'ai initialisee dans ma ClassVessel et je rajoute dans mon code ParaDeployed = 1

Code: [Select]
                 const VECTOR3 OFS_PARA = {0.0,0.0,-16.513};
                 

 
 if (Altitude <= 5000 && AirSpeed <= 500) //Altitude et vitesse assez basses, le parachute se deploie
 {
 SetMeshVisibilityMode (InsertMesh ("TI\\Parachute",7,&OFS_PARA),MESHVIS_EXTERNAL);
                   ParaDeployed = 1;
           }
 else if (Altitude <= 100 &&)
 {
 DelMesh(7);
 }

Et devinez quoi ? Ca ne marche pas :siffle: Ou bien les lois de la physique sont definitivement impenetrables, ou bien, et je pencherais davantage pour cette eventualite, je me suis lamentablement viande dans mon raisonnement :damn:

Je continue de chercher.:wonder: Merci de me venir en aide:)


"Soyons fous !"
Formule favorite d'un grand copain

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #27 - 14 November 2010, 10:22:45

Salut !
Bravo pour tes progrès .
Je ne connais pas les fonctions dont tu parles , mais méfie toi d'un truc :
Un double s'écrit par exemple 1.0  .
Il arrive que des erreurs de précision empêchent une routine de fonctionner comme elle devrait .
Tout dépend du compilateur : s'il interprète 1 comme 1.0 , tout va bien .
Mais si 1 est indéfini ( le reste après la virgule ) , va savoir comment il réagit .
Une variable de type " int " égale à un , c'est ok .
Pour un double ( terme de précision ) , force toi à rajouter la précision car cela te sera utile dans d'autres cas ...
Vérifie les avertissements de ton compilateur pour voir ce qu'il en pense ?

Envoie aussi la portion de code qui correspond à ton problème , nous verrons ...
Bonne continuation !


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #28 - 14 November 2010, 16:41:47
Pour créer un effet de décélération brutale (ce qui est le cas avec les parachutes), un petit AddForce() dans l'axe des Z est très pratique.

;)


« Last Edit: 14 November 2010, 16:53:41 by Bibi Uncle »
Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline TranBert

  • Newbie
  • *
  • Posts: 16
  • Karma: 0
Reply #29 - 14 November 2010, 16:48:47
Merci Bibi Uncle. Je vais essayer ca. Je n'avais pas vu cette fonction dans l'API. Ca m'a l'air parfait !!!!


« Last Edit: 14 November 2010, 16:53:41 by TranBert »
"Soyons fous !"
Formule favorite d'un grand copain

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #30 - 14 November 2010, 16:53:41
Attention, l'AddForce() ne fait qu'ajouter une force pendant un seul frame. Je te le propose seulement pour créer l'effet de décélération quand tu ouvres le parachutes. Pour le reste, ce sera dans les propriétés aérodynamiques (que je ne connais pas beaucoup...).


« Last Edit: 14 November 2010, 16:53:41 by Bibi Uncle »
Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon