Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1217 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°266867
Tetedeienc​h
Head Of God
Posté le 11-12-2002 à 05:45:38  profilanswer
 

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 !
mood
Publicité
Posté le 11-12-2002 à 05:45:38  profilanswer
 

n°266868
youdontcar​e
Posté le 11-12-2002 à 06:37:31  profilanswer
 

>> 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
n°266869
Tetedeienc​h
Head Of God
Posté le 11-12-2002 à 07:13:47  profilanswer
 

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 !
n°266884
youdontcar​e
Posté le 11-12-2002 à 09:02:06  profilanswer
 

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

n°266890
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 11-12-2002 à 09:18:46  profilanswer
 

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++]
n°267525
Tetedeienc​h
Head Of God
Posté le 11-12-2002 à 19:16:59  profilanswer
 

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 !
n°267533
youdontcar​e
Posté le 11-12-2002 à 19:26:31  profilanswer
 

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

n°267539
youdontcar​e
Posté le 11-12-2002 à 19:29:32  profilanswer
 

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

n°267597
Tetedeienc​h
Head Of God
Posté le 11-12-2002 à 20:08:30  profilanswer
 

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 !
n°267609
LeGreg
Posté le 11-12-2002 à 20:13:38  profilanswer
 

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
mood
Publicité
Posté le 11-12-2002 à 20:13:38  profilanswer
 

n°268795
Tetedeienc​h
Head Of God
Posté le 13-12-2002 à 04:22:53  profilanswer
 

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 !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

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

 

Sujets relatifs
[C / Algo] - Tri d'une liste chainée par nom [ résolu... oufff ! ]Plusieurs petites questions et demande de fonction sur Delphi
[ PERL ] Fonction pour ouvrir un fichier htmlboutique en ligne...
[ALGO] algo avec restriction de donnée[delphi] débutant : quitter une fonction
[Algo]ou trouver des infos sur le parcours des arbres ?pb avec la fonction DELETE ds une BdD
pb mysql / PHP avec la fonction DELETE[php] erreur ligne 34
Plus de sujets relatifs à : [algo] fonction qui genere une ligne 3d aleatoire...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR