velvet7 Ответов: 4

Соберите все точки в линию


- Привет!

Поскольку это математическая задача, а я действительно плохо разбираюсь в математике, я спрашиваю ее у вас, поэтому есть линия (0,0) и (0,2).
Теперь я хотел бы получить все точки в пределах этой линии.
Как я мог это сделать?

Anthony Mushrow

Существует бесконечное количество точек на линии, поэтому вам нужно будет уточнить, какие точки вы на самом деле ищете. Вы имеете в виду точки на сетке, через которые проходит прямая линия?

velvet7

Да. Так что очки будут такими:(0,0),(0,1),(0,2)

Christian Graus

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

4 Ответов

Рейтинг:
33

Аslam Iqbal

Найдите наклон m=(x1-x2)/(y1-y1) и сделайте петлю x, где y=mx+c (c=0). сейчас получить
(x,y) для диапазона x. Я не уверен насчет своих уравнений. пожалуйста, проверьте, правильны они или нет.


Правильные уравнения, заданные (x1, y1) (x2, y2):

m = (y1 - y2) / (x1-x2);
c = y1 - x1 * m;

Тогда для любого заданного x:

y = mx + c;


Christian Graus

Правильный. Стоит добавить, что 0 для c-это потому, что x изначально равен нулю, поэтому если бы первая точка была 3,0, то c было бы 3. Я не могу голосовать, извините, иначе я бы это сделал.

Аslam Iqbal

Я не могу вспомнить, может быть, ты и прав. Я просто пытался дать ему понятие.

velvet7

Спасибо!

Рейтинг:
1

OriginalGriff

Взгляните на это: http://en.wikipedia.org/wiki/Line_drawing_algorithm[^].
Это может быть не совсем то, что вам нужно, но это приводит к версиям, которые ваш компьютер использует каждый день!


Рейтинг:
1

Manfred Rudolf Bihy

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

Ваше здоровье!

—МРБ


velvet7

Пожалуйста, ознакомьтесь с моим комментарием выше.

Рейтинг:
1

Moenieb.davids

Цитата:
Найдите наклон m=(x1-x2)/(y1-y1) и сделайте петлю x, где y=mx+c (c=0). сейчас получить
(x,y) для диапазона x. Я не уверен насчет своих уравнений. пожалуйста, проверьте, правильны они или нет.


Правильные уравнения, заданные (x1, y1) (x2, y2):

m = (y1 - y2) / (x1-x2);
c = y1 - x1 * m;

Тогда для любого заданного x:

y = mx + c;


Приведенный выше ответ прекрасно работает для не вертикальных линий, где X остается постоянным.
Если X остается постоянным, как в прямой вертикальной линии, например, в каждой точке на линии X = 2 или 3....., приведенное выше уравнение не будет работать.

Кроме того, между любыми двумя точками на любом типе линии существует бесконечное количество точек. Таким образом, вы должны указать тип периода либо по X или Y, например, петлю сделать каждая точка на х\г = 0,000001 до 666.00001.


Ralf Meier

Вы поняли, что этому вопросу уже почти 6,5 лет?..
Я думаю, что это решение не более полезно ...