Уравнение прямой по двум точкам pascal

Найти две точки, образующие прямую, параллельную наибольшему количеству заданных прямых

С визуальным представлением на координатной плоскости

Формулировка задания

На плоскости задано множество точек А и множество прямых В.
Найти две различные точки из А такие, чтобы проходящая через них прямая была параллельна наибольшему количеству прямых из В.

Уравнение прямой по двум точкам

Уравнение вида y(x) = y0 + k * x ,
где k = (dy/dx) = тангенс угла наклона прямой,
а y0 — значение функции при х=0 (точка пересечения прямой с осью оХ)

k = (y2 — y1)/(x2 — x1)
y0 = y1 — k*x1 (или y0 = y2 — k*x2)

Перебор множеств точек и прямых

Перебор множества точек «А» следует выполнять в двух циклах, так как точки рассматриваются парами.

Из пары точек получить прямую tmpLine (ее параметры — как, описано выше). Для определения параллельности необходимо сравнить k (наклон) прямой tmpLine и каждой прямой из множества «B».

//——————————
for (int i = 0; i maxTim) // зафиксировать лучший результат
<
pA = p1; pB=p2; //пара точек образующих lineAnswer
lineAnswer = tmpLine;
maxTim = cou;
>
>
>
//——————————

Визуальное представление на Координатной плоскости

Координатная плоскость (из школькой программы) и координатная плоскость формы Windows (c её параметрами left, top в пикселях) отличаются друг от друга, но математическими преобразованиями всегда можно связать любые две координатные системы отсчета.

Т.е. необходимо решить подзадачу: из имеющихся координат точки (любой) в системе_1, получить координаты этой же точки в системе_2.

В программном коде это решение представлено. Тестируйте…

Случайная генерация множест точек и прямых

Чтобы не утруждать пользователя вводом координат точек и параметров прямых — множество точек «А» и прямых «B» генерируются случайным образом.

//——————————
siz1 = (int)numericUpDown1.Value; siz2 = (int)numericUpDown2.Value; //размеры массивов для точек и прямых
arrPoints = new Point[siz1]; //cоздается массив нужного размера для хранения точек
arrLines = new geoLine[siz2];//cоздается массив нужного размера для хранения объектов «прямые линии»
Random rnd = new Random();
//заполнить массивы точек и прямых линий
//——————————

Исходный код на C#

Данный код написан на Visual Studio 2012, но для всех старших версий проблем с открытием быть не должно.

В крайнем случае, свяжемся и все проблемы решим…

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

Вывести уравнение прямой, проходящей через две точки

Задача

По координатам двух точек, которые вводит пользователь, определить уравнение прямой, проходящей через эти точки.

Решение

Алгоритм решения задачи:

Общий вид уравнения прямой имеет вид y = kx + b. Чтобы найти уравнение для конкретной прямой, необходимо вычислить коэффициенты k и b. Сделать это можно, если известны координаты двух точек, лежащих на этой прямой. В этом случае решается система уравнений:
| y1 = kx1 + b
| y2 = kx2 + b
b = y2 — kx2
y1 = kx1 + y2 — kx2
k = (y1 — y2) / (x1 — x2)
b = y2 — k*x2

Вывести уравнение прямой по координатам двух точек

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

Общее уравнение прямой имеет вид y = kx + b . Для какой-то конкретной прямой в уравнении коэффициенты k и b заменяются на числа, например, y = 4x — 2 . Задача сводится именно к нахождению этих коэффициентов.

Так как координаты точки это значения x и y , то мы имеем два уравнения. Пусть, например, координаты точки А(3;2), а координаты B(-1;-1). Получаем уравнения:
2 = k*3 + b,
-1 = k*(-1) + b.
Решая полученную систему уравнений находим значения k и b :
b = 2 — 3k
-1 = -k + 2 — 3k
4k = 3
k = 3/4 = 0.75
b = 2 — 3 * 0.75 = 2 — 2.25 = -0.25
Таким образом, получается уравнение конкретной прямой, проходящей через указанные точки: y = 0.75x — 0.25.

Алгоритм решения данной задаче на языке программирования будет таков:

  1. Получить значения координат первой точки и присвоить их переменным, например x1 и y1 .
  2. Получить значения координат ( x2, y2 ) второй точки.
  3. Вычислить значение k по формуле k = (y1 — y2) / (x1 — x2) .
  4. Вычислить значение b по формуле b = y2 — k * x2 .
  5. Вывести на экран полученное уравнение.


источники:

http://pas1.ru/equation-line

http://gospodaretsva.com/straight.html