Проверьте, находятся ли три круга внутри треугольника

Я подумал немного о написании программы, которая говорит мне, что три круга с заданными диаметрами могут вписываться внутри треугольника с заданными сторонами длины без перекрытия (прикосновение - это нормально) друг к другу.

Как подумать об этом?

Ответ 1

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

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

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

a triangle with a big green circle in the top corner, a medium red circle in the bottom right corner, and a small blue circle in the bottom left corner

Существует шесть способов упорядочивания кругов, и для каждой компоновки достаточно проверить, будут ли круги попадать попарно:

circle with centre O₁ and radius r₁ in the bottom left corner of a triangle (marked A with angle α) and circle with centre O₂ and radius r₂ in the bottom right (marked B with angle β)

Расстояние AS₁ равно r₁/tan (½α), расстояние S₂B равно r₂/tan (½β), а расстояние S₁S₂ равно √ ((r₁ + r₂) ² - (r₁ - r₂) ²) = 2√r₁r₂

Окружности соответствуют, если AS₁ + S₁S₂ + S₂B ≤ AB.


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

a thin triangle with a big green circle in the top left corner, a medium red circle in the right corner, and a blue circle between them and the top edge

Выяснение, будет ли это соответствовать, немного сложнее:

the thin triangle marked up: T is where the altitude from centre of the big circle meets the left edge, and S₁ to S₃ are where altitudes from the centres of the three circles meet the bottom edge

Чтобы найти длину AS₁, мы должны обойти треугольник из угла C через точку T. Я оставлю детали этого в виде упражнения.

Есть восемнадцать способов упорядочить круги в этой конфигурации.


Есть ли конфигурация (3)? Я посмотрел, но не мог найти тот, который нельзя было превратить в одного из двух, которые я дал. Например, если все три круга касаются одной и той же стороны, всегда есть место, чтобы поменять средний круг на противоположную сторону, получив конфигурацию (2). Однако перечисление геометрических конфигураций всегда сложно, и я мог легко пропустить его.

Ответ 2

Просто догадайтесь: ваша проблема может быть связана с проблемой окружений Appolonius.

Я наткнулся на него, пытаясь поместить рекурсивно 3 круга в 4-м, без каких-либо пересечений для фрактальной анимации, поэтому стоит попробовать.

Вы найдете это подробно объясненным во Вулграме (эта проблема была решена только в 1968 году): http://mathworld.wolfram.com/ApolloniusProblem.html

Ответ 3

это кажется сложной и интересной проблемой. Благодаря решению проблемы мрамора (связанной с Malfatti Circles) в Лос-Анджелесе и Залгаллере в 1994 году, вы могли бы утомительно извлечь необходимое условие существования конфигурации трех неперекрывающихся окружностей с заданными радиусами внутри треугольника с заданными боковыми длинами. Если вы можете поместить их в треугольник, сумма их площадей будет максимально возможной для трех треугольников внутри круга. Проблема "Мрамор" - это проблема определения максимальной площади трех неперекрывающихся окружностей внутри заданного треугольника. Прямо сейчас, я не вижу, что этого также достаточно.

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

Некоторые из лучших математиков мира регулярно участвуют в родном браке stackoverflow, mathoverflow.org, поэтому вы можете попробовать опубликовать эту проблему там.

Спасибо за публикацию этого.

Ответ 4

Я думаю, что достаточно попробовать все 6 возможных перестановок (A1 B2 C3, A2 B1 C3, A1 B3 C2, A3 B1 C2, A2 B3 C1, A3 B2 C1). Если круг не касается двух ребер треугольника, то его размещение в некотором смысле субоптимально, и вы можете сделать больше места для двух других, скользя в угол. Если можно наклеить три круга в треугольнике, не перекрывая их, возможно, возможно сместить их в углы (для случая, когда все они зажаты по краям, поднимите их вместе и поверните на 60 градусов). Конечно, это не строгое доказательство, но я уверен, что это работает. Более того, я полагаю, что решение всегда будет состоять в том, чтобы разместить самые большие круги под самыми широкими углами, потому что те, которые могут потенциально занимать самое центральное пространство треугольника.