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: cherche moyen de calculer un POS à partir de coordonnées  (Read 41884 times)

0 Members and 1 Guest are viewing this topic.

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #75 - 01 September 2010, 12:17:18
Salut !
Un petit post pour remercier Pilote334 qui m'a fait profiter de son expérience pour rajouter une fonction indispensable
à la poursuite de ce projet : La boite de saisie .
Elle permettra de faire des choix entre les bases , nommer les meshs , etc ...

Un cliché :



et un ...
:merci:



Message modifié ( 01-09-2010 12:17 )

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

Offline cslevine

  • Legend
  • ******
  • Posts: 3621
  • Karma: 17
Reply #76 - 01 September 2010, 14:11:44
Salut Spock

hmmmm... ça avance :)
pour le nom de la base, n'est il pas possible de récupérer celle choisie dans le MFD MAP , qui gère une liste d'entrées ?



Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #77 - 01 September 2010, 14:35:10
Salut Sammy !

Quote
pour le nom de la base, n'est il pas possible de récupérer celle choisie dans le MFD MAP , qui gère une liste d'entrées ?
Certainement , mais je pensais utile d'obtenir directement par le code n'importe quelle base située par exemple , sur
la planète de référence du vaisseau .
Je suis entrain de coder une boite de dialogue qui devra afficher le contenu des fichiers bases demandés .
Ensuite , la manière de procéder doit rester ludique .
Je pourrais faire :
_ un mode "Arcade" : La base à modifier est la base la plus proche du Vessel .
_ un mode "Pro" avec éditeur de Texte pour modifier n'importe quelle base dans tout l'Univers.
Je cherche toujours !
Pour le moment , je recompose mon code en fichiers , pour plus de clarté .
+A+
:badsmile: " çà " avance bien ...



Message modifié ( 01-09-2010 14:36 )

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

Offline cslevine

  • Legend
  • ******
  • Posts: 3621
  • Karma: 17
Reply #78 - 01 September 2010, 16:42:55
:top:

c'est pas grand chose comme réaction mais ça vaut un "bien lu, bien reçu 5 / 5, et un j'aime facebookien"

