[algo] fonction qui genere une ligne 3d aleatoire...

fonction qui genere une ligne 3d aleatoire... [algo] - Algo - Programmation

Marsh Posté le 11-12-2002 à 05:45:38    

Bonjour !
 
J'ai besoin, pour un projet perso, de tracer une ligne aleatoire dans un espace 3d.
 
En fait, par ligne il faut plus entendre "trait".
 
Il me faudrait donc un petit algo qui me genere, de facon aleatoire, une ligne plausible, dont les points a chaque fois varient selon x, y et z, et dont l'espacement n'est a chaque fois pas trop important.
 
Une sorte de ligne 3d, continue, sans changements brutaux dans un espace quoi...  
 
Vous voyez comment faire cela vous ?
 
Merci :)


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 11-12-2002 à 05:45:38   

Reply

Marsh Posté le 11-12-2002 à 06:37:31    

>> les points a chaque fois varient selon x, y et z,
 
soit fn = un nombre au pif dans un domaine de définition[a, b]
donc x = fn(), y = fn(), z = fn()
 
>> et dont l'espacement n'est a chaque fois pas trop important.  
 
soit tu génères les deux points avec la première fonction, tu trouves l'équation paramétrique x = x0 + vecteurdirecteur*t (avec norme de vecteurdirecteur = 1, x0 le premier point de la droite), tu as x1 = x0 + vecteurdirecteur*(une valeur pas trop grande) ... , soit tu génères un point, exprime le second en coords sphériques, puis conversion en cartésiennes avec le radius que tu veux.
 
:??:


Message édité par youdontcare le 11-12-2002 à 06:38:27
Reply

Marsh Posté le 11-12-2002 à 07:13:47    

youdontcare a écrit :

>> les points a chaque fois varient selon x, y et z,
 
soit fn = un nombre au pif dans un domaine de définition[a, b]
donc x = fn(), y = fn(), z = fn()
 
>> et dont l'espacement n'est a chaque fois pas trop important.  
 
soit tu génères les deux points avec la première fonction, tu trouves l'équation paramétrique x = x0 + vecteurdirecteur*t (avec norme de vecteurdirecteur = 1, x0 le premier point de la droite), tu as x1 = x0 + vecteurdirecteur*(une valeur pas trop grande) ... , soit tu génères un point, exprime le second en coords sphériques, puis conversion en cartésiennes avec le radius que tu veux.
 
:??:


 
Merci beaucoup...
 
Tu peux la refaire en francais s'il te plait ?
 
Ou un joli piti lien serait sympa... car la j'avoue etre largue :o


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 11-12-2002 à 09:02:06    

soit fn = un nombre au pif dans un domaine de définition[a, b]  
 
tu dois avoir une fonction rand() qui renvoie un nombre aléatoire entre 0 et 1
 
donc fn(a, b) = rand()*(b-a) + b
 
(je suppose que dans ton cas, tu fixes a et b au début du programme)
 
donc x = fn(), y = fn(), z = fn(). donne un point aléatoire en 3d.
 
à partir de ce point, tu en génères un deuxième comme indiqué dans mon dernier paragraphe. si tu ne connais pas les équations paramétriques, les coordonnées sphériques, etc. [:google2]. c'est la base de l'algèbre linéaire.
 
tu peux aussi être plus spécifique, car je suis pas sûr d'avoir compris ... (surtout le "Une sorte de ligne 3d, continue" )

Reply

Marsh Posté le 11-12-2002 à 09:18:46    

rand() ne s'utilise pas de cette facon. et si tu veux faire des maths, tu ferais mieux d'utiliser des double.
 
fais une recherche, j'ai déjà posté 2 ou 3 fois sur le bon usage de rand()


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 11-12-2002 à 19:16:59    

youdontcare a écrit :

soit fn = un nombre au pif dans un domaine de définition[a, b]  
 
tu dois avoir une fonction rand() qui renvoie un nombre aléatoire entre 0 et 1
 
donc fn(a, b) = rand()*(b-a) + b
 
(je suppose que dans ton cas, tu fixes a et b au début du programme)
 
donc x = fn(), y = fn(), z = fn(). donne un point aléatoire en 3d.
 
à partir de ce point, tu en génères un deuxième comme indiqué dans mon dernier paragraphe. si tu ne connais pas les équations paramétriques, les coordonnées sphériques, etc. [:google2]. c'est la base de l'algèbre linéaire.
 
tu peux aussi être plus spécifique, car je suis pas sûr d'avoir compris ... (surtout le "Une sorte de ligne 3d, continue" )


 
Je crois que je vais vraiment devoir mater ca alors :D
 
Sinon, pour la ligne, on peux voir le probleme differemment ( c'est pas ce que je veux en faire mais ca decrit bien le probleme).
 
Imagine que la ligne en question est un tunnel. Et que tu marches dedans. Tu veux que la ligne se balade dans tous les sens, mais jamais de virages a 90 degres et tout... juste de jolies courbes. De plus, pour la creer, faut pas faire des segments de 50km, sinon, c'est pas marrant,,, faut que ce soie un serpentin quoi ;)


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 11-12-2002 à 19:26:31    

:lol: c'est pas une ligne que tu veux, c'est une courbe ! tu choisis n points au hasard en 3d, tu les relies par ce que tu veux (bézier = le plus simple, ou catmull-rom, etc ... google encore)

Reply

Marsh Posté le 11-12-2002 à 19:29:32    

choppe le "foley van dam" si tu en as l'occasion. http://www.amazon.com/exec/obidos/asin/0201848406

Reply

Marsh Posté le 11-12-2002 à 20:08:30    

youdontcare a écrit :

choppe le "foley van dam" si tu en as l'occasion. http://www.amazon.com/exec/obidos/asin/0201848406


 
Excellent, in va etre bientot achete lui :)
 
merci :)


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 11-12-2002 à 20:13:38    

youdontcare a écrit :

:lol: c'est pas une ligne que tu veux, c'est une courbe !  


 
beh il a pas precise ligne droite :D
une ligne ca peut etre aussi courbe
(ou droite par morceau)..
 
LeGreg


---------------
voxel terrain render engine | animation mentor
Reply

Marsh Posté le 11-12-2002 à 20:13:38   

Reply

Marsh Posté le 13-12-2002 à 04:22:53    

Corrigez moi si j'ai faux :
 
Ce qu'il faut que j'utilise ce sont les NURBS :
 
glNurbsCurve and co finalement, nan ?
 
Me faut juste une courbe qui se balade en 3d de facon toute douce...
 
Par exemple pas d'angles, toujours des courbes...
 
En anglais on dirait smooth . Je sais pas le dire en francais ( je le perds peu a peu d'ailleurs :o )
 
Bref, j'ai bon ?


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed