Войти
ПрограммированиеФорумГрафика

Сторона точки по отношению к прямой (2 стр)

Страницы: 1 2 3 Следующая »
#15
21:22, 29 июня 2020

gamedevfor
> Главное было понять причину, почему так.
Ну было достаточно очевидно, что необходимо учитывать в какую четверть движется прямая.


#16
(Правка: 21:27) 21:26, 29 июня 2020

gamedevfor
>B.x -= A.x;
>B.y -= A.y;
>...
>double k = static_cast<double>(B.y - A.y) / static_cast<double>(B.x - A.x);
Абракадабра получается и деление на ноль.

#17
21:32, 29 июня 2020

> Абракадабра
над что-то типа if(A.y > B.y) std::swap(A, B);

#18
(Правка: 21:37) 21:33, 29 июня 2020

BingoBongo
> над что-то типа if(A.y > B.y) std::swap(A, B);
B - это уже дельта.
А - это координаты точки прямой.
Лучше не становиться - длинна с килограммами.

Возможно: B.x ?? B.y then ...
было бы правильнее.

#19
21:42, 29 июня 2020

foxes
> B - это уже дельта.
я предложил из расчета A начальная B конечная, согласно начальным аргументам функции

#20
(Правка: 21:53) 21:46, 29 июня 2020

BingoBongo
> я предложил из расчета A начальная B конечная
Тогда, то что я подразумевал как альтернатива if (B.y<0) cross_product =-cross_product ;

+ Показать
#21
21:59, 29 июня 2020

Для любителей запариться есть еще вариант находить сторону по знаку компоненты X опущенного перпендикуляра на прямую.

#22
16:39, 1 июля 2020

  Странно, что ещё никто не предложил просто взять знак векторного произведения.

gamedevfor
> По моему надо таки учитывать направление линии чтобы точно определить сторону точки.
  А по моему без этого постановка задачи вообще не имеет смысла. Что ты называешь стороной линии, если ты даже не знаешь её направления?

#23
17:11, 1 июля 2020

Zefick
> Странно, что ещё никто не предложил просто взять знак векторного произведения.
Понимаю.

gamedevfor
> long cross_product = B.x * P.y - B.y * P.x;
>
> result = cross_product;
>
> if (cross_product > 0)
> return RIGHT;
>
> if (cross_product < 0)
> return LEFT;
lookid
> a.x*b.y - a.y*b.x;
> det > 0 a cw b; det < 0 a ccw b;
> Это или что тебе нужно?
alexzzzz
> У тебя есть два вектора, на которые натягивается параллелограмм. Площадь
> параллелограмма равна модулю "векторного произведения в 2D" этих двух векторов;
> а по какую сторону от прямой он лежит (и точка А лежит), определится знаком
> этого произведения, плюс или минус.

#24
0:15, 2 июля 2020

Zefick
>   А по моему без этого постановка задачи вообще не имеет смысла. Что ты
> называешь стороной линии, если ты даже не знаешь её направления?

Если точка наблюдателя/отсчета в начале координат (0;0) - то как бы всё однозначно и направление линии не должно влиять на результат.
Но cross_product однозначно отвечает только на вопрос: точка - выше или ниже линии, чего не достаточно чтобы определить сторону точки относительно точки отсчета.

#25
0:38, 2 июля 2020

gamedevfor
> чего не достаточно чтобы определить сторону точки относительно точки отсчета.
Потому что cross_product считает относительно линии, а не относительно отсчета.
gamedevfor
> то как бы всё однозначно и направление линии не должно влиять на результат.
Ты года смотришь вперед для тебя всегда однозначно где лево, а где право, также и с линией.

#26
3:15, 2 июля 2020

foxes
> Потому что cross_product считает относительно линии, а не относительно отсчета.

Это всё равно что считать скорость автомобиля относительно того что находится внутри автомобиля.

#27
14:40, 2 июля 2020

gamedevfor
> Это всё равно что считать скорость автомобиля относительно того что находится внутри автомобиля.
В физике есть неинерциальные системы счисления. Некоторые задачи, как например падение 2 объектов, разумно считать в такой сс.

#28
(Правка: 14:53) 14:52, 2 июля 2020

samrrr
Вверх/Вниз относительно прямой это тоже некая система отсчета, хотя находясь в невесомости в черном холодном космосе вверх/вниз тоже понятие относительное.

#29
(Правка: 14:54) 14:53, 2 июля 2020

gamedevfor
> Это всё равно что считать скорость автомобиля относительно того что находится
> внутри автомобиля.
Как раз таки нет.
foxes
> Ты года смотришь вперед для тебя всегда однозначно где лево, а где право

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика