trouver un point sur une portion de sphère
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

trouver un point sur une portion de sphère



  1. #1
    invite241f5934

    trouver un point sur une portion de sphère


    ------

    Bonjour, pour un projet personel de bibliotheque informatique, je recherche un moyen efficace et rapide de générer un vecteur selon ses contraintes :

    _ j'ai un vecteur normalisé quelquonque v (x,y,z)
    _ j'ai un angle quelquonque alpha

    Le vecteur généré v' (x',y',z') est en fait définit par une rotation selon un axe arbitraire sur le plan normal au vecteur v d'une valeur aribtraire [0,alpha]

    Enoncé autrement mon problème consiste à trouver un point sur une sphère de rayon unitaire et centré sur l'origine a partir d'un autre point sur cette sphère et d'un angle. un angle de 2PI correspondrait a n'importe quel point de la sphère, un angle de PI a une demi sphère et un angle de 0 au point de référence.

    En fait je cherche à lancer des particules selon un canon plus ou moin large et avec une direction. Chaque particule doit avoir son vecteur directeur determiner aléatoirement tout en respectant les contraintes défini par l'emetteur.

    Je ne sais pas si je suis très clair. J'avoue que je ne sais pas trop comment partir, et sollicite votre aide.

    -----

  2. #2
    invite241f5934

    Re : trouver un point sur une portion de sphère

    Un des moyens que j'ai imaginé est de determiner un vecteur arbitraire sur le plan normal au vecteur v, puis d'effectuer un rotation d'un angle aléatoire compris entre 0 et angle selon cet axe du point de référence de la sphère (défini par v). Mais je me demande s'il n'y a pas plus simple en partant d'une equation de la portion de sphere interessante par exemple parceque le temps de calcul est très important dans mon cas.

  3. #3
    invite241f5934

    Re : trouver un point sur une portion de sphère

    Bonjour. Visiblement, je me suis pas très bien exprimé. Je vais donc poser mon problème différemment :

    Comment définir une portion circulaire a la surface d'une sphere en fonction du centre de cette portion P et de l'angle alpha ? (voir le croquis)

    Merci
    Images attachées Images attachées  

  4. #4
    Celestion

    Re : trouver un point sur une portion de sphère

    Je te conseille de chercher des informations sur les Angles solides.

  5. A voir en vidéo sur Futura
  6. #5
    mécano41

    Re : trouver un point sur une portion de sphère

    Bonjour,

    Pour voir si j'ai compris "définir une portion circulaire" comme tu le souhaites :

    - on a une sphère de rayon R (unité)
    - on a un point P (x, y, z) de la surface de cette sphère
    - on a un cône, d'axe OP et d'angle au sommet alpha
    - l'intersection du cône et de la sphère donne un cercle (en marron sur ton dessin)
    - tu veux connaître les coordonnées d'un point quelconque P' (x', y', z') de ce cercle en fonction de alpha et de la position du point P

    Ensuite, tu voudras les positions de P' en faisant varier la position de P et l'angle alpha de façon aléatoire.

    Est-ce bien cela?

    Cordialement

  7. #6
    invite241f5934

    Re : trouver un point sur une portion de sphère

    Bonjour. Oui c'est a peu pres ca. sauf que P et alpha sont fixe. Ce que je cherche c'est un point aléatoire appartenant a la portion de la sphere définit par P et alpha (pas le cercle d'intersection mais la surface entière)

    En fait mon but est a partir d'un vecteur v et un angle alpha de pouvoir trouver un vecteur arbitraire v' de même norme qui est le veteur résultant d'une rotation d'angle [0,alpha] dans une direction aléatoire de v. Ce qui reviend bien a trouver un point sur une portion de sphere définie plus haut.

    Je recherche en fait a avoir un set de vecteurs repondant aux conditions plus haut. Les paramètres de départ (le vecteur direction OP et l'angle alpha) ne doivent pas forcément être ceux ci (c'est ce qui me parait le mieux cependant), ce qui compte c'est de pouvoir trouver des vecteurs qui en fait définissent un cone à base sphérique (si alpha < PI).

    Je ne sais toujours pas si je suis très clair. Si non, je ferai un rendu 3D de ce que je recherche.

  8. #7
    invite241f5934

    Re : trouver un point sur une portion de sphère

    Bonjour,

    j'ai reussi a faire ce que je voulais en utilisant les coordonnées sphériques. En fait je me met dans le repère ou Oz est OP. je tire rho aléatoirement sur [0,alpha] et theta sur [0,2PI] puis je me remet dans le repère initial.

    Le problème est que la distribution de mes points générés n'est pas homogène sur la surface. De facon évidente la densité de point généré est plus forte en se rapprochant de P. Est ce que je peux appliqué une formule sur mon tirage aléatoire de facon a ce que la distribution des points soit homogène ? J'imagine qu'il faut partir du périmètre du cercle qui varie en fonction de rho... soit une formule a base de sinus

  9. #8
    invite241f5934

    Re : trouver un point sur une portion de sphère

    Il faut lire : je tire theta aléatoirement sur [0,alpha] et phi sur [0,2PI] puis je me remet dans le repère initial.

  10. #9
    mécano41

    Re : trouver un point sur une portion de sphère

    Bonjour,

    Je ne sais pas si cela t'aidera beaucoup mais j'ai pensé à ceci pour (peut-être ) améliorer l'homogénéité des "impacts".

    Au lieu de choisi aléatoirement des angles de rotation, on crée sur la sphère une grille virtuelle de pas à peu près constant (fixé en fonction du besoin) et l'on choisit aléatoirement la position d'un point. (par "un pas à peu près constant" j'entends que l'on choisit un pas entre deux méridiens, que l'on reporte ce même pas sur un parallèle pour calculer un nombre entier de pas, quel que soit le parallèle considéré). Evidemment, plus le pas est fin, plus on se rapproche de la situation actuelle.

    Je joins un fichier, mais je n'ai pas vérifié si cela fonctionne.

    Ensuite, il me semble que tout dépend de la qualité "réellement aléatoire" du tirage...

    Cordialement
    Images attachées Images attachées

  11. #10
    invite241f5934

    Re : trouver un point sur une portion de sphère

    Bonjour, j'ai fait quelques rendus des différentes méthodes utilisé pour générer mes points, mais aucune des 2 n'a une distribution uniforme sur la surface .

    je vous explique les 2 méthodes :

    méthode 1 :

    On a un vecteur OP qui défini un point P sur une sphère de centre O (l'origine) et de rayon |OP| (|OP| = 1)
    On se met dans le repère en coordonnées sphériques ou OP définit l'axe Oz. Le repère est orthonormé.
    On tire thetha aléatoirement sur [0,alpha]
    On tire phi aléatoirement sur [0,2PI]
    On convertie les coordonnées sphériques en coordonnées cartésiennes et on se remet dans le repère initial.

    La distribution des points n'est pas homogènes, la densité des points est plus importante lorsque l'on se rapproche de l'axe OP.

    méthode 2 :

    Cette méthode empirique m'a été proposé par un membre d'un autre forum :
    Toujours dans le repère orthonormé ou OP = Oz.
    On réalise les tirages aléatoires suivant :
    x sur ]-Rsin(alpha),+Rsin(alpha)[
    y sur ]-racine(R²sin²(alpha)-x²),racine(R²sin²(alpha)-x²)[
    z sur ]xtan(alpha),R[
    Ensuite on multiplie (x,y,z) par k avec :
    k = 1/racine(x²+y²+z²)
    On se remet ensuite dans le repère initial

    La distribution n'est pas non plus homogènes. La densité des points est un peu plus importante lorsque l'on se rapproche de Ox et lorsque theta approche -PI/4 ou PI/4

    J'ai mis en piece jointes les rendus effectués. En fait j'utilise ces méthodes pour determiner aléatoirement un vecteur vitesse a donner a une particule dont la position initiale est l'origine. Ce vecteur vitesse ne varie pas sur t et toutes les particules générées ont la même durée de vie. La non uniformité de la distribution des 2 méthodes apparait alors clairement.

    Pour les rendu, j'ai pris comme valeur :
    OP = (0.0,1.0,0.0)
    alpha sur [0,2PI]

    Merci mecano pour ta proposition, je regarderais mais pour l'instant je n'arrive pas a ouvrir ton pdf.

    Avez vous des idées pour avoir une répartition homogènes des points ? Je pense qu'on peut appliquer une formule sur un tirage aléatoire uniforme pour déduire un tirage aléatoire de theta non uniforme dans la méthode 1 pour avoir une distribution homogène : Tirer plus souvent les theta dont le sin(theta) est grand ou quelque chose comme ca. Mais je n'arrive pas a déduire cette formule. D'ailleurs il me semble que la méthode que tu propose mecano reviend plus ou moins a ca sauf que tu distrétises l'espace ?
    Images attachées Images attachées

  12. #11
    invite241f5934

    Re : trouver un point sur une portion de sphère

    J'ai trouvé !

    En fait il ne faut pas faire un tirage aléatoire sur theta mais sur les cosinus de theta. Ainsi la repartition des angle n'est plus uniforme mais celle sur des points sur la sphère l'est :

    On a alpha E [0,PI]
    On tire a sur [cos(alpha),1]
    theta = acos(a)

    On peut généraliser a 2 angles alpha,beta E [0,PI] ; beta <= alpha
    On tire a sur [cos(alpha),cos(beta)]
    theta = acos(a)

    J'ai testé et ca marche (voir le rendu).

    C'était beaucoup plus simple qu'il n'y paraissait en fait... Ca doit même être démontrable assez facilement.
    Images attachées Images attachées  

Discussions similaires

  1. Coordonnées d'un point dans une sphère
    Par invite99e3f1e7 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 24/01/2008, 15h58
  2. Calcul de volume d'une portion de sphère délimitée par 2 plans
    Par syens dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 06/06/2007, 11h59
  3. Changer une portion de courbe.
    Par invitedcd45209 dans le forum Mathématiques du collège et du lycée
    Réponses: 5
    Dernier message: 15/11/2006, 15h57
  4. déplacer un point sur une sphère suivant une direction
    Par invite9a06995e dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 26/08/2006, 02h43
  5. Points sur une sphère
    Par invitedcd45209 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 20/04/2006, 15h40