Imagina un triángulo rectángulo bidimensional dibujado en papel cuadriculado (un entramado), con la esquina derecha originada en (0,0). Cada unidad del papel cuadriculado tiene una anchura de 1 unidad. Las longitudes de la base y la altura de este triángulo pueden ser cualquier número real. ¿Existe una fórmula para determinar el número de puntos de la red que contiene el triángulo? Por punto de entramado, me refiero al lugar donde se cruzan las líneas en el papel cuadriculado, que es donde las coordenadas son valores enteros. La imagen (# 1) a continuación muestra un triángulo con área de 2 unidades cuadradas, que contiene 6 puntos de celosía.
Y otra imagen similar (#2), esta vez con el área del triángulo siendo de 7 unidades cuadradas, y conteniendo 13 puntos de celosía:
PREGUNTA: ¿Existe una fórmula para calcular el número de celosías para valores arbitrarios de base y altura?
Como antecedente, estoy haciendo esto como un pasatiempo mientras trato de resolver un desafío de programación de computadoras. He estudiado hasta cálculo-1 y cálculo-2 en la universidad, pero eso fue hace muchos años. Si desea más detalles, hágamelo saber.
Soy consciente de que esto podría resolverse algorítmicamente con bucles en un programa de ordenador. Pero el verdadero desafío implica el volumen de una hiperpirámide de N dimensiones, con valores dimensionales muy grandes, y un requisito para ser calculado en < 1 segundo. Así que espero una fórmula real.
EDIT: (he cambiado "puntos de vértice" por "puntos de celosía" arriba, después de encontrar una mejor terminología).
ACTUALIZACIÓN: El estudio del enlace de Somos me llevó al teorema de Pick ( https://en.wikipedia.org/wiki/Pick%27s_theorem ):
A = i + b/2 - 1
or
Area = Number_of_internal_lattice_points + Number_of_boundry_lattice_points/2 - 1
Puedo calcular el área total "A" a partir de la fórmula de un triángulo, utilizando una función Floor() para que las dimensiones se alineen con los puntos de la red, necesaria para el teorema de Pick. Estoy buscando (i+b), por lo que necesito determinar a continuación b. Eso sería:
Floor(base_length)+1 +
Floor(height_length)+1 +
number_of_lattice_points_on_hypotenuse_not_including_end_points
Entonces, ¿cómo calcular el número de puntos enteros de la red que caerían en la hipotenusa?
La imagen (#3) de abajo tiene una pendiente (m) = subida / recorrido = -1/4.
Pero la imagen #2, desde arriba, tiene una pendiente de -2/7 y NO tiene puntos de red en la hipotenusa.
Pero si escaláramos este triángulo por el factor 2, tendríamos una pendiente de -4/14 y 1 punto de red en la hipotenusa.
Así que creo que los pasos generales serán:
- Hallar la pendiente (m) mediante Suelo(altura) / Suelo(base)
- Encuentre el mayor número entero N que pueda reducir la pendiente manteniendo el numerador y el denominador enteros.
- Este número N es el número de segmentos divididos de la hipotenusa. El número de puntos de la red es N-1
2 votos
Deberías leer la Wikipedia Polinomio de Ehrhart .
0 votos
Esto parece lo que estaba buscando. No había sabido de estos antes... Estudiando ahora.
0 votos
¿Qué podrías hacer con triples pitagóricos como $27,36,45$ que es un $9 times$ múltiplo de $3,4,5$ ?
0 votos
@poetasis Seguro que soy denso, y sé que me estás intentando ayudar a pensar en algo, pero no consigo averiguar qué es. Seguiré pensando en ello.
1 votos
@kdtop Es sólo una idea sobre el uso de múltiplos de triples pitagóricos. No sé cómo calcular los vértices pero $these$ aparentemente tendría un número previsiblemente mayor de vértices adicionales porque todas las dimensiones son divisibles por números enteros.