Есть 8 областей, определенных 3-круговой диаграммой Венна. Если мы определим набор A как включающий двоичные числа от 0 до 7, для которых установлен 1-битный набор, B как для наборов с 2-битным набором, а C и набор с 4-битным набором, мы получим
A = {1, 3, 5, 7}; B = {2, 3, 6, 7}; C = {4, 5, 6, 7}
Каждое из этих чисел определило область на диаграмме, где 0
представляет область вне окружностей и внутри универсального набора: т.е. A' ∩ B' ∩ C'
.
Вы знаете, как решить задачу с двумя кругами. Поэтому решите это для A и B (используя размеры A
, B
и A ∩ B
), B и C, а также A и C. Это дает вам расстояния между центрами круга и размерами круга. Используйте три расстояния, чтобы нарисовать треугольник для этих круговых центров, затем нарисуйте круги вокруг этих центров. Если из-за этого внешняя область 0
имеет неправильный размер, вы можете уменьшить или развернуть всю настройку с 3 кругами, чтобы получить это право.
Это делает все регионы правильными - за исключением региона 7
, пересечения всех трех множеств. Этот размер будет установлен от всех остальных - у вас нет выбора здесь. Поэтому он, вероятно, не будет иметь желаемый вами размер. Вам нужно будет поэкспериментировать, чтобы убедиться, что размер этого региона обычно достаточно близок к тому, что вы хотите. Мое краткое исследование подразумевает, что на диаграмме нет возможности использовать круги и всегда получать размеры всех восьми областей. Если вместо этого вы используете эллипсы или другие более общие фигуры, это должно быть возможно, но вам, кажется, нужны круги.
Обратите внимание, что если вы правильно решите задачу с 2 кругами, ситуация с непересекающимися кругами и подмножествами окружностей будет автоматически обработана. Например, если A и B не пересекаются, то области 3 и 7 будут пустыми, и ваше решение сделает два круга не перекрывающимися. Они, вероятно, коснутся, если вы используете очевидный алгоритм со своего сайта, на который ведут ссылки, но без наложения. Точно так же, если один набор является подмножеством другого, один круг будет внутри другого, хотя они, вероятно, коснутся. Если вы не хотите касания, алгоритм, позволяющий избежать этого, должен быть легким, если, конечно, у вас нет ситуации, когда два из трех ваших подходов равны.