• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

  • Автор темы Автор темы 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 - целые и в итоге проверка не работает.... Как решить эту проблему?
 
никак ...
пробовал делать аналоговые часы ...
округляите к и в до нужного знака после комы , только так и можно... кстате при деление в с++
после 5 - го знака дает ошибку ... тоесть если вы 2 раза 2/3 то результат не совпадет на 5-8 значение
 
Уравнение прямой по двум точкам выглядит вроде так
((x-x1)/(x2-x1))=((y-y1)/(y2-y1))

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

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab