Вывести уравнение прямой по координатам двух точек
По введенным пользователем координатам двух точек вывести уравнение прямой, проходящей через эти точки.
Общее уравнение прямой имеет вид 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.
Алгоритм решения данной задаче на языке программирования будет таков:
- Получить значения координат первой точки и присвоить их переменным, например x1 и y1 .
- Получить значения координат ( x2, y2 ) второй точки.
- Вычислить значение k по формуле k = (y1 — y2) / (x1 — x2) .
- Вычислить значение b по формуле b = y2 — k * x2 .
- Вывести на экран полученное уравнение.
Вычислительная геометрия
Полезно помнить про документацию на модуль 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
Упражнения на векторные и скалярные произведения
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