Уравнение прямой, проходящей через 2 точки

Здесь Вы можете найти или обсудить множество различных алгоритмов, их описаний, реализаций на VB и других языках.
DreamShark
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 20.02.2010 (Сб) 15:43

Уравнение прямой, проходящей через 2 точки

Сообщение DreamShark » 01.03.2010 (Пн) 23:20

Есть координаты двух точек в плоскости.
Как составить уравнение прямой вида Ax+By+C=0, проходящей через эти точки.

Спасибо!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Уравнение прямой, проходящей через 2 точки

Сообщение Viper » 02.03.2010 (Вт) 0:26

DreamShark писал(а):Есть координаты двух точек в плоскости.
Как составить уравнение прямой вида Ax+By+C=0, проходящей через эти точки.

Спасибо!
Это же элементарно - уравнение прямой проходящей через 2 точки:
(y-y1)/(y2-y1)=(x-x1)/(x2-x1)
Отсюда получаем:
(y2-y1)x-(y2-y1)x1-(x2-x1)x+(x2-x1)y1=0
Следовательно:
A=y2-y1
B=x1-x2
C=(x2-x1)y1-(y2-y1)x1
Весь мир матрица, а мы в нем потоки байтов!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Уравнение прямой, проходящей через 2 точки

Сообщение alibek » 02.03.2010 (Вт) 9:23

Мне кажется, автор нарушил правила форума, сказав при регистрации, что ему больше 13 лет.
Lasciate ogni speranza, voi ch'entrate.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Уравнение прямой, проходящей через 2 точки

Сообщение Денис » 02.03.2010 (Вт) 9:43

alibek писал(а):Мне кажется, автор нарушил правила форума, сказав при регистрации, что ему больше 13 лет.

Суть в том, что человеку может быть хоть сорок лет биологически, а в душе 13. Это-то и страшно.
Однако, знание математики не делает человека взрослым.
_________________

Что-то я подзабыл, не могу разобраться:

уравнение прямой проходящей через 2 точки:
Математическая формула: \frac{(y-y1)}{(y2-y1)}=\frac{(x-x1)}{(x2-x1)}
Отсюда получаем:
Математическая формула: (y2-y1)x-(y2-y1)x1-(x2-x1)x+(x2-x1)y1=0
Следовательно:
Математическая формула: A=y2-y1
Математическая формула: B=x2-x1
->
Математическая формула: Ax-Ax1-Bx-By1=0

А это откуда?
Математическая формула: C=(x2-x1)y1-(y2-y1)x1

_________________

Может лучше так?
уравнение прямой проходящей через 2 точки:
Математическая формула: \frac{(y-y_1)}{(y_2-y_1)}=\frac{(x-x_1)}{(x_2-x_1)}
Вид из педивикии:
Математическая формула: (y_1-y_2)x+(x_2-x_1)y+(x_1y_2-x_2y_1)=0
Отсюда:
Математическая формула: A=(y_1-y_2)x
Математическая формула: B=(x_2-x_1)y
Математическая формула: C=(x_1y_2-x_2y_1)

_________________

Однако тут возникает проблема: Для вычисления A и B надо найти точку с координатами (x, y), лежащую на прямой и не совпадающую с концами (x1, y1) и (x2, y2). Если рисовать прямую самостоятельно, то это не проблема, но если рисовать при помощи Line, то такую точку с разгону не найдешь.
Последний раз редактировалось Денис 02.03.2010 (Вт) 11:34, всего редактировалось 2 раз(а).
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Уравнение прямой, проходящей через 2 точки

Сообщение Antonariy » 02.03.2010 (Вт) 11:19

Однако, знание математики не делает человека взрослым.
Как и незнание — ребенком. Однако такое незнание точно не сделает его программистом.
Лучший способ понять что-то самому — объяснить это другому.

DreamShark
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 20.02.2010 (Сб) 15:43

Re: Уравнение прямой, проходящей через 2 точки

Сообщение DreamShark » 02.03.2010 (Вт) 16:02

Спасибо, во всем разобрался.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Уравнение прямой, проходящей через 2 точки

Сообщение Proxy » 04.03.2010 (Чт) 19:43

Я чаще стараюсь делать через t, нахожу это более удобным.
Например есть 2 точки, лежащие на отрезке (который надо построить). Они имеют координаты (X1;Y1) и (X2;Y2) соответственно.
Далее:
X = X1 * t + X2 * (1-t);
Y = Y1 * t + Y2 * (1-t);
Вычисляем X и Y для каждой точки, расчитывая их в цикле, приращивая t от 0 до 1. Шаг необходимо выбрать такой, чтобы для конкретной дляны отрезка точек было достаточно, чтобы покрыть все видимые точки отрезка.

Вообще необходимость вручную строить отрезок - это крайне редкая задача, т.к. для этого чаще всего присутствует необходимый функционал, чем отсутствует. Вот кривые Безье и т.п - действительно готовые решения не так просто найти и готовых решений в API для этого нет.
Follow the white rabbit.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Уравнение прямой, проходящей через 2 точки

Сообщение Хакер » 04.03.2010 (Чт) 20:41

Proxy писал(а):Вот кривые Безье и т.п - действительно готовые решения не так просто найти и готовых решений в API для этого нет.


Иногда лучше жевать учить матчасть, чем говорить.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Уравнение прямой, проходящей через 2 точки

Сообщение Proxy » 05.03.2010 (Пт) 15:17

Мммм. В Windows 2000 впервые появилось. Не знал, учту.
Follow the white rabbit.


Вернуться в Алгоритмы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList