Skip to content

Instantly share code, notes, and snippets.

@valdergallo
Created July 5, 2014 18:22
Show Gist options
  • Save valdergallo/7bfbe7041e85728ac964 to your computer and use it in GitHub Desktop.
Save valdergallo/7bfbe7041e85728ac964 to your computer and use it in GitHub Desktop.
Algoritmos de Geometria Analítica
# -*- coding: cp1252 -*-
from math import *
def DotProduct(v, w): #Produto Escalar
try:
result = reduce(lambda x, y: x+y, map(lambda x, y: x*y, v, w))
return result
except TypeError as error:
print "Verifique se foram digitados dois vetores de mesma dimensão:", error
def CrossProduct(v, w): #Produto Vetorial
try:
result = []
result.append(v[1]*w[2]-v[2]*w[1])
result.append(v[2]*w[0]-v[0]*w[2])
result.append(v[0]*w[1]-v[1]*w[0])
return result
except TypeError as error:
print "Verifique se foram digitados dois vetores de mesma dimensão:", error
def ScalarTProduct(v, w, z): #Produto Misto
try:
result = DotProduct(v, CrossProduct(w, z))
return result
except TypeError as error:
print "Verifique se foram digitados dois vetores de mesma dimensão:", error
def VecLen(v): #Módulo do Vetor
try:
length = 0
for i in range(len(v)):
length += v[i]**2
return sqrt(length)
except TypeError as error:
print "Verifique se foi digitado um vetor válido:", error
def DotTheorem(v, w): # v . w = |v||w|.cos Â
try:
dot = DotProduct(v, w)
cosA = dot/(VecLen(v)*VecLen(w))
A = 180*acos(cosA)/pi
return A
except TypeError as error:
print "Verifique se foram digitados dois vetores de mesma dimensão:", error
except ZeroDivisionError as error:
print "Um ou os dois vetores possuem módulo zero, impossível realizar operação:", error
def DirAngles(v): #Ângulos diretores de um vetor
try:
angles = []
for i in range(3):
angles.append(180*acos(v[i]/VecLen(v))/pi)
return angles
except TypeError as error:
print "Verifique se foi digitado um vetor válido:", error
except ZeroDivisionError as error:
print "O vetor possui módulo zero, impossível realizar operação:", error
def Versor(v): #Versor
try:
versor = []
for i in range(len(v)):
versor.append(v[i]/VecLen(v))
return versor
except TypeError as error:
print "Verifique se foi digitado um vetor válido:", error
except ZeroDivisionError as error:
print "O vetor possui módulo zero, impossível realizar operação:", error
def Projection(v, w): #Projeção de V sobre W.
try:
proj = []
x = DotProduct(v, w)/float(DotProduct(w, w))
for i in range(len(v)):
proj.append(w[i]*x)
return proj
except TypeError as error:
print "Verifique se foram digitados dois vetores de mesma dimensão:", error
except ZeroDivisionError as error:
print "O ângulo entre os vetores é de 90º pois o produto escalar entre eles é 0, impossível realizar operação:", error
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment