Modèle sphère fictive/ Python
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Modèle sphère fictive/ Python



  1. #1
    invitea31db2f1

    Modèle sphère fictive/ Python


    ------

    Bonjour,
    Je cherche a programmer un modèle. Je vous joins une image pour aider à la compréhension de mon programme. Nom : pl.PNG
Affichages : 534
Taille : 189,6 Ko
    Vous pouvez voir sur l'image deux zones : verte et rouge. Je définie donc d'abord un nombre n de poit pour définir la surface. C'est dans cette surface que je vais distinguer les deux zones. La sphère sur l'image a un rayon fixé. La zone rouge est la zone où la sphère peut être en contact. Et la zone verte est la zone où la sphère ne peut pas être en contact. ( C'est assez intuitif, une sphère ne pourra jamais toucher un coin intérieur par exemple). Mon programme doit dans un premier temps distinguer les deux surfaces. Dans un second temps, si on fait rouler la sphère sur la surface, les centres de chaque position de la sphère défini une surface. J'aimerai donc aussi prélever un nombre n de point qui appartient à cette surface.
    Pour réaliser ce programme, je suis sur python ~~
    La seule solution que j'ai trouvé est de définir dans un premier temps ma surface dont je doit distinguer les deux zone à l'aide de n points, puis ensuite parcourir un volume pour tester tous les point accessibles aux centres des sphère: la sphère doit impérativement être en contact avec le "sol". Sauf que avec la fonction scatter qui prend en compte trois listes qui prend les coordonées des point X,Y,Z la complexité explose lorsque je parcours le volume.
    Avez vous d'autre idée pour réaliser ma fonction pour diminuer la complexité ?
    Bref je ne sais pas si vous avez bien saisi ce que je voulais faire, c'est pa première fois que j'explique mon programme à l'écrit sur ce forum, n'hesitez pas à demander si vous avez des precisions.
    merci d'avance

    -----

  2. #2
    invite6c250b59

    Re : Modèle sphère fictive/ Python

    Parcourir seulement une liste de points semble une bonne approche (cela parcours une surface plutôt qu’un volume), mais cela demande un petit peu de doigté pour que le résultat représente un sampling équilibré. Une façon de faire est de créer un générateur des centres possibles,
    Code:
    from random import uniform as rnd
    
    def mk_sphere(n, xmin, xmax, ymin, ymax, r = 1):
        for nb in range(n):
            x, y = rnd(xmin, xmax), rnd(ymin, ymax) 
            yield x, y, r
    
    myiter = mk_sphere(30, 0, 3, -3, -4, 1) # lazzy evaluation
    
    for i in myiter:
        print(i)
    puis de supprimer tous ceux qui sont à l’intérieur d'une zone d’exclusion définie par une distance inférieure à un point de collision.

    Code:
    collision = 2, -3, 1
    distance = 1
    
    def check(point, distance, myiter, goods=[], bads=[]):  
        for x, y, z in myiter:
            x = (x - point[0])**2
            y = (y - point[1])**2
            z = (z - point[2])**2
            if x + y + z < distance**2:
                bads.append([x, y, z])
            else:
                goods.append([z, y, z])
        return goods, bads
    
    myiter = mk_sphere(30, 0, 3, -3, -4, distance) # previous iterator was exhausted
    goods, bads = check(collision, distance, myiter)
    
    myiter = mk_sphere(30, 0, 3, -3, -4, distance) 
    goods, bads = check(collision, distance, myiter, goods, bads) # you can extend goods and bads this way
    Il ne reste alors plus qu'à tester l'ensemble des points de collisions possibles (soit de façon exhaustive, soit de façon futée en se limitant à certains points stratégiques). Pour le problème de définir ce qui doit être vert ou rouge, mieux vaut faire l'inverse: partir des points à classer pour calculer les centres possibles (qui sont sur un cercle de rayon variable selon l'altitude du point), puis d'en tirer quelques uns au hasard pour voir si un de ces centres est possible (si oui ou non alors rouge ou vert).

Discussions similaires

  1. [Python] Problème de lag de programme et essai de Timer python
    Par Loupsio dans le forum Programmation et langages, Algorithmique
    Réponses: 20
    Dernier message: 26/01/2018, 16h14
  2. [Python] subprocess, lancer un autre programme avec python
    Par Loupsio dans le forum Programmation et langages, Algorithmique
    Réponses: 10
    Dernier message: 30/11/2016, 19h56
  3. en python le multi tache n'est pas possible alors pourquoi les threads existent sur python?
    Par docEmmettBrown dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 10/06/2015, 16h47
  4. Cercle sur une sphère (python)
    Par invitec2fc95c7 dans le forum Programmation et langages, Algorithmique
    Réponses: 8
    Dernier message: 25/03/2015, 20h29
  5. [Problème]: Méthode de la sphère fictive
    Par invite642cbf50 dans le forum Physique
    Réponses: 9
    Dernier message: 28/02/2009, 17h00