Phi= ArcTan[ Sqrt[4 * R^2 - d^2] /d ]
НТН!
Редактировать
Для двух различных радиусов:
Упрощая немного:
Phi= ArcTan[Sqrt[-d^4 -(R1^2 - R2^2)^2 + 2*d^2*(R1^2 + R2^2)]/(d^2 +R1^2 -R2^2)]
Редактировать
Если вы хотите, чтобы угол был обращен от другого центра окружности, просто замените R1 на R2 в последнем уравнении.
Вот пример реализации в Mathematica:
f[center1_, d_, R1_, R2_] := Module[{Phi, Theta},
Phi= ArcTan[Sqrt[-d^4-(R1^2-R2^2)^2 + 2*d^2*(R1^2 + R2^2)]/(d^2 +R1^2 -R2^2)]
Theta=ArcTan[Sqrt[-d^4-(R1^2-R2^2)^2 + 2*d^2*(R1^2 + R2^2)]/(d^2 -R1^2 +R2^2)]
{Circle[{center1, 0}, R1, {2 Pi - Phi, Phi}],
Circle[{d, 0}, R2, {Pi - Theta, -Pi + Theta}]}
];
Graphics[f[0, 1.5, 1, 1]]
Graphics[f[0, 1.5, 1, 3/4]]
И ...
ImageMultiply[
[email protected][#],
ImageResize[[email protected]
"http://i305.photobucket.com/albums/nn235/greeneyedgirlox/blondebabybunny.jpg",
[email protected]#]] &@
[email protected][f[0, 1.5, 1, 1], Background -> Black]
:)
Хммм хороший! Вы можете найти точки пересечения кругов, если вы знаете их центры и радиусы. Оттуда вы должны иметь возможность определить перекрывающиеся сегменты - меньший из двух сегментов на каждом круге, созданный точками пересечения ... это помогает? Я никогда не пробовал кодировать это, но я мог бы попробовать некоторые псевдокоды, возможно ... – FrustratedWithFormsDesigner 2010-12-16 18:10:01
У кругов одинаковые радиусы? – Ishtar 2010-12-16 18:11:33
Кружки изредка могут иметь одинаковый радиус, но обычно они этого не делают. – 2010-12-16 18:13:27