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

  FORUM HardWare.fr
  Programmation
  Algo

  Tirer une point aléatoire dans cercle sur une sphère

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tirer une point aléatoire dans cercle sur une sphère

n°1716085
Phoenix407
Posté le 11-04-2008 à 10:33:49  profilanswer
 

Bon alors je m'explique.
J'ai une sphère céleste de rayon r=1. Sur cette la surface sphère il y a plein de cercles de rayon 1.49 degrès. Mon algorithme est le suivant :  
1) Je tire au hasard un des cercles et je note les coordonnées de son centre (1,raC,decC).
2) Dans ce cercle je tire un point au hasard
3) Je vérifie que le point est bien dans le cercle
4) je recommence l'opération.
 
Alors mon problème c'est que ce tirage n'est pas du tout homogène. Les points ont tendance à concentrer au centre du cercle. Si vous avez une idée pour m'aider.
Merci


Message édité par Phoenix407 le 11-04-2008 à 10:34:24
mood
Publicité
Posté le 11-04-2008 à 10:33:49  profilanswer
 

n°1716088
babasss
Posté le 11-04-2008 à 10:37:21  profilanswer
 

Juste pour être un peu tatillon : quand tu parles de cercle, tu ne veux pas plutôt parler de disque ?
(Cercle = juste un contour / Disque : Une surface délimitée par le cercle)


Message édité par babasss le 11-04-2008 à 10:37:55

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1716089
skeye
Posté le 11-04-2008 à 10:38:08  profilanswer
 

Rien compris. [:pingouino]


---------------
Can't buy what I want because it's free -
n°1716096
Phoenix407
Posté le 11-04-2008 à 10:41:56  profilanswer
 

oui, je tire dans un disque, pardon me suis mal exprimé

n°1716099
skeye
Posté le 11-04-2008 à 10:46:31  profilanswer
 

Moi j'ai plusieurs questions:
1) Comment tu obtiens des disques à la surface d'une sphère? Les disques c'est de la 2D, et la surface d'une sphère n'est pas plane...[:autobot]
2) Comment ça, tu vérifies que le point est bien dedans? Si tu tires un point du disque, tu tires un point du disque...[:pingouino]
3) C'est quoi, "recommencer l'opération"?[:autobot]
4) Comment tu vois que le tirage n'est pas homogène, si ce n'est qu'un algo?[:petrus dei]


Message édité par skeye le 11-04-2008 à 10:49:50

---------------
Can't buy what I want because it's free -
n°1716104
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-04-2008 à 10:51:34  profilanswer
 

pourquoi passer par un disque plutot que de taper directement dans la sphère ?
En coordonnées polaires, il te suffit de faire 3 randoms sur ρ, φ (0-180), θ(0-360)


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1716107
Phoenix407
Posté le 11-04-2008 à 10:53:37  profilanswer
 

