Créer un "champ" d'astéroïde...
Bon, je veux pas créer un truc énorme qui créer aléatoirement des astéroïdes et les fait bouger comme si il n'y aurait pas de graviter...non, en faite hier j'ai créer un programme qui (en fasons d'un nombre entré) créer des meshs, voici une petite image :
http://s2.noelshack.com/upload/15176457 … _titre.png
et en même temps j'ai eu l'idée de faire en champ d'astéroïde,donc j'ai fais un mesh en wirefram qui serais renplie d'astéroïde aléatoirement :
http://s2.noelshack.com/upload/21334610 … 65itre.png
mes en faite le problème c'est pour le façons de le faire, j'ai eu l'idée de créer une boucle While qui à chaque fois qu'elle se répète elle choisie une position dans la "zone" ou que les astéroïdes sont d'habitude, est place des meshs en façons de c'est position, sauf, le problème c'est que je ne sais pas comment faire pour "choisir" une position, alors si qu'elle qu'un pourrait m'aider...
Dernière modification par mmorpglefilm (07-12-2010 23:34:37)
Hors ligne
Personnellement, je n'est RIEN compris !!!
S'il te plait, fais un effort, avoir des difficultés en orthographe, ça peut ce comprendre (perso, j'en ai beaucoup)
Mais beaucoup de tes fautes se corrigerais avec un simple correcteur automatique, et relis tes phrases s'il te plait, la plus part ne veulent rien dire, juste parce qu'il manque des mots !!!
Hors ligne
Je pense avoir corriger...
Hors ligne
Il y a une chose que je ne comprend pas,tu as déjà des positions fixe que tu connais, et tu veux par exemple créer 2 astéroïdes chacun à une position aléatoire dans les positions que tu as fixé au départ.
Ou veux tu carrément créer tes astéroïdes à des positions carrément aléatoire dans l'espace.
En tout cas dans le premier cas, moi je créerais un tableau de vector3d qui enregistre chaque position à la quelle je voudrais éventuellement créer un astéroïde, puis je tirerais au hasard une case dans mon tableau pour récupérer une position.
Sinon pour le deuxième cas, je tirerais carrément au hasard une position.
Peut-être te manque t-il la fonction pour tirer un nombre au hasard entre X et Y ? jette un œil par là dans la partie préparatifs et conseils tu trouveras un truc qui t'interesse.
Bon courage, @+
Dernière modification par nabouill (08-12-2010 02:55:49)
Hors ligne
En faite je veux créer des astéroïdes à des positions totalement aléatoire dans l'espace sans dépasser certaine position(l'objet en wireframe sur l'image).
Sinon, pour créer un tableau de vector3d............je vais comme le type char ?
char nom[3];
nom[0];
nom[1];
nom[2];
Un peut comme sa ou d'une autre manière, parce que j'en ait jamais créer....
Hors ligne
Si je comprend bien, il te faut aussi générer aléatoirement les position de tes astéroïdes, et ce dans un espace
précis. En simplifiant, ta galette pourrait s'apparenter en quelque sorte à un disque, qui aurait une épaisseur donnée.
(plus facile à aborder qu'une équation de tore).
Vite fait, cela pourrait donner ce genre de calcul si je ne me suis pas trop gaufré... (en speudo code):
Après, une fois toute tes positions générées, il te faudra un algorithme pour faire en sorte
que tes astéroïdes ne se chevauchent pas, gérant qui plus est des astéroides de taille variable,
etc...
Hors ligne
OH oh oh......c'est va pas être une partie de plaisir.......
"de t'aille variable, la seul chose un peut "facile"....."
Bon déjà je vais essayer de générées des positions aléatoire.
Et tu pourrait un peut m’éclaire sir, que représente les R et le D...il font partie d'un mesh ? D'un vecrteur 3D ? D'une bouding box ?
Dernière modification par mmorpglefilm (09-12-2010 00:46:37)
Hors ligne
Si on prend comme référence ton deuxième screen.
'R' représente le rayon extérieur de ton disque (qui est en représentation filaire)
'D' est la distance séparant la bordure intérieure de la bordure extérieure de ton disque.
Après, pour le reste, les valeurs c'est à toi de la fixer en fonctionne de l'environnement
que veut souhaites modéliser.
Ce sont des notions mathématique très basiques. Regarde quelques tuto sur la trigo, les surfaces
et autres calculs de volume, cela t'aidera je pense, et tu y verras certainement plus claire.
Hors ligne
Je commence à aller un peut plus loin, le champ d'astéroïde commence à devenir rond...mes pour le système de collision (pour pas que les astéroïdes se touche) comment faire ?
J'ai penser à des "aabbox3d", qui quand laure position serait identique l'astéroïde en question ne serait plus visible ou serait déplacer...
C'est une bonne idée ?
Et j'ai une autre question :
Pour générait un nombre aléatoire, l'ordinateur choisi antre deux nombre seulement, serait-il possible de générait un nombre aléatoire antre 4 nombre ?
Parce que il faut aussi pouvoir faire des nombres négatif, moi dabitude pour générait une position je fais :
Max1 = 850
Min1 = 850
Position.X = (rand() % (Max1 - Min1 + 1)) + Min1;
sauf avec ça, les astéroïdes v'on aux milieux de la scène, et sa fais qu'il rentre dans la "planète" que j'ai créer, voici une petite images pour mieux expliquer :
http://hapshack.com/images/sanst465it.png
(J'ai un peux augmenter la taille des astéroïdes pour qu'on voit mieux...)
Dernière modification par mmorpglefilm (15-12-2010 19:13:33)
Hors ligne
WWW.BONPATRON.COM !!!!!!!!
Ca fait mal aux yeux les horreurs que tu écris la !
synom leu calqül pour ke lais astairoyde neux seux touche pa é trai sympl: réillon astairoyde 1 +raillont astairoyd 2 < distensse antre lai de centrent.
Bon courage pour décrypter ça
ps : pour l'aléatoire : rand()
Dernière modification par TUpac (15-12-2010 15:29:22)
Hors ligne
sinon le calcul pour que les astéroïde ne se touche pas est très simple : rillons astéroïde 1 + rillons astéroïde 2 < distensse antre les deux centre.
Je fais peut-être des erreurs mes pas autant.....mes sinon je vais essayer de corriger.
Hors ligne
mmorpglefilm :
Je fais peut-être des erreurs mes pas autant
MDR !! Je ne t'en veux pas mais fait des efforts ou consulte le site que je t'ai donné ci-dessus
Hors ligne
Je commence en fin à comprendre !!! (il était peut-être temps...)
Car aux début je ne comprenait pas le calcul de tmyke, par exemple pour générais la position d'un astéroïde.......et aux faite tes deux calcul :
x = cos(alpha)*D + r
z = sin(alpha)*D + r
Sa génère vraiment une position aléatoire...car avec la fonctions rand il faut des int, et les int ne gère pas les cercle...encore moins en 3D, et quand je dit les int, c'est uniquement les int, pas de floate, de double, pas de quoi se soi !!!
Dernière modification par mmorpglefilm (21-12-2010 03:07:25)
Hors ligne
sa ne veut pas dire grand chose int,float,double sont des type de variable pour stocker des chiffres ... rien ne tempèche de faire un cast d'un type vers l'autre quand tu en n'a beusoin ... oO
rand() te retourne cert un nombre aléatoire de type 'int' mais tu peut tout bonnement faire << float i = (rand()%Max-Min)+Min) >> et tu auras un float ... du coup je ne voie pas le rapport ?
cos/sin/tan sa ne te dit rien ? c'est de la trigo ! (calcul d'angle) tmyke les mais juste en pratique pour obtenir une normal (une direction en 3d)
du coup je me demande si tu as vraiment comprit ...
ps: je comprend toujours pas ta tournure de phrase << les int ne gère pas les cercles >> ? int c'est un type de variable, donc soit tu confont les type de variable et les type de donner, a savoir que les type de donner sont composer de variable ! soit je comprend encore moin ...
Hors ligne
Bon j'ai continue l'algorithme et j'ai remarquer que dans chaque "test" que je fessais sa me générais des positions, ok, mes le résultat était très bizzar, en faite comme je doit générais des positions avec des chiffres positifs et négatif sa me fais 2 cube remplie d'astéroïde un pour les positifs et négatif.
Et en réalités je pense ne plus vraiment à voir besoin de la fonctions "rand"....si mes pas autant qu’avant, en faite se que je vais faire c'est à chaque fois que ma boucle While se lance on ajoute un chiffre à une variables "Float", on en ferais 3 pour chaque directions (X,Y,Z), et comme sa avec c'est "Float" en pourrais choisir une position aléatoirement sans dépasser la zone, se qui serais une solution pour ne pas avoirs un champ d'astéroïde carrés.
C'est difficile pour moi de vous expliquer pourquoi je devrais utiliser cette solution......et si vous avez une meilleur solution sa m'aiderait beaucoup...
Magun->difficile à dire...
Et aussi j'ai tester l'idée de nabouill, ta première solution n'est pas vraiment bonne et sa fais toujours des "carrés" et je ne veux pas créer une dizaines d'astéroïde mes aux moins 500 (pour faire réaliste...) , et je continuer mon idée et cette fois (en exclusivité mondiale) je vais réfléchir avent de coder !!!
Et j'ai trouver un tutoriel qui peut m'aider sur comment savoir si mes astéroïdes ne se touche pas :
http://www.siteduzero.com/tutoriel-3-38 … -rand.html
Dernière modification par mmorpglefilm (31-01-2011 03:20:27)
Hors ligne
bon gg mmorpglefilm lvl up ...
se pendant, je ne sais pas trop comment tu affiche t'est astéroid, billboard, mesh .. ? bon de tout façon la methode que tu montre évite d'avoir deux astéroid exactement au même endroid, mais rien empeche qu'il se touche
en effect rand peut tout a fait te donner suivant ton algo 2.76 et juste après 3.12, du coup t'est estéroid vont se chevaucher, si tu veut eviter ça, il faut faire des test de boundingbox, en gros tu englobe chaque astéroid dans une boite et a chaque fois que tu souhait en rajouter un tu test si elle rentre dans un des astéroid déjà present ...
http://irrlicht.sourceforge.net/docu/cl … b7a15dcedb
enfin bon moi je dit ça, c'est bien aussi de chercher tout seul
Hors ligne
Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
---|---|---|---|---|
Corrections |
|
xhtml 1.0 css 2.1 Propulsé par FluxBB Traduit par FluxBB.fr |
882 membres 1429 sujets 11119 messages |
Dernier membre inscrit: LiseBuisson96 12 invités en ligne Aucun membre connecté RSS Feed |