Как объединить перекрывающиеся круги?

Комплект Bauhaus Axivion свободен для академического использования, но не для коммерческого использования.

Это включает:

  • визуализация Программной архитектуры
  • правило Программной архитектуры, проверяющее
  • Интерфейсный анализ
  • обнаружение Цикла
  • Клон (копия) обнаружение
  • обнаружение Мертвого кода
  • Обнаружение нарушений стиля кода
  • полный набор А предопределенной метрики программного обеспечения
  • способность добавить Ваши собственные метрики и исследования...

Поддержки C / C++, C#, Java на различных платформах

21
задан Cobra_Fast 16 December 2010 в 18:06
поделиться

1 ответ

Phi= ArcTan[ Sqrt[4 * R^2 - d^2] /d ]

HTH!

Редактировать

Для двух разных радиусов:

Немного упрощая:

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]]

alt text

Graphics[f[0, 1.5, 1, 3/4]]  

alt text

И ...

ImageMultiply[
 Binarize@FillingTransform[#], 
 ImageResize[Import@
 "http://i305.photobucket.com/albums/nn235/greeneyedgirlox/blondebabybunny.jpg", 
   ImageDimensions@#]] &@
 Rasterize@Graphics[f[0, 1.5, 1, 1], Background -> Black]

alt text

:)

36
ответ дан 29 November 2019 в 20:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: