проблема в решении задачи прямой и точки

  • Автор темы m4igor
  • Дата начала
M

m4igor

Гость
#1
Задача следующая: есть холст размером 680 на 500 пикселей. На ней есть прямая, начальные и конечные значения, которой известны. С помощью мыши делается клик по холсту и становятся известны координаты на x3, y3 на холсте куда кликнули. Мне нужно узнать: находится ли точка с координатой x3, y3 на прямой.
С помощью всем известной формулы, уравнения прямой Y = k * X + b, я вывел как определить коэффициенты k и b
k = (y2 - y1) / (x2 - x1)
b = y1 - k * X1
Ну а потом проверяется условие
if (y3 == (k * x3 + B))
{
........
}
Только проблема в том, что k и b получаются нецелыми, координаты x3, y3 - целые и в итоге проверка не работает.... Как решить эту проблему?
 
R

romanriddick

Гость
#2
никак ...
пробовал делать аналоговые часы ...
округляите к и в до нужного знака после комы , только так и можно... кстате при деление в с++
после 5 - го знака дает ошибку ... тоесть если вы 2 раза 2/3 то результат не совпадет на 5-8 значение
 
R

Rus59Wolf

Гость
#3
Уравнение прямой по двум точкам выглядит вроде так
((x-x1)/(x2-x1))=((y-y1)/(y2-y1))

Пробуй подставлять прямо сюда вместо (х,у)=(х3,у3) и округляй значения. Может проканает
 

acorn

PHP Developer
29.08.2004
585
3
29
Минск
soccerlist.ru
#4
используй такую проверку:

C++:
if (abs(y3 - (k * x3 + B)) < 1)
1 - это точность, опытным путем можешь подобрать оптимальное значение. Если всё остальное правильно - обязано работать, если нет - ошибка где-то так (возможно, в уравнении прямой или еще чего)