| Математический форум 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/ |
|