Cliquez ici pour l'idée
python3.7
Calculez si le __ point P </ font> __ dans la figure ci-dessous est à l'intérieur ou à l'extérieur de la figure.
__O (0,0) __ représente __ origine __. De plus, __A (2,2) __, __B (3,1) __, __C (3,3) __ représentent les sommets de la __shape. __P (x, y) __ est __ point arbitraire __.
Calculez de façon à ce que les directions des produits __outeurs soient les mêmes __ comme indiqué dans la figure ci-dessous.
Définition des coordonnées ↓
python
import numpy
#Coordonnées du point A
A = numpy.array((6, 5))
#Coordonnées du point B
B = numpy.array((3, 1))
#Coordonnées du point C
C = numpy.array((9, 1))
Calcul du produit extérieur ↓
python
#Si le point P est dans la figure
def p(x, y):
#Coordonnées du point P
P = numpy.array((x, y))
#Produit externe du vecteur BP et du vecteur BA
abp = numpy.outer(P-B, A-B)
#Produit extérieur du vecteur BC et du vecteur BP
pbc = numpy.outer(C-B, P-B)
#Produit extérieur du vecteur CA et du vecteur CP
apc = numpy.outer(A-C, P-C)
#Expression matricielle du produit externe du vecteur BP et du vecteur BA
abp = numpy.linalg.det(abp)
#Expression matricielle du produit externe du vecteur BC et du vecteur BP
pbc = numpy.linalg.det(pbc)
#Expression matricielle du produit externe du vecteur CA et du vecteur CP
apc = numpy.linalg.det(apc)
#Renvoie True si l'expression matricielle du produit extérieur du vecteur BP et du vecteur BA correspond au signe de l'autre expression matricielle
if numpy.sign(abp)==numpy.sign(pbc) and numpy.sign(abp)==numpy.sign(pbc):
return True
#Renvoie False si l'expression matricielle du produit externe du vecteur BP et du vecteur BA ne correspond pas au signe de l'autre expression matricielle.
else:
return False
code
code.py
import numpy
#Coordonnées du point A
A = numpy.array((6, 5))
#Coordonnées du point B
B = numpy.array((3, 1))
#Coordonnées du point C
C = numpy.array((9, 1))
#Si le point P est dans la figure
def p(x, y):
#Coordonnées du point P
P = numpy.array((x, y))
#Produit externe du vecteur BP et du vecteur BA
abp = numpy.outer(P-B, A-B)
#Produit extérieur du vecteur BC et du vecteur BP
pbc = numpy.outer(C-B, P-B)
#Produit extérieur du vecteur CA et du vecteur CP
apc = numpy.outer(A-C, P-C)
#Expression matricielle du produit externe du vecteur BP et du vecteur BA
abp = numpy.linalg.det(abp)
#Expression matricielle du produit externe du vecteur BC et du vecteur BP
pbc = numpy.linalg.det(pbc)
#Expression matricielle du produit externe du vecteur CA et du vecteur CP
apc = numpy.linalg.det(apc)
#Renvoie True si l'expression matricielle du produit extérieur du vecteur BP et du vecteur BA correspond au signe de l'autre expression matricielle
if numpy.sign(abp)==numpy.sign(pbc) and numpy.sign(abp)==numpy.sign(pbc):
return True
#Renvoie False si l'expression matricielle du produit externe du vecteur BP et du vecteur BA ne correspond pas au signe de l'autre expression matricielle.
else:
return False
print(p(3, 1))#Résultat de sortie:True
print(p(2, 2))#Résultat de sortie:True
print(p(8,14))#Résultat de sortie:False
__Supplément __ Lorsque __point P est sur la ligne __, le point P est calculé comme __ dans la __figure.