    def champVision(self, origine, hauteur=0):
        """renvoie la liste des cases visibles depuis la case et la hauteur donnees"""
        #essai 4: on travaille par angle
        #lorsque l'angle entre les coordonnees d'une case et celles de l'origine est inferieure au demi rayon de l'obstacle a cette distance(tolerance, a revoir),
        #elle est consideree comme invisible
        #si elle est comprise entre le demi rayon et le rayon, elle presente un couvert partiel 

        obstacles = []
        aVerifier = []
        t0 = time()
        #on enregistre les coord des obstacles (a ne faire qu'une fois avant de faire le champ de vision de tous les pions)
        for coord in self.cases:
            if coord != origine:
                aVerifier.append(coord)
                if self.cases[coord].estObstacleVision(hauteur):
                   obstacles.append(coord)

        
        for coordObs in obstacles:
            #on separe les 4 quadrants, et les 2 cas ou l'origine et l'obstacle ont le meme x ou y
            if coordObs[0] > origine[0] and coordObs[1] > origine[1]:
                tolerance = asin(1/(sqrt((coordObs[0]-origine[0])**2+(coordObs[1]-origine[1])**2)))
                #print tolerance
                for coord in aVerifier:
                    if coord != coordObs and coord[0] >= coordObs[0] and coord[1] >= coordObs[1]:
                        deltaAngle = abs(((coord[0]-origine[0])/(coord[1]-origine[1]))-((coordObs[0]-origine[0])/(coordObs[1]-origine[1])))
                        #self.cases[coord].setBrush(QColor("blue").lighter(100+coeff*deltaAngle))
                        if deltaAngle < tolerance:
                            self.cases[coord].setBrush(QColor("blue"))
                        #visibilite = 100*((deltaAngle-tolerance))    
                        #self.cases[coord].etiquette = QGraphicsSimpleTextItem("{}".format(visibilite), parent=self.cases[coord])
                        #police = QFont("Georgia", 18)
                        #self.cases[coord].etiquette.setFont(police)
                        #self.cases[coord].etiquette.setPos(QPointF(((self.cases[coord].x*0.866)+0.65)*self.hCase,  (self.cases[coord].y+0.7)*self.hCase))

        print(time() - t0)  