• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

  • Автор темы 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 - это точность, опытным путем можешь подобрать оптимальное значение. Если всё остальное правильно - обязано работать, если нет - ошибка где-то так (возможно, в уравнении прямой или еще чего)
 
Мы в соцсетях:

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