es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo obtener un array de cada punto en una línea con JavaFX?

Tengo una línea, con puntos en (x1, y1) y (x2, y2).
Lo que necesito es un método que simplemente devuelva cada punto entre ellos, en incrementos de números enteros.

Por ejemplo, una línea que va desde (0, 20) hasta (0, 40) me daría [(0, 20), (0, 21), (0, 22), …, (0, 39), (0, 40)).

¡Cualquier ayuda sería muy apreciada!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Claro, puedo ayudarte con eso. Aquí hay una función que hará lo que necesitas:

    def get_points_on_line(x1, y1, x2, y2):
        points = []
        if x1 == x2:
            for y in range(min(y1, y2), max(y1, y2) + 1):
                points.append((x1, y))
        elif y1 == y2:
            for x in range(min(x1, x2), max(x1, x2) + 1):
                points.append((x, y1))
        else:
            m = (y2 - y1) / (x2 - x1)
            b = y1 - m * x1
            for x in range(min(x1, x2), max(x1, x2) + 1):
                y = int(m * x + b)
                points.append((x, y))
        return points
    

    Puedes usarlo así:

    points = get_points_on_line(0, 20, 0, 40)
    # points = [(0, 20), (0, 21), (0, 22), ..., (0, 39), (0, 40))]
    

Comments are closed.