Salome HOME
general crack dialog: working on log...
[modules/smesh.git] / src / Tools / blocFissure / gmu / whichSideVertex.py
1 # -*- coding: utf-8 -*-
2
3 import logging
4 from geomsmesh import geompy
5
6 # -----------------------------------------------------------------------------
7 # --- calcul de la position d'une shape par rapport à une face (dessus, dessous, sur la surface même)
8
9 def whichSideVertex(face, vertex, tol = 1.e-3):
10   """
11   Position d'un vertex par rapport a une face (non nécessairement plane).
12   renvoie 1 si le vertex est du coté de la normale à la face,
13   -1 de l'autre coté, 0 si il est sur la face
14   """
15   #logging.info('start')
16   side = 0
17   distance = geompy.MinDistance(vertex, face)
18   #logging.debug("    distance %s", distance)
19   if distance > tol:
20     projection = geompy.MakeProjection(vertex, face)
21     normal = geompy.GetNormal(face, projection)
22     vect = geompy.MakeVector(projection, vertex)
23     angle = geompy.GetAngle(normal, vect)
24     #logging.debug("  angle %s", angle)
25     side = 1
26     if abs(angle) > 10:
27       side = -1
28   logging.debug("side %s distance %s", side, distance)
29   return side
30