Проверьте, находится ли треугольник Reuleaux внутри / снаружи треугольника / пятиугольника / круга в C - PullRequest
0 голосов
/ 06 октября 2018

Вы можете проверить определение для треугольников Reuleaux здесь: https://en.wikipedia.org/wiki/Reuleaux_triangle

Я имел дело с геометрическими 2D-фигурами и делал проверки, настраивал тесты, чтобы увидеть, пересекает ли они другую или находится внутри другой фигуры (трогательно в комплекте).Я проверил окружности (определенные с типом Point как центр с свойствами double x, y в качестве координат, а также радиус double ), треугольники (стри вершины точка ), пока что пятиугольники (с пятью вершинами точка ), но я нашел интересную фигуру, которая называется треугольником Руло, которая образована тремя кругами, и край дуги имееттакое же расстояние до вершины на противоположной стороне.

Сначала я попытался увидеть, находятся ли вершины внутри фигуры, как если бы я использовал край как часть исходного большого круга, через который проходит вершина, в центре, или попробую сделать это, если я упомяну часть других фигур.выше пересекает его (круг более запутанный, чем фигуры с прямыми краями), но я застрял, потому что я не знаю, как ограничить угол или что-то еще, чтобы я мог сканировать только эту часть дуги, которая должна быть проверена, и это на самом делесложно настроить тест для обнаружения пересечения.

Я пытался найти расстояние от вершины до средней точки ребра и видеть его как шестиугольник, но в маленьком всегда есть местодуги разделы, которые не будут включены.Теперь я понятия не имею, как настроить новый метод для проверки того, будет ли этот странный круглый треугольник находиться внутри / снаружи / пересекается / касаться какой-либо из фигур (круг, треугольник, пятиугольник), которые я уже нашел для измерения позиционных отношений.

Так что вы думаете об этом?Может быть, помогут три больших круга, которые образуют этот треугольник?

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

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

Сначала найдите все точки событий, т. Е. Конечные точки дуг и сегментов, а также точки горизонтального касания, и отсортируйте их.по ординате разделить плоскость на «плиты».

enter image description here

Плиты определяют «криволинейные трапеции», ограниченные двумя горизонтальными сторонами (возможно, вырожденными) идве монотонные дуги или сегменты.

enter image description here

Если горизонтальные стороны перекрываются, вы можете быть уверены, что две фигуры перекрываются.Но даже если они этого не делают, между ними все еще возможно частичное совпадение.Для этого вам необходимо обнаружить пересечения сторон.Формулы пересечения для двух окружностей и / или отрезков не слишком сложны.Если вы найдете пересечения, вам нужно проверить, принадлежат ли они текущей плите, с помощью теста по ординатам.

enter image description here

0 голосов
/ 06 октября 2018

Найдите точки пересечения другой фигуры с окружностью вокруг угла A треугольника Reuleaux, а также вершины другой фигуры, которые лежат внутри окружности вокруг A (вместе это 4 черные точки на рисунке ниже),

Затем проверьте, лежат ли какие-либо из этих точек справа от линии AB и слева от линии AC (то есть красный сектор на изображении; 2 из 4 черных точек совпадают, поэтому фигуры пересекаются).

Reuleaux Triangle and Pentagon

Сделайте то же самое для кругов вокруг B и C. Это даст вам все точки пересечения треугольника Reuleaux и другой формы, ивсе вершины другой формы, которые находятся внутри треугольника Reuleaux.

Кроме того, вы должны проверить, лежат ли углы A, B и C внутри другой формы, если весь треугольник Reuleaux находится внутри другой формы.

Это должно быть возможно сделать путем объединения (частей) функций, которые у вас уже есть, для кругов и треугольников.

...