Mi-chèle en 2010... Vivement le Full-schell !



Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #79 - 02 September 2010, 17:15:06
Salut !
J'ai le code autour du cou !:badsmile:
Bon, j'ai réussi hier à greffer une fenêtre supplémentaire sur mon module , qui supportera un éditeur de texte pour
visualiser les modifications ( ou les faire à la main , 'sais pas encore ) dans les fichiers .cfg .

 J'ai dû m'insérer plus profondément ( ...) pour atteindre le point culminant d'un module dans Orbiter :
La fonction :

Code: [Select]
virtual void oapi::Module::clbkPostStep  ( double  simt,  
  double  simdt,  
  double  mjd  
 )   [virtual]

Time step notification after state update.

Called at each time step of the simulation

Celle-ci permet une actualisation des données à chaque cycle du programme , et permet une actualisation des données plus précise que la fonction Update() du MFC .
Mais ... Je dois gérer de nombreux paramètres en utilisant des boucles plus ou moins importantes selon le nombre de bases contenues dans chaque planète , qui pourraient géner dans certains cas la fluidité.

 J'essaye de faire en sorte que mon module calcule constamment quelle est la planète de référence du vaisseau , et calculer quelle est la base la plus proche , en tenant compte des distances que tu m'as fait parvenir sammy (80 , 160 ).
Ceci afin de créer des fichiers cohérents , pour ne pas éparpiller des meshs un peu partout .

Je pense rajouter une fonction de création de base , qui elle sera facile à coder .
Donc voilà , j'arrive au stade des performances , et c'est un marathon qui commence .
+A+
:music:


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

Offline cslevine

  • Legend
  • ******
  • Posts: 3621
  • Karma: 17
Reply #80 - 02 September 2010, 17:48:07
Bien, alors courage dans ce marathon logique.

et sinon moi je vais faire 2 petites tours.
sssccch-flou.... ... sssccch-flou.



Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #81 - 02 September 2010, 17:50:16
AH AH AH HA AH AH ....tu vas patauger ?
Je rigole , mais j'ai un point de coté ! me fais pas rire ...
RHAAAAAAAAAA ...
:badsmile:



Message modifié ( 02-09-2010 17:51 )

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

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #82 - 02 September 2010, 19:16:54
Youpiiiie !
J'ai enfin récupéré le nom de la base la plus proche , je comptais sur la fameuse fonction CALLBACK POSTSTEP , mais
qui , pour une obscure raison encore ( mon ignorance ... ) , n'est pas appelée par Orbiter .
Donc , petit pas en arrière , mais pour mieux rebondir .
Nouveau : Ajout d'un bouton SCA ( scan ) , qui comme son nom l'indique scanne la surface d'une planète la plus proche
du vaisseau , et affiche le nom de la base la plus rapprochée aussi .
Une image ?



Cette page du mfd indiquera le nom de la planète , le nombre de bases , et le nom de la base la plus proche .
Peut-être aussi des vecteurs pour la rejoindre , et des infos telles que le nombre de pads d'atterrissage , d'éléments du
décor ( meshs) etc .

A+ !
:eek:



Message modifié ( 02-09-2010 19:19 )

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

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #83 - 02 September 2010, 22:03:14
Re ... moi !
Oui , je viens de tester MeshBuilder avec le ScénarioEditor , et le résultat est instantané dans le MFD .
Donc , pour sélectionner la Base dans laquelle nous voulons insérer des décors , nous pourrons :
_ Nous approcher dans un certain rayon à proximité d'une base.
_Utiliser l'éditeur de scénario .

Une fois la Base sélectionnée , tout ajout de Mesh sera calculé et enregistré dans une copie de son fichier correspondant. CSammyLevine  avait proposé , pour s'y retrouver , de mettre la date dans le nom de fichier .
Exemple : Caneveral_02_09_10 .
Avec du recul , je dis que c'est une trés bonne idée .
Quelqu'un en a t-il une autre ? :badsmile:

Allez , pour les curieux du C++ , un extrait de code ( fonctionnel )
Code: [Select]
...
if(nbases==0)return BaseLaPlusProche;//pas de bases

//récupère le handle des bases par index
int i=0;

for(i=0;i{
 HBase[i]=oapiGetBaseByIndex( stat.rbody,i);//récupère le handle  
 //rayon de la planete
rayon=oapiGetSize(stat.rbody) ;
//récupère la position equatoriale de la base résultat en radians
oapiGetBaseEquPos(HBase[i],&Longitude2,&Latitude2,&rBase);
//récupère la position equatoriale du vaisseau résultat en radians
MeshBuilder->GetEquPos(Longitude1,Latitude1,rVessel);

//calcule la distance
distanceLon=Longitude1-Longitude2;
distanceLat=Latitude1-Latitude2;

        double aHarv= pow(sin(distanceLat/2.0),2.0)+cos(Latitude1)*cos(Latitude2)*pow(sin(distanceLon/2),2);
        double cHarv=2*atan2(sqrt(aHarv),sqrt(1.0-aHarv));
           
double distance=rayon*cHarv;
/*
FOnctionnement du test
La première valeur enregistrée sert de référence :ProxDistance
S'il y a une seule base sur la planète , le test s'arrête
Sinon , chaque passage dans la boucle compare les distances .
Si la nouvelle distance est inférieure à la précédente , le numéro de la base
est enregistré comme la plus proche : ProxBaseIndex

*/
//initialisation
if(i==0)// première base dans la liste
{
ProxDistance=distance;
if(nbases==1)// 1 seule base , retourne
{
BaseLaPlusProche.handle=HBase[i];
        BaseLaPlusProche.valid=true;
return BaseLaPlusProche;
}//fin 1 seule base

}//fin initialisation spéciale
// seconde base et +
if(distance {
        ProxBaseIndex=i;// c'est la plus proche
        ProxDistance=distance;//nouvelle distance de reference
}
}//fin de la boucle
//attribue le bon Handle
BaseLaPlusProche.handle=HBase[ProxBaseIndex];
BaseLaPlusProche.valid=true;
return BaseLaPlusProche;
}

Et pour le dessert , une image avec SceneEditor et MeshBuilder en action .
Ce n'est pas spectaculaire , mais çà fonctionne ! :)





Message modifié ( 02-09-2010 22:16 )

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

Offline cslevine

  • Legend
  • ******
  • Posts: 3621
  • Karma: 17
Reply #84 - 02 September 2010, 22:05:43
ssccchhh Flo..... .... sssssccchhh Flou  *

Wouah ! Merci Spock de ces avancements !
Rien qu'avec la première release je sens que je pourrai m'amuser à placer des petites pépés ici et là, mais aussi des theremins et autres gadgets par exemple aux emplacements des conservatoires, tout ça...

qui sait si, un jour, je ferais pas carrément un addon évlolutif avec... les principaux endroits où j'ai joué, comme je l'ai d'ailleurs fait dans Google Earth  (  http://www.cslevine.com/CONCERTS_tout.kmz  ). Sisi, docteur. Je l'ai vraiment fait... Vous ne dites rien, docteur. Donc cela ne vous fait pas bondir... je n'avais pas remarqué le petit décor, là, au plafond... ça me rappelle...




* je pense que tu as forcément reconnu le bruit des doubles portes



Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #85 - 02 September 2010, 22:23:02
C'est ballot sammy , je n'ai pas ( encore ) googleEarth !
Je n'ai pas vu ton tour du monde ...
Bon allez , j'vais faire un effort , aprés tout , c'est pas fesse book !
:badsmile:


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

Offline cslevine

  • Legend
  • ******
  • Posts: 3621
  • Karma: 17
Reply #86 - 02 September 2010, 23:28:07
Oh De Dieu ! J'avais pas vu ton second post que tu avais posté en même temps que mes bruits de portes !
Je suis vraiment content que ça avancce comme ça !

pour la date j'avais meme mentionné aussi heureminuteseconde, de telle sorte qu'il ne risque pas d'y avoir de probl d'écrasement de fichier. Ensuite ce sera pas la mort de faire le tri et de réunir les meshs dans un seul fichier voire le fichier de la base.

Allez bonne nuit.
moi je vais tâcher de me coucher.


  . . . fffffwwwwooooiiiiiiiiiinngggg-hwwoooo . . . . . .
   - nan là c'est trop dur faut que je le fasse à l'ondéa, le son de la téléportation -
   - OK je vais le faire -



Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #87 - 03 September 2010, 01:12:20
Tiens , j'demanderais ptet bien à DagoO de me fabriquer un BULLDOZER qui puisse voler .
çà pourrait le faire marrer .
Et puis tiens , embaucher Alexandre et BiBI uncle pour un Panel2D .
Nous appellerions ce machin le " Terrasseur de planètes " .
TREMBLEZ , SYSTEMES SOLAIRES ET AUTRES GALAXIES ! LES PACIFICATEURS DE MONDES ARRIVENT !!
:diable:
ben quoi , j'ai une imagination xxl ...
_N'empêche qu'un bulldozer , en vue extérieure d'en haut , rasant les batiments des décors qu'il écrase , ce serait marrant .



Message modifié ( 03-09-2010 01:15 )

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

Offline cslevine

  • Legend
  • ******
  • Posts: 3621
  • Karma: 17
Reply #88 - 03 September 2010, 15:26:21
Achesse

Quote
TREMBLEZ , SYSTEMES SOLAIRES ET AUTRES GALAXIES ! LES PACIFICATEURS DE MONDES ARRIVENT

:ptdr:
et le pire c'est qu'on retrouve en vrai cette monstrueuse incohérence.
Où ça ? Facile : dans la spiritualité !  :wall:  
( je suis en train d'écrire un Bétisier des Sagesses quotidiennes... )

/Achesse



Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #89 - 03 September 2010, 16:55:44
:music:
Du nouveau dans le marathon .
J'ai repris mon souffle et rejoins le peloton de tête ...
Le MFD affiche maintenant la planète de référence , la base la plus proche , et la distance entre le centre de la base
et le vaisseau .

Preuves à l'appui !



J'avance jusqu'au buildings ... tu remarques la distance (en mètres ) qui a diminué ?
Le tout en temps réel , bien sûr . Pratique déjà pour se situer !



A suivre ...
:music:


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

Offline cslevine

  • Legend
  • ******
  • Posts: 3621
  • Karma: 17
Reply #90 - 03 September 2010, 18:24:28
Bien !



Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #91 - 03 September 2010, 20:19:58
J'envoie du lourd maintenant ...

Etape 1: Au lancement d'Orbiter .



Etape 2: Activation du Scanner .



Etape 3: Récolte d'informations sur la planète



Une boite de saisie permettra alors d'entrer le nom d'un fichier pour l'éditer .

La course continue ! Cours forest ... cours ...
:music:


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

Offline cslevine

  • Legend
  • ******
  • Posts: 3621
  • Karma: 17
Reply #92 - 03 September 2010, 21:11:41
oh que c'est  bien !
Dans un premier temps, ce n''est même pas nécessaire d'éditer un fichier existant. Créer un nouveau .cfg marchera aussi très bien, et ce serait de plus respectueux, en cas de problème.
Le tout étant de créer le nouveau .cfg, d'aller choisir un mesh dans le dossier des meshs +sous dossiers, à moins de créer un répertoire spécifique à Meshposer dans lequel on installe les meshs de son choix. Ce serait pas mal non plus car cela faciliterait la reccherche de ce qu'on veut.
En prime plus tard, le browser pourrait afficher un visuel correspondant au mesh à choisir :
pour cela il suffirait de créer un petit fichier BMP du même nom que le mesh.

Ca pourrait être pas mal pour les futurs modes "arcade" (genre je prends un gros champignon, là, et je l'envoie sur le coin de la figure de la ville de la salope de mon choix comme j'avais déjà fait manuellement - et je risque de reommener bientôt pour les coordonnées 4.9590 46.1183  - Ben è, je respecte les procédures moi, je donne que des coords. )



Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #93 - 04 September 2010, 00:23:55
Salut sammy !
Oui , c'est vrai qu'éditer les fichiers d'origine n'est  pas la meilleure solution . :wonder:
Je te remercie pour ta réfléxion !
Cette page d'information m'a permis d'apprendre à naviguer dans le système de fichier d'Orbiter, et d'entrevoir des solutions .

Pour créer un nouveau fichier , je dois au minimum recopier le fichier existant , les données qu'il contient sont inaccéssibles par le biais de la programmation .
Il fallait que je sois sûr que mes chemins de fichiers soient corrects , et le fait de les visualiser me permet aussi de débugger .
 
J'ai également eu ce problème :
Quand , par programmation , j'arrive à trouver le nom de la base la plus proche et que je veux ouvrir un fichier ( pour le copier avant d'entrer de nouvelles infos...) , je n'ai pas forcément le nom du fichier .conf .
Exemple : la base " Cape Canaveral " a un fichier nommé " Canaveral.cfg " .
Pour vérifier par programmation que le fichier est bien celui qui correspond à la base , je dois l'ouvrir et lire le param
Name = X .

Ainsi , je dois encore créer une routine qui compare le nom de la base actuelle avec ceux compris dans le dossier de la Planète de référence . Le fait d'entrer le nom de la base à la main me permet de " passer " cette routine .
L'idéal étant que tout cela se fasse en automatique et en background .

Je pourrais me simplifier la tâche en créant un fichier comportant seulement les nouveaux blocs ou meshs , s'il s'avère
que la finalité sera de copier/coller des sections de code .
Mais j'aimerais pousser au maximum l'automatisation ...
Tes idées sont toujours les bienvenues , j'y prête une grande attention , d'autant plus que c'est d'abord pour toi que je le fais . :badsmile:

Quote
...d'aller choisir un mesh dans le dossier des meshs +sous dossiers, à moins de créer un répertoire spécifique à Meshposer dans lequel on installe les meshs de son choix.
J'y pensais c't aprem' !;)

Quote
En prime plus tard, le browser pourrait afficher un visuel correspondant au mesh à choisir :
Ce serait super , j'espère bientôt trouver l'info pour le réaliser !

Bon , je vais essayer quelques routines ...
et puis j'ai encore le système de collision qui me turlupine ...
Si tu es préssé , je te fais en priorité un module qui crée des fichiers " à coller " ?
 (contenant les blocs de meshs seuls )
c++
:beer:



Message modifié ( 04-09-2010 00:31 )

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

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #94 - 04 September 2010, 01:35:50
Quoi de neuf ?
La routine , quoi ...
Une qui fonctionne bien si les noms des bases ne sont pas composées ( Cape Canaveral ) ...
Une démonstration , et un clin d'oeil pour JacquesMomo , pour ceux qui suivent son projet Europa :

Scan de la planète et GPS :



Resultat dans INF : recherche du fichier .cfg correspondant à la base ciblée :



Voilà , 50 % du travail sur cette routine est fait .
Reste à solutionner le " bouzin " ...

BANZAI !!

:badsmile:



Message modifié ( 04-09-2010 01:36 )

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 #95 - 04 September 2010, 01:43:19
Quote
MrSpock a écrit:
BANZAI !!

+1 :) Tout à fait d'accord avec le message véhiculé.

Excellent avancements Spock ! :top:. Dis donc, pour ouvrir une config, tu utilises le bon vieux fopen et fclose comme en C ou il y a une nouvelle fonction avec la bibliothèque standard de C++ ?


Émile

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

- Luc Plamondon

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #96 - 04 September 2010, 01:54:32
Salut Bibi !
Pour scanner l'intérieur d'un dossier , je fais appel à une fonction Win32 , FindFirstFile puis FindNextFile , en donnant comme
paramètre le chemin du dossier + "*.cfg" .
Ensuite , une fonction héritée du C pour comparer les noms de fichiers avec le nom de la base que j'ai récupéré .
Mais elle fonctionne qu'avec les noms sans espaces .
Faut que j'en fabrique une autre ...
J'utilise les fonctions d'orbiter pour ouvrir, lire et écrire à l'intérieur . ( qui utilse fopen etc ...mais c'est caché ...)
Si tu veux du détail , je t'enverrai un extrait de code , ou je le poserai ici ...
:beer:



