Exemplo 8.1: Considere o triângulo A=(2,1), B=(1,4) e C=(5,5). Determine a altura referente ao lado BC.

Solução: Para isso, basta calcular a distância do ponto A à reta que passa por B e C.

import sympy as sp

A=sp.Matrix([2,1])
B=sp.Matrix([1,4])
C=sp.Matrix([5,5])

#1° vamos obter a equação cartesiana da reta por B e C

BC=C-B #vetor diretor da reta
R=sp.Matrix([[0,-1],[1,0]]) #matriz de rotação 90°

n=R*BC #vetor normal à reta por B e C

x,y=sp.symbols('x y',real=True)
X=sp.Matrix([x,y])

#Equação cartesiana da reta
eq=sp.Eq(n.dot(X)-n.dot(B),0)
print('Equação cartesiana da reta r por B e C')
display(eq)

#Calculo da distância entre A e a reta
print('d(A,r)')
display(sp.Abs(n.dot(A)-n.dot(B))/n.norm())
Equação cartesiana da reta r por B e C
Eq(-x + 4*y - 15, 0)
d(A,r)
13*sqrt(17)/17

Exemplo 8.2: Determine a distância entre as retas r:x3y4=0 e s:3x3y1=0

import sympy as sp

#determinando a relação entre as retas

nr=sp.Matrix([1,-sp.sqrt(3)]) #vetor normal a r
ns=sp.Matrix([sp.sqrt(3),-3]) #vetor normal a s


#verificando se os vetores são múltiplos
print('Equação para saber se os vetores são múltiplos')
l=sp.symbols('l',real=True)
eq=sp.Eq(nr,l*ns)
display(eq)

#resolvendo a equação
sol=sp.solve(eq,l)
print('Número de soluções')
nsol=len(sol)
display(nsol)

#como tem 1 solução, significa que os vetores são múltiplos
#portanto as retas são paralelas ou coincidentes
#para calcular a distância, basta tomar um ponto de uma e calcular a distância até a outra

#obtendo um ponto de s
x,y=sp.symbols('x y',real=True)
sol1=sp.solve((sp.sqrt(3)*x-3*y-1,x),(x,y))
P=sp.Matrix([sol1[x],sol1[y]])

#calculando a distância de P a r

print('d(P,r)')
display(sp.Abs(nr.dot(P)-4)/nr.norm())
Equação para saber se os vetores são múltiplos
Eq(Matrix([
[       1],
[-sqrt(3)]]), Matrix([
[sqrt(3)*l],
[     -3*l]]))
Número de soluções
1
d(P,r)
2 - sqrt(3)/6