Как найти координаты каждой точки вектора, созданного из одной точки в другую

#algorithm #vector #geometry #console-application #rasterizing

#алгоритм #вектор #геометрия #консольное приложение #растрирование

Вопрос:

У меня, например, есть 2 пункта A(1, 30) B(20, 10) . Я должен нарисовать в консоли вектор с ближайшим путем * . Я должен получить каждую точку пути, как я могу это сделать?

Комментарии:

1. Посмотрите на алгоритм Брессенхэма для растеризации отрезка линии.

Ответ №1:

Для этого могут быть различные решения. Одним из решений является повторение (например, с использованием двух for циклов) по всем точкам между A и B и проверка, проходит ли линия через каждую точку.

И вам нужен критерий, чтобы решить, проходит ли отрезок AB прямой через определенную точку P(x,y) . Например, вы можете измерить евклидово расстояние от точки P до линии AB . Тогда точка лежит на прямой, если расстояние меньше определенного значения, скажем 0,5.

Еще один критерий для принятия решения P о том, лежит ли на AB , — это проверить AB , проходит ли линия через квадрат 1×1 с центром в P(x,y) . Четыре угла этого квадрата — P1(x-0.5,y-0.5) , P2(x-0.5,y 0.5) , P3(x 0.5,y-0.5) и P4(x 0.5,y 0.5) . Чтобы выяснить, проходит ли линия через этот квадрат, вы можете оценить эти четыре угла и определить, все ли они лежат на одной стороне линии. Если это так, то линия не пересекает квадрат, а в противном случае она пересекает квадрат.

Используя каждый критерий, вы получите набор точек, которые, как предполагается, лежат на отрезке прямой.

Комментарии:

1. Это ненадежный способ. Посмотрите на комментарий Марка Лавина. .