Message modifié ( 04-09-2010 02:14 )

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

Offline cslevine

  • Legend
  • ******
  • Posts: 3621
  • Karma: 17
Reply #97 - 04 September 2010, 10:55:27
Que c'est beau !
Que c'est génial !
Je pense que dans un premier temps, oui, une routine qui me collerait déjà des blocks de mesh dans un bête fihier séparé sera déja un gros avancement dans la rapidité de mes peaufinements de bases :)



Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #98 - 04 September 2010, 14:41:55
Merci pour le support Sammy !
Je vais faire un effort de simplification , pour te permettre de tester " la chose " , pour qu'en retour tu me permettes de
l'améliorer .

Donc :
Je laisse de coté pour le moment la recopie du fichier d'origine pour en créer un " fresh " .
Veux-tu que je crée un dossier pour le module ?
J'avais pensé : Orbiter 2010/Config/Meshbuilder .
Dans le dossier Meshbuilder , la même arborescence que dans Config , mais créée dynamiquement sur le tas .
Exemple : Tu es sur la lune , tu crées une base , le programme crée un sous-répertoire "  /Base /Moon " dans Meshbuilder .

Si tu as des idées d'arborescence , envoie !
A+
:music:



Message modifié ( 04-09-2010 14:43 )

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

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #99 - 04 September 2010, 15:11:34
Pour Bibi uncle :

Spoiler  :
//chargement d'un fichier et création s'il n'existe pas
bool chargefichier(char * subpathname)
{
   
   Meshposer.fichierConf= oapiOpenFile(subpathname, FILE_OUT,ROOT);
   if(Meshposer.fichierConf==NULL)
   {MessageBox(wnd,"chargefichier(char * subpathname)","ERREUR !",MB_OK);
   return false;
   }
//oapiCloseFile( fichierConf,FILE_OUT); à utiliser pour fermer le fichier ...
return fileReady=true;
}
Pour clarifier:  Meshposer est une structure que j'ai créé pour stocker des infos ...

struct MESHPOSERFILE
{   FILEHANDLE fichierConf;
   char * filename;
   char* planet_name;
   char* base_name;
}Meshposer ;



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