#0 

07-12-2010 23:07:28

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

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


#1 

07-12-2010 23:17:52

nabouill
Abonné
Date d'inscription: 17-09-2009
Messages: 242
Corrections: 1

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


#2 

07-12-2010 23:38:07

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

Hors ligne


#3 

08-12-2010 02:53:37

nabouill
Abonné
Date d'inscription: 17-09-2009
Messages: 242
Corrections: 1

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


#4 

08-12-2010 20:37:28

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

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


#5 

08-12-2010 21:27:33

nabouill
Abonné
Date d'inscription: 17-09-2009
Messages: 242
Corrections: 1

tout à fait, pour créer un tableau du type qui te fait plaisir, dans ton cas j'imagine un:
vector3d vec[3];

Hors ligne


#6 

08-12-2010 21:49:43

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

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):

Code c++ :


R = rayon exterieur du disque
r = rayon interieur du disque
E = épaisseur du disque

D = Rnd(R-r)
alpha = Rnd(360°)
// coordonnée relative d'une astéroide:
x = cos(alpha)*D + r
z = sin(alpha)*D + r
y = -E/2 + Rnd(E)



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... wink


Force et sagesse...

Hors ligne


#7 

08-12-2010 23:42:01

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

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


#8 

09-12-2010 14:55:29

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

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.


Force et sagesse...

Hors ligne


#9 

15-12-2010 13:52:55

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

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


#10 

15-12-2010 15:28:29

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

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 wink

ps : pour l'aléatoire : rand()

Dernière modification par TUpac (15-12-2010 15:29:22)


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#11 

15-12-2010 18:51:09

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

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


#12 

16-12-2010 14:48:04

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

mmorpglefilm a écrit:

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 wink


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#13 

21-12-2010 03:06:48

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

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


#14 

21-12-2010 03:33:03

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 899
Corrections: 1
Site web

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 ... wink

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 ... sad

Hors ligne


#15 

31-01-2011 02:56:03

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

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


#16 

31-01-2011 12:58:54

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 899
Corrections: 1
Site web

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 smile

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
Analysé par
872 membres
1422 sujets
11104 messages
Dernier membre inscrit: Glider
19 invités en ligne
Aucun membre connecté
RSS Feed