Математический форум Math Help Planet
http://mathhelpplanet.com/

Объясните мне формулу прямой
http://mathhelpplanet.com/viewtopic.php?f=28&t=48169
Страница 1 из 1

Автор:  ChazAshley [ 11 апр 2016, 23:54 ]
Заголовок сообщения:  Объясните мне формулу прямой

Прив. Недавно я захотел написать кусочек кода, который бы рисовал прямую линию через весь холст. По сути я имею в распоряжении две точки, которые определяют угол прямой, и все.
Изначально я понял, что прямую можно рассматривать как гипотенузу прямоугольного треугольника, т.е. главное - это определить угол, ну и еще подвинуть прямую в нужное место, ну вы поняли.
И вот рисовал я при помощи формулки
[math]y=xk+b[/math]
но эта формулка не позволяла мне рисовать вертикальную линию.
Потом мне сказали, что нужно использовать какую-то общую формулу, которая выглядит как ax+by+c=0, ну я взял эту формулку, разобрался, что такое a b и с, и вывел из этого такую штуку, которая принимает X, и возвращает Y, она вот так выглядит
[math]y=\frac{(-ax+c)}{b}[/math]
Но эта формулка тоже не позволяет рисовать вертикальные линии!
само поле, на котором я рисую, состоит из пикселей, которые имеют целые значения координат, то есть 0;0, 0;1, 0;2 и т.д. Ах да, еще эта линия рисуется не вдоль двух точек, которые я указываю, а перпендикулярно к отрезку, который создается двумя точками, и по серединке его.
Вот вам видюшка, чтоб видно было
https://www.youtube.com/watch?v=-S98cDF9VPI
Видете? Чем ближе линия к вертикальности, тем большие промежутки между точками прямой.
Почему так? Как мне рисовать любую линию и чтобы она была красивой? И еще чтобы задавалась двумя точками?

Автор:  Anatole [ 12 апр 2016, 00:29 ]
Заголовок сообщения:  Re: Объясните мне формулу прямой

Если у Вас есть общее уравнение прямой [math]Ax+By+C=0[/math],
то случаи, когда прямая параллельна осям координат, можно выловить следующим образом:
если [math]B=0[/math], то имеем прямую, параллельную оси ординат [math]\left\{\!\begin{aligned}
& x=-\frac{ C }{ A } \\
& y \in [-a;a]
\end{aligned}\right.[/math]
, где [math][-a;a][/math] - диапазон на поле для [math]y[/math].

Автор:  ChazAshley [ 12 апр 2016, 00:55 ]
Заголовок сообщения:  Re: Объясните мне формулу прямой

Ну так-то да, я вот тут прикинул. Если у нас есть две точки, первая имеет координаты
[math]x=-2, y=0[/math]
а вторая
[math]x=2, y=0[/math]
И тут каг-бэ понятно, что прямая будет вертикальной и проходить через ось Y
Я тут подсчитал коэфициенты, и будет вот такое
[math]a=8, b=0, c=0[/math]
И тогда если выразить Y, будет
[math]y=\frac{0-8x}{0}[/math]
Но на нуль делить нельзя же!!!! АААА!

Это я раписал то, как работает моя прога. То есть она работает через поиск Y, и когда линия вертикальная, то все, приехали.
А как мне тогда обработать эту ситуацию? Просто проверять - "если B равно 0, то просто рисуем вертикальную линию" не получится, потому что даже если линия близка к вертикальной, то уже появляются какие-то промежутки между точечками. Откуда эти промежутки берутся?
Я вот глянул на график, и тут нету никаких промежутков.
Изображение

Автор:  Anatole [ 12 апр 2016, 01:13 ]
Заголовок сообщения:  Re: Объясните мне формулу прямой

ChazAshley
Прямая, проходящая через точки [math](-2;0)[/math] и [math](2;0)[/math], параллельна не оси ординат, а оси абсцисс, т.е. - горизонтальна, да и к тому же и есть сама ось абсцисс.
Уравнение такой прямой: [math]\left\{\!\begin{aligned}
& y=-\frac{ C }{ B } \\
& x∈[−b;b]
\end{aligned}\right.[/math]
.

Автор:  ChazAshley [ 12 апр 2016, 07:34 ]
Заголовок сообщения:  Re: Объясните мне формулу прямой

нене, это не точки, через которые проходит прямая, это точки перпендикулярного вектора, типа
Изображение

Автор:  ChazAshley [ 12 апр 2016, 20:46 ]
Заголовок сообщения:  Re: Объясните мне формулу прямой

хммм, я тут посмотрел на А и B, и получается, что по сути они собой являют катеты треугольника, т.е. в конце концов используется какое-никакое значение угла, вот поэтому, чем ближе угол к 90 градусам, тем больше значения Y получаются, потому что один из катетов растет вверх, и ясный пень, он не может быть настолько большим, чтобы образовался второй угол в 90 градусов, поэтому при вертикальной линии та формулка ломается, а чем ближе к 90 градусам, тем значения игрика больше
Вот, например, значения Y, когда градус 89, то есть почти 90, при этом X изменяется от 0 до 9
Изображение
А вот значения, при угле в 1 градус
Изображение
А вооот 45 градусов
Изображение

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/