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

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

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

Общее уравнение прямой имеет вид 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. Вывести на экран полученное уравнение.

Вычислительная геометрия

Полезно помнить про документацию на модуль math (ужатая версия на русском). Там есть очень полезные функции, например, atan2 .

Для тех, кто допускает, что его жизнь будет так или иначе связана с программированием, рекомендуется создавать классы для базовых примитивов (точка, вектор, прямая, луч, окружность и т.п.) и определять соответствующие операции с ними. Например, разность двух точек может давать вектор, вектора можно скалярно и векторно перемножать. Сами вектора можно умножать на числа, складывать и вычитать. Прямую можно собрать по двум точкам, по точке и вектору, которому прямая должна быть параллельна или перпендикулярна. Функция «Пересечение» может выдавать список точек (возможно, пустой) И т.п. Здесь хороший простор для продумывания удобной архитектуры решения.

Русско-английский тематический словарик

точкаpoint
векторvector
прямаяline
лучray
отрезокsegment
уголangle
окружностьcircle
треугольникtriangle
прямоугольникrectangle
квадратsquare
многоугольникpolygon
окружностьcircle
медианаmedian
биссектрисаbisector
высотаaltitude
пересечениеintersection
длинаlength
периметрperimeter
площадьarea
касательнаяtangent
скалярное произведениеdot product
векторное произведениеcross product
вектор нормалиnormal vector
ограничивающий прямоугольникbounding box

0: Класс «Точка»

Реализуйте класс Pt , поддерживающих следующие операции:

  • Создание из пары чисел или из строки;
  • Сложение и вычитание точек;
  • Умножение и деление на число (целое и действительное);
  • Скалярное и косое произведения;
  • Вычисление длины при помощи abs ;
  • Проверка на равенство.

Могущество скалярного и косого (векторного) произведения

Рассмотрим какой-нибудь ненулевой вектор $\overrightarrow$ на плоскости. Для каждого вектора $\overrightarrow$ посчитаем скалярное и векторные произведения. И в зависимости от знаков и равенства нулю покрасим области разным цветом. В результате плоскость будет разбита на 4 четвертушки, 4 луча и точку. Это позволяет очень быстро и эффективно определять взаимное расположение точек и векторов.

Упражнения на векторные и скалярные произведения

A: Расстояние между двумя точками

Даны координаты двух точек. Найдите расстояние между ними.

Для решения используйте math.hypot .

B: Полярный угол точки

Даны два числа – координаты точки, не совпадающей с началом координат. Выведите ее полярный угол (величину от 0 до $2\pi$).

Для решения используйте math.atan2 .

C: Угол между векторами

Даны четыре числа: координаты двух невырожденных векторов.

Выведите величину неориентированного угла между ними.

Для решения используйте math.atan2 .

D: Площадь треугольника

Даны шесть чисел: координаты трех вершин треугольника.

Выведите значение площади треугольника.

В решении разрешается использовать только скалярное и косое произведения. Никаких корней и тригонометрии.

E: Классификация векторов

Даны четыре числа: координаты двух ненулевых векторов. Если эти вектора коллинеарны, выведите 1. Если эти вектора перпендикулярны, выведите 2. Иначе выведите 0.

В решении разрешается использовать только скалярное и косое произведения. Никаких корней и тригонометрии.

Как в Gnplot построить прямую по двум точкам?

Вчера пытался нахрапом решить задачу построения прямой по двум точкам. Есть такой файл data.txt следующего содержания:

Где каждая пара столбцов — это координата двух точек. Я хочу графически решить задачу пересечениях этих прямых. И что-то с разбегу не удалось решить задачу.

Скрипт составил примерно такой:

Если применить очевидное решение, и записать:

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

Но на мой взгляд — это не самое изящное решение. Как мне кажется решение должно быть тривиальным, но я его не вижу.

Один из вариантов, который я подглядел в другом месте — это рисование решённого уравнения:

Осталось только понять, как заносить значения в x1,y1, y2, x2.

Быть может я тупил в ночи, и всё значительно проще?


источники:

http://server.179.ru/tasks/python/2022b/pgm39__Geometry-1.html

http://qna.habr.com/q/53364