Created
August 1, 2024 17:50
-
-
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
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
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