LINUX.ORG.RU

Математики ауууу. Проверка вхождения точки в отрезок

 , , ,


2

2

Есть отрезок A-vec2,B-vec2 с шириной width , есть координаты точки C-vec2. Надо узнать содержит ли отрезок эту точку.

Можно, вот так


bool ui_line_contains_point_point(vec2 start, vec2 end,float width, vec2 point)
{
    float m = (end.y - start.y) / (end.x - start.x);
    float b = start.y - m * start.x;
    return (fabs(point.y - (m*point.x+b)) < (width / 100)); // epsilon
}

A-vec2 и B-vec2 всегда положительны, B-vec2 может быть меньше A-vec2.

Всё хорошо, но вот если точка C-vec2 как бы с лева или с права от отрезка и явно не входит в отрезок то всё равно определяется что отрезок содержит точку, я чёт не могу допетрить что я делаю не так, туплю =)

Как можно по другому (желательно максимально быстро) рассчитать?

P.S. Попрошу без математических формул, я в них не разбираюсь, псевдокодом или просто советом

UDP: Решено Математики ауууу. Проверка вхождения точки в отрезок (комментарий)

UDP: Решено ещё раз :D Математики ауууу. Проверка вхождения точки в отрезок (комментарий)

★★★★★

Последнее исправление: LINUX-ORG-RU (всего исправлений: 4)

Иные взрослые хуже школьников... Вот люди сначала академий не кончают, а потом весь мир давится, но пишет на всяких питонах. Как так, а?

А топикстартеру двойка по гуглению - самому важному предмету для программиста. https://math.stackexchange.com/questions/190111/how-to-check-if-a-point-is-in...

Можно было найти и адаптировать для себя.

anonymous
()
Ответ на: комментарий от anonymous

А топикстартеру двойка по гуглению - самому важному предмету для программиста.

Судя по его созданным темам, он использует Лор в качестве гугля, stackoverflow, и пр.

anonymous
()
Ответ на: комментарий от anonymous

Вот люди сначала академий не кончают, а потом весь мир давится, но пишет на всяких питонах. Как так, а?

Язык общего назначения, служащий аналогом паскалю. Преподаётся так или иначе в каждом ВУЗе/колледже, является одним из лучших для прототипирования.

Что за бред ты вообще накалякал? Поставил бы двойку по гуглению и шёл с миром.

anonymous
()
Ответ на: комментарий от anonymous

https://math.stackexchange.com/questions/190111/how-to-check-if-a-point-is-in...

В топе какие-то сомнительные игрища с длинами и площадями вместо простой проверки того, что точка лежит справа (слева) при обходе по кругу.

quantum-troll ★★★★★
()
Ответ на: комментарий от quantum-troll

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

Есть ещё на русском (я так понял, автору надо чтоб по-русски) https://habr.com/en/post/148325/

anonymous
()
Ответ на: комментарий от quantum-troll

Да идите вы)

В геймдеве всё делается на векторах. Это быстро и просто.

Не забивайте человеку голову ерундой.

Bad_ptr ★★★★★
()
Ответ на: Да идите вы) от Bad_ptr

Проверка ориентации точки относительно прямой тоже делается на векторах.

quantum-troll ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.