Dibuje siete círculos externos congruentes tangentes a un círculo interno y entre sí cíclicamente. Las operaciones de inversión en cada uno de estos ocho círculos generan un grupo de transformaciones de Möbius del plano. La imagen muestra las imágenes de los ocho círculos bajo acciones en este grupo.
Aquí hay un código de Haskell que dibuja el mismo conjunto de círculos. (Los siete círculos exteriores se omitieron de la imagen Wolfram | Alpha, probablemente por razones estéticas).
import Data.Complex import Diagrams.Prelude hiding (conjugate, magnitude) import Diagrams.Backend.Cairo.CmdLine -- Moebius False abcd = z ↦ (a*z + b)/(c*z + d) -- Moebius True abcd = z ↦ (a*conjugate z + b)/(c*conjugate z + d) data Moebius a = Moebius Bool (Complex a) (Complex a) (Complex a) (Complex a) deriving Show instance RealFloat a => Semigroup (Moebius a) where Moebius conj abcd Moebius conj' a' b' c' d' = Moebius (conj /= conj') (a*f a' + b*f c') (a*f b' + b*f d') (c*f a' + d*f c') (c*f b' + d*f d') where f = if conj then conjugate else id moebiusInverse (Moebius conj abcd) = Moebius conj (fd) (-fb) (-fc) (fa) where f = if conj then conjugate else id -- |z| = 1 ⇔ |(a*z + b)/(c*z + d) - center| = radius moebiusRadius (Moebius _ abcd) = magnitude $ (a*d - b*c)/(c*conjugate c - d*conjugate d) moebiusCenter (Moebius _ abcd) = (a*conjugate c - b*conjugate d)/(c*conjugate c - d*conjugate d) moebiusCircle f = circle (moebiusRadius f) # translate (r2 (x, y)) where x :+ y = moebiusCenter f i = Moebius False 1 0 0 1 shrink = Moebius False (1 - 1/(1 - sin (pi/7))) (0 :+ 1) 0 1 Moebius False 1 (0 :+ (-1)) 0 1 rot = Moebius False (cis (2*pi/7)) 0 0 1 invA = Moebius True 0 1 1 0 circles = i : scanr () shrink [rot | _ <- [1..6]] steps = [[i /= j | j <- [0..length circles - 1]] | i <- [0..length circles - 1]] draw f step n = mconcat [moebiusCircle (f g) # lw 0.005 (if n == 0 || moebiusRadius (f g) < 0.005 then mempty else draw (f g invA moebiusInverse g) step' (n - 1)) | (g, True, step') <- zip3 circles step steps] main = defaultMain $ draw i [True | _ <- circles] 4
Por cierto, si elimina el límite en el número de niveles de recursión, puede ver que los círculos pequeños comienzan a agruparse alrededor de este patrón de círculos mutuamente tangentes que son ortogonales a los círculos que dibujamos.
- En [matemáticas] (a + i) ^ 3 = 18 + 26i [/ matemáticas], ¿qué es a?
- ¿Alguien puede dar una prueba matemática de la dispersión de la luz a través de un prisma triangular?
- Cómo contar la cantidad de hojas en el árbol
- ¿Cuál es la diferencia entre comercio con matemáticas y sin matemáticas?
- Cómo entender la reflexión de los gráficos cuando se multiplica por [matemáticas] -1 [/ matemáticas] u otro número negativo