Created
July 5, 2014 18:22
-
-
Save valdergallo/7bfbe7041e85728ac964 to your computer and use it in GitHub Desktop.
Algoritmos de Geometria Analítica
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- 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