У меня есть 4 точки, которые образуют четырехугольник. Линии не могут пересекаться или что-то в этом роде, это должен быть квадрат, прямоугольник, ромб, параллелограмм и т. Д.Поиск в какой области содержит точку на основе координат
Линии, соединяющие их, разбивают поле на 9 областей. С квадратом он будет выглядеть как доска с тик-таковым носком (#), но с другими формами линии будут под углами.
Точка случайно попадает в это поле из 9 областей. Я знаю координаты случайной точки, а также координаты четырех углов четырехугольника.
Можно ли найти какое-либо поле, которое содержит точку без использования уравнений линий?
Я в основном ищет что-то вроде
if(p.x > q1.x && p.x < q4.x && p.y < q3.y) {
//It's in the top left region
}
etc
Я имею в виду, что это не представляется возможным при использовании наклонных линий (а не квадрат/прямоугольник) без решения уравнений линии. Но я думал, что сначала займу его математиками. БЛАГОДАРЯ!
Если вы не хотите проверять, является ли 'da-cb' положительным или отрицательным, тогда вы всегда можете сказать «if (dx-cy <0 && dx-cy 0 && dx-cy> da-cb) {правый столбец} else {средний столбец} 'и аналогичная вещь, чтобы определить, в какой строке она находится. Обратите внимание, что если' (a, b) 'не является" справа "из' (0,0) 'и' (c, d) 'не является «выше» '(0,0)', термины «верхний», «нижний», «левый», «правый» начинают смешиваться, потому что ваша доска tic-tac-toe перевернута и/или повернута. все еще говорят, что регионы обособлены просто отлично, но имена t его регионы больше не подходят. –
Спасибо, это здорово. Что вы думаете о комментарии, поднимающем трапециевидные регионы? Как я уже сказал, я хочу сопоставить внешнюю точку с лучшими (я думаю, это самая близкая *) точка на краю фигуры. Из-за трапецоидов я не думаю, что этот подход с тик-таковым будет работать. Наверное, я проверяю, есть ли это трапеция, а затем какое-то другое поведение ... Лучший способ сделать это? Я думаю, что идея «ближайшей точки на линии» - это, вероятно, путь, поэтому я немного подумаю об этом. – cksubs
Для нахождения ближайшей точки *, которая находится на краю фигуры, я не вижу, как вам помогает область области платы tic-tac-toe. Единственный метод, о котором я могу сейчас думать, - создать кандидата для каждого края формы (ближайшая точка на конкретном ребре - либо проекция точки на сегмент, либо одна из двух конечных точек), а затем проверьте, какой из четырех кандидатов ближе всего. Если вы действительно хотите, чтобы иметь возможность подумать об этой проблеме, я рекомендую узнать о точечных продуктах (http://en.wikipedia.org/wiki/Dot_product), особенно скалярную проекцию. –