Bon je v expliquer mieux
Alors on a la sphère céleste. Sur cette sphère on dessine un dessine plusieurs disques de rayon r=1.49, et chaque disque comporte un numéro.
Dans mon algorithme :
1) Je tire au hasard le numéro d'un disque et je note les coordonnée équatoriales du centre de ce disque : à savoir l'ascension droite et la déclinaison (raC et decC)
2) Je m'arrange pour tirer un point au hasard dans ce disque, c'est à dire je tire une ascension droite et une déclinaison hasard à l'intérieur de ce disque (raR et decR). Ce tirage de point doit être une distribution uniforme.
Or dans l'algorithme que j'utilise, je dis que  
raR = raC + 2*1.49*(aa-0.5) où aa est un nombre tiré entre 0 et 1
decR = decC + 2*1.49*(aa'-0.5) où aa' est un autre nombre tiré etre 0 et 1
Et lorsque je visualise l'ensemble des points, il y a beaucoup de trou et la distribution n'est pas uniforme.
J'espère avoir été un peu plus clair

n°1716111
Phoenix407
Posté le 11-04-2008 à 10:54:53  profilanswer
 

Je passe par des disques, parce que je ne veux pas tirer sur toute la sphère, seulement sur une partie dont la géométrie est très compliquée. Seuls les disques me permettent de reconstituer cette géométrie

n°1716113
skeye
Posté le 11-04-2008 à 10:56:15  profilanswer
 

Tu utilises quoi pour le tirage?


---------------
Can't buy what I want because it's free -
n°1716119
Moktar1er
No one replies...
Posté le 11-04-2008 à 11:01:15  profilanswer
 

Problème de random seed?
Problème de loi de tirage aléatoire?

mood
Publicité
Posté le 11-04-2008 à 11:01:15  profilanswer
 

n°1716120
Phoenix407
Posté le 11-04-2008 à 11:01:30  profilanswer
 

je fais mon prog en fortran et j'utilise la fonction rand()

n°1716137
babasss
Posté le 11-04-2008 à 11:20:57  profilanswer
 

Le problème, c'est ta méthode :

  • ce que tu fais, c'est que tu tires suivant des coordonnées x et y et aprés tu vérifies si le point est dans le cercle ou non => environ 78% de fois vrai (donc tes stats sont tronqués)
  • ce qu'il faudrait faire, c'est de tirer suivant les coordonnées r et théta. Là ce serait parfait


Edit : r et théta sont les coordonnées cylindriques. Donc tu tires aa et ab (entre 0 et 1) et tu fais :
  x = r*aa*cos(théta*ab)
  y = r*aa*cos(théta*ab) avec r = rayon du disque et théta = 360° (ou 2*Pi radian)


Message édité par babasss le 11-04-2008 à 11:36:01

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1716142
Phoenix407
Posté le 11-04-2008 à 11:23:58  profilanswer
 

je sais bien, mais comment je fais, me creuse la tête depuis 2 semaines et j'arrive pas à trouver une méthode efficace

n°1716146
babasss
Posté le 11-04-2008 à 11:34:35  profilanswer
 

Je reprends ton message en le modifiant :
J'ai une sphère céleste de rayon r=1. Sur cette la surface sphère il y a plein de cercles de rayon 1.49 degrès. Mon algorithme est le suivant :  
1) Je tire au hasard un des cercles et je note les coordonnées de son centre (1,raC,decC).
2) Dans ce cercle je tire deux chiffres entre 0 et 1 notés p1 et p2
3) Je calcule le point résultant avec la formule : x = r*p1*cos(théta*p2) et y = r*p1 et cos(théta*p2) (ou r = rayon de ton disque et théta = 360° (ou 2*Pi radian)
3annulé) Je NE vérifie PAS que le point est bien dans le cercle parceque c'est toujours le cas avec la méthode ci-dessus
4) je recommence l'opération.


Message édité par babasss le 11-04-2008 à 11:36:15

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1716156
Phoenix407
Posté le 11-04-2008 à 11:51:41  profilanswer
 

ok merci, mais c'est long comme algorithme. Je dois tirer 81000 points, tu as une idée du temps que ça prends?

n°1716236
babasss
Posté le 11-04-2008 à 13:42:14  profilanswer
 

Phoenix407 a écrit :

ok merci, mais c'est long comme algorithme. Je dois tirer 81000 points, tu as une idée du temps que ça prends?


Je comprends pas trop. L'algorithme, c'est toi qui l'a proposé à ton premier post, je ne fais que l'adapter pour la nouvelle situation. La phrase ci-dessus laisse entendre que tu n'as pas programmé l'algorithme alors que ton premier post laisse entendre le contraire. Où est la vérité ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm

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

  Tirer une point aléatoire dans cercle sur une sphère

 

Sujets relatifs
Floating Point Exception[MySQL] Requète aléatoire en fonction du jour
probleme avec sockets : fonctionnement aléatoireRépartition aléatoire sur excel
PHP aleatoire Problème de débutant.Recuperer les coordonées d'un point dans un textBox
Erreur HTTP 403 (Forbidden) Aléatoire ?[Résolu] Défine préprocesseur contenant un point
Plus de sujets relatifs à : Tirer une point aléatoire dans cercle sur une sphère


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