• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

m4igor

Задача следующая: есть холст размером 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

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

Rus59Wolf

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

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

acorn

используй такую проверку:

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!