Skip to content

Instantly share code, notes, and snippets.

@hernandohhoyos
Created August 1, 2024 17:50
Show Gist options
  • Save hernandohhoyos/5e2f192b4b1108fff1f171335fbc1f87 to your computer and use it in GitHub Desktop.
Save hernandohhoyos/5e2f192b4b1108fff1f171335fbc1f87 to your computer and use it in GitHub Desktop.
Calcular triángulo en un plano xy con la posibilidad de agregarle altura en z
import numpy
def calculate_triangle_vectors(a, b, distance, height=0):
"""
Calcula un punto con los parámetros dados para formar un triángulo.
:param a: list. Ie (0,0,0)
:param b: list. Ie (0,0,0)
:param distance: float Ie, 1.0
:param height: int. Ie, 1 or -1
"""
# Definir los puntos A y B
a = np.array(a)
b = np.array(b)
M = ((a[0] + b[0]) / 2, (a[1] + b[1]) / 2, (a[2] + b[2]) / 2)
# La pendiente de la línea AB
m_AB = (b[1] - a[1]) / (b[0] - a[0]) if b[0] != a[0] else np.inf
# La pendiente de la línea perpendicular a AB
if m_AB != 0:
m_perpendicular = -1 / m_AB
else:
m_perpendicular = np.inf
# Calculamos la distancia desde el punto medio M hasta la línea perpendicular
# La ecuación de la línea perpendicular es y = x (para m_perpendicular = 1)
# Por lo tanto, tenemos dos puntos en la línea y = x que están a una distancia 'distance' de M.
dx = distance / np.sqrt(2)
dy = distance / np.sqrt(2)
# Dos posibles ubicaciones para el punto C
outer = (M[0] + dx, M[1] + dy, M[2] * height)
inner = (M[0] - dx, M[1] - dy, M[2] * height)
return outer, inner
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment