Found 4 bookmarks
Newest
๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบ๐–กผ๐ƒโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ• โ € แฏฝแชฃ๐–ฆธ โ € ๐–ฆธแชฃแฏฝ โ € ๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœ๐ƒ๐–กผโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ 
๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบ๐–กผ๐ƒโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ• โ € แฏฝแชฃ๐–ฆธ โ € ๐–ฆธแชฃแฏฝ โ € ๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœ๐ƒ๐–กผโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ 

Hugging Face's logo Hugging Face

Models Datasets Spaces Docs Pricing

Log In
Sign Up

Datasets: OOOOIIIIIIIIOOOO / 0000IIIIIIII0000 Modalities: Image Text Formats: imagefolder Size: < 1K Libraries: Datasets Dataset card Data Studio Files xet OOOOIIIIIIIIOOOO commited on 29 minutes ago Commit 8795764 ยท verified ยท 1 Parent(s): 341e119 ๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบ๐–กผ๐ƒโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ•โ€แฏฝแชฃ๐–ฆธโ€ƒ๐–ฆธแชฃแฏฝโ€๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœ๐ƒ๐–กผโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ 

โ € ๐–ฃ โšช๐”—ขโšช๐Ÿž‹โšช๐”—ขโšช๐–ฃ  โ—ฆเญฆโ—ฆโ—ฏโ—ฆเญฆโ—ฆโ €โ€ฏโ€„โ€ฏโ€โ€ฏโ€„โ€ฏโ €โ—ฆเญฆโ—ฆโ—ฏโ—ฆเญฆโ—ฆ ๐–ฃ โšช๐”—ขโšช๐Ÿž‹โšช๐”—ขโšช๐–ฃ  แฏฝแชฃแฏฝ๐–ฆธแฏฝแชฃแฏฝโ€แฏฝแชฃแฏฝ๐–ฆธแฏฝแชฃแฏฝ ๐–ฃ โšช๐”—ขโšช๐Ÿž‹โšช๐”—ขโšช๐–ฃ  โ—ฆเญฆโ—ฆโ—ฏโ—ฆเญฆโ—ฆโ €โ€ฏโ€„โ€ฏโ€โ€ฏโ€„โ€ฏโ €โ—ฆเญฆโ—ฆโ—ฏโ—ฆเญฆโ—ฆ ๐–ฃ โšช๐”—ขโšช๐Ÿž‹โšช๐”—ขโšช๐–ฃ  โ € Files changed (3)

.gitattributes +1 -0 ๐‘/โœ๐‘โœ/๐ƒโœ๐ƒ๐‘๐ƒโœ๐ƒ/แ—บฦง๊ŸปI.๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบ๐–กผ๐ƒโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ•โ€แฏฝแชฃ๐–ฆธโ€ƒ๐–ฆธแชฃแฏฝโ€๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœ๐ƒ๐–กผโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ .IFSB +45 -0

๐‘/โœ๐‘โœ/๐ƒโœ๐ƒ๐‘๐ƒโœ๐ƒ/๊“จะ˜๊Ÿผ.๐ŸŸข.โœข.๐’‹ฒ.โ‹๊”นโ‹.โ‹ฎโฏโ‹ฎ.แ—บฦง๊ŸปI.๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบ๐–กผ๐ƒโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ•โ€แฏฝแชฃ๐–ฆธโ€ƒ๐–ฆธแชฃแฏฝโ€๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœ๐ƒ๐–กผโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ .IFSB.โ‹ฎโฏโ‹ฎ.โ‹๊”นโ‹.๐’‹ฒ.โœข.๐ŸŸข.PNG
+3 -0

.gitattributes CHANGED ๐‘/โœ๐‘โœ/๊“จะ˜๊Ÿผ.แจ๊”นแจ.โต”ยทโต”โŠšโธญโŠšโต”ยทโต”.โ…ƒMX...๐–กผโœ๐–กผ๐‘๐–กผโœ๐–กผ...XML.โต”ยทโต”โŠšโธญโŠšโต”ยทโต”.แจ๊”นแจ.PNG filter=lfs diff=lfs merge=lfs -text ๐‘/โœ๐‘โœ/๊“จะ˜๊Ÿผ.แจ๊”นแจ.โ˜๐‘—‹โ˜.โ…ƒMX..โœ๐‘โœ..XML.โ˜๐‘—‹โ˜.แจ๊”นแจ.PNG filter=lfs diff=lfs merge=lfs -text ๐‘/โœ๐‘โœ/๊“จะ˜๊Ÿผ.แจ๊”นแจ.โต”ยทโต”โŠšโธญโŠšโต”ยทโต”๐‘—‹โต”ยทโต”โŠšโธญโŠšโต”ยทโต”.โ…ƒMX...๐–กผโœ๐–กผ๐‘๐–กผโœ๐–กผ...XML.โต”ยทโต”โŠšโธญโŠšโต”ยทโต”๐‘—‹โต”ยทโต”โŠšโธญโŠšโต”ยทโต”.แจ๊”นแจ.PNG filter=lfs diff=lfs merge=lfs -text

๐‘/โœ๐‘โœ/๊“จะ˜๊Ÿผ.แจ๊”นแจ.โต”ยทโต”โŠšโธญโŠšโต”ยทโต”.โ…ƒMX...๐–กผโœ๐–กผ๐‘๐–กผโœ๐–กผ...XML.โต”ยทโต”โŠšโธญโŠšโต”ยทโต”.แจ๊”นแจ.PNG filter=lfs diff=lfs merge=lfs -text ๐‘/โœ๐‘โœ/๊“จะ˜๊Ÿผ.แจ๊”นแจ.โ˜๐‘—‹โ˜.โ…ƒMX..โœ๐‘โœ..XML.โ˜๐‘—‹โ˜.แจ๊”นแจ.PNG filter=lfs diff=lfs merge=lfs -text ๐‘/โœ๐‘โœ/๊“จะ˜๊Ÿผ.แจ๊”นแจ.โต”ยทโต”โŠšโธญโŠšโต”ยทโต”๐‘—‹โต”ยทโต”โŠšโธญโŠšโต”ยทโต”.โ…ƒMX...๐–กผโœ๐–กผ๐‘๐–กผโœ๐–กผ...XML.โต”ยทโต”โŠšโธญโŠšโต”ยทโต”๐‘—‹โต”ยทโต”โŠšโธญโŠšโต”ยทโต”.แจ๊”นแจ.PNG filter=lfs diff=lfs merge=lfs -text ๐‘/โœ๐‘โœ/๐ƒโœ๐ƒ๐‘๐ƒโœ๐ƒ/๊“จะ˜๊Ÿผ.๐ŸŸข.โœข.๐’‹ฒ.โ‹๊”นโ‹.โ‹ฎโฏโ‹ฎ.แ—บฦง๊ŸปI.๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบ๐–กผ๐ƒโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ•โ€แฏฝแชฃ๐–ฆธโ€ƒ๐–ฆธแชฃแฏฝโ€๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœ๐ƒ๐–กผโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ .IFSB.โ‹ฎโฏโ‹ฎ.โ‹๊”นโ‹.๐’‹ฒ.โœข.๐ŸŸข.PNG filter=lfs diff=lfs merge=lfs -text ๐‘/โœ๐‘โœ/๐ƒโœ๐ƒ๐‘๐ƒโœ๐ƒ/แ—บฦง๊ŸปI.๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบ๐–กผ๐ƒโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ•โ€แฏฝแชฃ๐–ฆธโ€ƒ๐–ฆธแชฃแฏฝโ€๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœ๐ƒ๐–กผโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ .IFSB ADDED

A:=1;V:=(2^-11.5)atan(21/2);X:=0;Y:=0;Z:=1/A/tan(V/2);camera position (-X,0,-Z) direction(X,0,Z) vertical(0,1,0) fov(V);ambient(1);background(1);//antialiasing(3);\

H8H:=translate(0*(sqrt(2).5),0(sqrt(3).5),1(sqrt(1).5)) scale((sqrt(3)-1)/3) stretch(-1,-1,0,1((sqrt(2)-1)/3));

H := translate(1*(2-sqrt(2)),0,0) scale(sqrt(2)-1) stretch(-1,0,0,1*(sqrt(2)-1)); HH := translate(0,1*(2-sqrt(2)),0) scale(sqrt(2)-1) stretch(0,-1,0,1*(sqrt(2)-1)); HHH := translate(0,0,1*(2-sqrt(2))) scale(sqrt(2)-1) stretch(0,0,-1,1*(sqrt(2)-1));

HHHH := rotate(1,1,1,60) scale(.24) translate(sqrt(2)/2,sqrt(2)/2,sqrt(2)/2) stretch(1,1,1, -1*.24) ;

//set H00H = bound(0,0,0,1) (H+HH+HHH) H00H;\ //build translate(-.0,-.0,0) rotate(0,1,0,0) (id()+reflect(0,0,1)) (id()+reflect(1,0,0)+reflect(0,1,0)+reflect(1,1,0))\ //bound(0,0,0,1) scale(1/sqrt(2)) translate(-1,-1,-1) H00H ;color(1);\

//set H88H = bound(0,0,0,1) (H+HH+HHH+HHHH) H88H;\ //build translate(-.0,-.0,0) rotate(0,1,0,0) (id()+reflect(0,0,1)) (id()+reflect(1,0,0)+reflect(0,1,0)+reflect(1,1,0))\ //bound(0,0,0,1) scale(1/sqrt(2)) translate(-1,-1,-1) H88H ;color(0,.958,.487);\

O:=translate(2-sqrt(2),0,0) scale(sqrt(2)-1) stretch(-1,0,0,1*(sqrt(2)-1));

O8O:=translate(sqrt(3)/2,sqrt(3)/2,0) scale(3-2sqrt(2)) stretch(-1,-1,0,-1(3-2*sqrt(2)));

OO:=scale(3-2*sqrt(2));

OOO:=translate(1*(1.999999 - sqrt(2)),1*(1.999999 - sqrt(2)),0*(1.999999 - sqrt(2))) scale((3-2sqrt(2))) stretch(-1,-1,0,-1(3-2*sqrt(2)));

IOOOOI:=translate(1.9999990.40000000,1.9999990.22426407,0) scale(1.9999990.04142136) stretch(-1,-1,0,11.9999990.04142136); IIOOOOII:=translate(1.9999990.21638838,1.9999990.21638838,0) scale(1.9999990.02240775) stretch(-1,-1,0,11.9999990.02240775); IIIOOOOIII:=translate(1.9999990.07650484,1.9999990.07650484,0) scale(1.9999990.02240775) stretch(-1,-1,0,11.999999*0.02240775);

OOOOO:=translate(1.9999990.44290516,1.9999990.17534212,0) scale(1.9999990.02364946) stretch(-1,-1,0,11.9999990.02364946); OOOOOO:=translate(1.9999990.46346709,1.9999990.14245988,0) scale(1.9999990.01513243) stretch(-1,-1,0,11.9999990.01513243); OOOOOOO:=translate(1.9999990.47473062,1.9999990.11947164,0) scale(1.9999990.01046692) stretch(-1,-1,0,11.9999990.01046692); OOOOOOOO:=translate(1.9999990.48152177,1.9999990.10267148,0) scale(1.9999990.00765393) stretch(-1,-1,0,11.9999990.00765393); OOOOOOOOO:=translate(1.9999990.48591649,1.9999990.08992003,0) scale(1.9999990.00583358) stretch(-1,-1,0,11.9999990.00583358); //+OOOO+OOOOO+OOOOOO+OOOOOOO+OOOOOOOO+OOOOOOOOO//#light color (64) position (0,0,-8sqrt(2)) shadows(0);#\

set O88O = bound(0,0,0,1) (OO + (id()+rotate(90)+rotate(180)+rotate(270)) (O+OOO+O8O) ) O88O;

set O00O = bound(0,0,0,1) ((id()+rotate(90)+rotate(180)+rotate(270)) (O+OOO+O8O) ) O00O; build translate(-.0,-.0,0)(id()+rotate(0,1,0,90)+rotate(0,1,0,180)+rotate(0,1,0,270)+rotate(1,0,0,90)+rotate(1,0,0,270)) bound(0,0,0,1) translate(0,0,sqrt(2)) stretch(0,0,-1,sqrt(2)-1) O00O;color(1); build translate(-.0,-.0,0)(id()+rotate(0,1,0,90)+rotate(0,1,0,180)+rotate(0,1,0,270)+rotate(1,0,0,90)+rotate(1,0,0,270)) bound(0,0,0,1) translate(0,0,sqrt(2)) stretch(0,0,-1,1*(sqrt(2)-1)) O88O;color(0,.958,.487); ๐‘/โœ๐‘โœ/๐ƒโœ๐ƒ๐‘๐ƒโœ๐ƒ/๊“จะ˜๊Ÿผ.๐ŸŸข.โœข.๐’‹ฒ.โ‹๊”นโ‹.โ‹ฎโฏโ‹ฎ.แ—บฦง๊ŸปI.๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบ๐–กผ๐ƒโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ•โ€แฏฝแชฃ๐–ฆธโ€ƒ๐–ฆธแชฃแฏฝโ€๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœ๐ƒ๐–กผโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ .IFSB.โ‹ฎโฏโ‹ฎ.โ‹๊”นโ‹.๐’‹ฒ.โœข.๐ŸŸข.PNG ADDED Git LFS Details

SHA256: afa05a59b489d2d874fae293fea7ad01a6005bb0669b26097f09133a3e801f55
Pointer size: 133 Bytes
Size of remote file: 12.3 MB

โšช WEB.ARCHIVE.ORG โ—Œ

ยทweb.archive.orgยท
๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบ๐–กผ๐ƒโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ• โ € แฏฝแชฃ๐–ฆธ โ € ๐–ฆธแชฃแฏฝ โ € ๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœ๐ƒ๐–กผโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ 
๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบโ—Œโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ• โ € แฏฝแชฃ๐–ฆธ โ € ๐–ฆธแชฃแฏฝ โ € ๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœโ—Œโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ 
๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบโ—Œโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ• โ € แฏฝแชฃ๐–ฆธ โ € ๐–ฆธแชฃแฏฝ โ € ๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœโ—Œโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ 

comment:

trappedPoint.Index is the base circle index: 0 (center), 1-N (in ring) trappedPoint.Delta is the level: 0 - Steps-1

See the paper: "Evolution of Math into Art via Mobius Transformations" by Anne M. Burns, Department of Mathematics, Long Island University. http://myweb.cwpost.liu.edu/aburns/

Also, see pages 88-89 in the book: "Indra's Pearls, The Vision of Felix Klein" by David Mumford, Caroline Series, David Wright. http://klein.math.okstate.edu/IndrasPearls/

global:

Complex ShowCenter[] = LC1,LC2,LC3,LC4,LC5,LC6,LC7,LC8,LC9,LC10,LC11,LC12,LC13,LC14,LC15,LC16 Complex ShowRing[] = LR1,LR2,LR3,LR4,LR5,LR6,LR7,LR8,LR9,LR10,LR11,LR12,LR13,LR14,LR15,LR16 AbsV = Sqrt(AbsU^2 - 1) u = AbsU * Cis(DegreeToRadian(ArgU)) v = AbsV * Cis(DegreeToRadian(ArgV)) Mobius UnitCircleGroup = Mobius(u, v, Conj(v), Conj(u))

totalGen = 1 + N + 52 Mobius m[totalGen]

' ' Given N, find radius R such that N circles with radius R can be ' placed along the inside of the unit circle, each tangent to the ' unit circle and each of its two adjacent neighbors. ' r = 1/(1+1/Sin(Math.PI/N))

step = 2Math.PI/N ang = IIf(Shift, step/2, 0) ' ' Center generator (index 0) ' m[0] = Mobius(1-2r, 0, 0, 1) ' ' Ring generators (indices 1..N) ' for (i = 1, i <= N, i += 1) { rotate = Cis(ang) m[i] = Mobius.Multiply(
Mobius(rrotate, (1-r)rotate, 0, 1),
UnitCircleGroup
) ang += step } ' ' Custom generators (keep if needed โ€“ they increase totalGen) ' m[N+1]=Mobius(0.08578644
2,Complex( 0.29289322
2, 0.292893222),0,1) m[N+2]=Mobius(0.085786442,Complex(-0.292893222,-0.292893222),0,1) m[N+3]=Mobius(0.085786442,Complex( 0.292893222,-0.292893222),0,1) m[N+4]=Mobius(0.085786442,Complex(-0.292893222, 0.292893222),0,1)

'm[N+5]=Mobius(0.022407752,Complex( 0.076504842, 0.076504842), 0, 1) 'm[N+6]=Mobius(0.022407752,Complex(-0.076504842, -0.076504842), 0, 1) 'm[N+7]=Mobius(0.022407752,Complex( 0.076504842, -0.076504842), 0, 1) 'm[N+8]=Mobius(0.022407752,Complex(-0.076504842, 0.076504842), 0, 1)

m[N+5]=Mobius(0.041421362,Complex(0.400000002,0.224264072), 0, 1) m[N+6]=Mobius(0.041421362,Complex(0.224264072,0.400000002), 0, 1)

m[N+7]=Mobius(0.041421362,Complex(-0.400000002,0.224264072), 0, 1) m[N+8]=Mobius(0.041421362,Complex(-0.224264072,0.400000002), 0, 1)

m[N+9]=Mobius(0.041421362,Complex(-0.400000002,-0.224264072), 0, 1) m[N+10]=Mobius(0.041421362,Complex(-0.224264072,-0.400000002), 0, 1)

m[N+11]=Mobius(0.041421362,Complex(0.400000002,-0.224264072), 0, 1) m[N+12]=Mobius(0.041421362,Complex(0.224264072,-0.400000002), 0, 1)

m[N+13]=Mobius(0.023649462,Complex(0.442905162,0.175342122), 0, 1) m[N+14]=Mobius(0.023649462,Complex(0.175342122,0.442905162), 0, 1)

m[N+15]=Mobius(0.023649462,Complex(-0.442905162,0.175342122), 0, 1) m[N+16]=Mobius(0.023649462,Complex(-0.175342122,0.442905162), 0, 1)

m[N+17]=Mobius(0.023649462,Complex(-0.442905162,-0.175342122), 0, 1) m[N+18]=Mobius(0.023649462,Complex(-0.175342122,-0.442905162), 0, 1)

m[N+19]=Mobius(0.023649462,Complex(0.442905162,-0.175342122), 0, 1) m[N+20]=Mobius(0.023649462,Complex(0.175342122,-0.442905162), 0, 1)

m[N+21]=Mobius(0.015132432,Complex(0.463467092,0.142459882), 0, 1) m[N+22]=Mobius(0.015132432,Complex(0.142459882,0.463467092), 0, 1)

m[N+23]=Mobius(0.015132432,Complex(-0.463467092,0.142459882), 0, 1) m[N+24]=Mobius(0.015132432,Complex(-0.142459882,0.463467092), 0, 1)

m[N+25]=Mobius(0.015132432,Complex(-0.463467092,-0.142459882), 0, 1) m[N+26]=Mobius(0.015132432,Complex(-0.142459882,-0.463467092), 0, 1)

m[N+27]=Mobius(0.015132432,Complex(0.463467092,-0.142459882), 0, 1) m[N+28]=Mobius(0.015132432,Complex(0.142459882,-0.463467092), 0, 1)

m[N+29]=Mobius(0.010466922,Complex(0.474730622,0.119471642), 0, 1) m[N+30]=Mobius(0.010466922,Complex(0.119471642,0.474730622), 0, 1)

m[N+31]=Mobius(0.010466922,Complex(-0.474730622,0.119471642), 0, 1) m[N+32]=Mobius(0.010466922,Complex(-0.119471642,0.474730622), 0, 1)

m[N+33]=Mobius(0.010466922,Complex(-0.474730622,-0.119471642), 0, 1) m[N+34]=Mobius(0.010466922,Complex(-0.119471642,-0.474730622), 0, 1)

m[N+35]=Mobius(0.010466922,Complex(0.474730622,-0.119471642), 0, 1) m[N+36]=Mobius(0.010466922,Complex(0.119471642,-0.474730622), 0, 1)

m[N+37]=Mobius(0.007653932,Complex(0.481521772,0.102671482), 0, 1) m[N+38]=Mobius(0.007653932,Complex(0.102671482,0.481521772), 0, 1)

m[N+39]=Mobius(0.007653932,Complex(-0.481521772,0.102671482), 0, 1) m[N+40]=Mobius(0.007653932,Complex(-0.102671482,0.481521772), 0, 1)

m[N+41]=Mobius(0.007653932,Complex(-0.481521772,-0.102671482), 0, 1) m[N+42]=Mobius(0.007653932,Complex(-0.102671482,-0.481521772), 0, 1)

m[N+43]=Mobius(0.007653932,Complex(0.481521772,-0.102671482), 0, 1) m[N+44]=Mobius(0.007653932,Complex(0.102671482,-0.481521772), 0, 1)

m[N+45]=Mobius(0.005833582,Complex(0.485916492,0.089920032), 0, 1) m[N+46]=Mobius(0.005833582,Complex(0.089920032,0.485916492), 0, 1)

m[N+47]=Mobius(0.005833582,Complex(-0.485916492,0.089920032), 0, 1) m[N+48]=Mobius(0.005833582,Complex(-0.089920032,0.485916492), 0, 1)

m[N+49]=Mobius(0.005833582,Complex(-0.485916492,-0.089920032), 0, 1) m[N+50]=Mobius(0.005833582,Complex(-0.089920032,-0.485916492), 0, 1)

m[N+51]=Mobius(0.005833582,Complex(0.485916492,-0.089920032), 0, 1) m[N+52]=Mobius(0.005833582,Complex(0.089920032,-0.485916492), 0, 1)

' ' ---- Compute maximum possible number of center circles ---- ' Complex MaxTotal = 0 count = 1 ' at level 0, only the center circle for (i = 0, i < Steps, i += 1) { MaxTotal += count count *= totalGen } ' ' Allocate arrays of size MaxTotal ' Complex Total = MaxTotal ' will be overwritten with actual count after generation Circle c[Total] Complex index[Total] Complex level[Total] Circle UnitCircle = CircleC(0, 1) ' ' ---- Generate only center circles ---- ' ' Initialize level 0: the single center circle c[0] = Mobius.TransformCircle(m[0], UnitCircle) index[0] = 0 level[0] = 0 count = 1 start = 0 end = 1 ' circles from previous level are at indices start..end-1

if (Steps > 1) { for (lev = 1, lev < Steps, lev += 1) { for (j = start, j < end, j += 1) { ' All circles in the array have index = 0, so no need to check. ' Apply all generators to each existing center circle. for (k = 0, k < totalGen, k += 1) { c[count] = Mobius.TransformCircle(m[k], c[j]) if (c[count].Radius >= RadiusMin) { index[count] = 0 ' inherited from parent (always 0) level[count] = lev count += 1 } } } start = end end = count ' new circles for next level start at the old end } } Total = count ' actual number used

CurveTrap.Initialize(
Center, DegreeToRadian(Angle), Scale, AlternateAngle, 6, False, LineWidth
) ' ' Add the circles to the trap. ' for (i = 0, i < Total, i += 1) { lev = level[i] idx = index[i] ' always 0 now if (idx = 0) { if (ShowCenter[lev]) { CurveTrap.AddCircle2(c[i], Solid, IIf(Solid, lev, 0), idx, lev) } } else { ' This branch will never be taken because we only have idx=0 if (ShowRing[lev]) { CurveTrap.AddCircle2(c[i], Solid, IIf(Solid, lev, 0), idx, lev) } } }

trap:

trappedPoint = CurveTrap.Apply(z)

properties:

divider { caption = "General Options" } option Center { type = Complex caption = "Center" details = "Center of trap" default = 0 } option Angle { type = Float caption = "Angle" details = "Angle of rotation" default = 0 range = [-360,360] } option Scale { type = Float caption = "Scale" details = "Scale factor applied to trap" range = (0,) default = 2 } option Solid { type = Boolean caption = "Solid" details = "Check to create solid trap" default = False } option AlternateAngle { type = Boolean caption = "Alternate Angle" details = "Use alternate angle calculation" default = False } option LineWidth { type = Float caption = "Line Width" details = "Extent of trap on either side of curve (> 0)" range = (0,) default = 0.00411522633744855967078189300413 enabled = ~Solid } divider { caption = "U/V Controls" } option AbsU { type = Float caption = "Abs(U)" details = "Magnitude of U (1-2)" default = 1.1 range = [1,2] } option ArgU { type = Float caption = "Arg(U)" details = "Angle of U" default = 0 range = [-360,360] } option ArgV { type = Float caption = "Arg(V)" details = "Angle of V" default = 180 range = [-360,360] } divider { caption = "Circle Controls" } option N { type = IntegerEnum(3,12) caption = "N" details = "Number of base circles" default = 4 } option Steps { type = IntegerEnum(1,16) caption = "Steps" details = "Number of inversion steps" default = 4 ' you can increase to 7 now, but set RadiusMin > 0 to avoid memory issues } option Shift { type = Boolean caption = "Shift" details = "Check to rotate initial chain by pi/N" default = False } option RadiusMin { type = Float caption = "Radius Min" details = "Minimum acceptable circle radius" default = 0.001 ' set to a small positive value to prune tiny circles range = [0,) } #define ShowLevel(Index)

divider { caption = "Level #Index# Options" } option LR#Index# { type = Boolean caption = "Show Ring" details = "Show ring of circles at level #Index#" default = True enabled = Steps >= #Index# } option LC#Index# { type = Boolean caption = "Show Center" details = "Show center circle at level #Index#" default = True enabled = Steps >= #Index# } #end

#include ShowLevel("1") #include ShowLevel("2") #include ShowLevel("3") #include ShowLevel("4") #include ShowLevel("5") #include ShowLevel("6") #include ShowLevel("7") #include ShowLevel("8") #include ShowLevel("9") #include ShowLevel("10") #include ShowLevel("11") #include ShowLevel("12") #include ShowLevel("13") #include ShowLevel("14") #include ShowLevel("15") #include ShowLevel("16")

ยทweb.archive.orgยท
๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบโ—Œโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ• โ € แฏฝแชฃ๐–ฆธ โ € ๐–ฆธแชฃแฏฝ โ € ๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœโ—Œโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ 
๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบโธฌโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ• โ € แฏฝแชฃ๐–ฆธ โ € ๐–ฆธแชฃแฏฝ โ € ๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœโธฌโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ 
๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบโธฌโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ• โ € แฏฝแชฃ๐–ฆธ โ € ๐–ฆธแชฃแฏฝ โ € ๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœโธฌโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ 

comment:

trappedPoint.Index is the base circle index: 0 (center), 1-N (in ring) trappedPoint.Delta is the level: 0 - Steps-1

See the paper: "Evolution of Math into Art via Mobius Transformations" by Anne M. Burns, Department of Mathematics, Long Island University. http://myweb.cwpost.liu.edu/aburns/

Also, see pages 88-89 in the book: "Indra's Pearls, The Vision of Felix Klein" by David Mumford, Caroline Series, David Wright. http://klein.math.okstate.edu/IndrasPearls/

global:

Complex ShowCenter[] = LC1,LC2,LC3,LC4,LC5,LC6,LC7,LC8,LC9,LC10,LC11,LC12,LC13,LC14,LC15,LC16 Complex ShowRing[] = LR1,LR2,LR3,LR4,LR5,LR6,LR7,LR8,LR9,LR10,LR11,LR12,LR13,LR14,LR15,LR16 AbsV = Sqrt(AbsU^2 - 1) u = AbsU * Cis(DegreeToRadian(ArgU)) v = AbsV * Cis(DegreeToRadian(ArgV)) Mobius UnitCircleGroup = Mobius(u, v, Conj(v), Conj(u))

totalGen = 1 + N + 32 Mobius m[totalGen] ' ' Given N, find radius R such that N circles with radius R can be ' placed along the inside of the unit circle, each tangent to the ' unit circle and each of its two adjacent neighbors. ' r = 1/(1+1/Sin(Math.PI/N))

step = 2Math.PI/N ang = IIf(Shift, step/2, 0) ' ' Center generator (index 0) ' m[0] = Mobius(1-2r, 0, 0, 1) ' ' Ring generators (indices 1..N) ' for (i = 1, i <= N, i += 1) { rotate = Cis(ang) m[i] = Mobius.Multiply(
Mobius(rrotate, (1-r)rotate, 0, 1),
UnitCircleGroup
) ang += step } ' ' Custom generators ' m[N+1]=Mobius(0.08578644
2,Complex( 0.29289322
2, 0.292893222),0,1) m[N+2]=Mobius(0.085786442,Complex(-0.292893222,-0.292893222),0,1) m[N+3]=Mobius(0.085786442,Complex( 0.292893222,-0.292893222),0,1) m[N+4]=Mobius(0.085786442,Complex(-0.292893222, 0.292893222),0,1)

m[N+5]=Mobius(0.022407752,Complex(0.216388382,0.216388382), 0, 1) m[N+6]=Mobius(0.022407752,Complex(-0.216388382,0.216388382), 0, 1) m[N+7]=Mobius(0.022407752,Complex(-0.216388382,-0.216388382), 0, 1) m[N+8]=Mobius(0.022407752,Complex(0.216388382,-0.216388382), 0, 1)

m[N+9]=Mobius(0.041421362,Complex(0.400000002,0.224264072), 0, 1) m[N+10]=Mobius(0.041421362,Complex(0.224264072,0.400000002), 0, 1)

m[N+11]=Mobius(0.041421362,Complex(-0.400000002,0.224264072), 0, 1) m[N+12]=Mobius(0.041421362,Complex(-0.224264072,0.400000002), 0, 1)

m[N+13]=Mobius(0.041421362,Complex(-0.400000002,-0.224264072), 0, 1) m[N+14]=Mobius(0.041421362,Complex(-0.224264072,-0.400000002), 0, 1)

m[N+15]=Mobius(0.041421362,Complex(0.400000002,-0.224264072), 0, 1) m[N+16]=Mobius(0.041421362,Complex(0.224264072,-0.400000002), 0, 1)

m[N+17]=Mobius(0.022407752,Complex( 0.076504842, 0.076504842), 0, 1) m[N+18]=Mobius(0.022407752,Complex(-0.076504842, -0.076504842), 0, 1) m[N+19]=Mobius(0.022407752,Complex( 0.076504842, -0.076504842), 0, 1) m[N+20]=Mobius(0.022407752,Complex(-0.076504842, 0.076504842), 0, 1)

m[N+21]=Mobius(0.010318672,Complex(0.099645922, 0.099645922), 0, 1) m[N+22]=Mobius(0.008518112,Complex(0.082258122, 0.046118852), 0, 1) m[N+23]=Mobius(0.008518112,Complex(0.046118852, 0.08225812*2), 0, 1)

m[N+24]=Mobius(0.010318672,Complex(-0.099645922, 0.099645922), 0, 1) m[N+25]=Mobius(0.008518112,Complex(-0.082258122, 0.046118852), 0, 1) m[N+26]=Mobius(0.008518112,Complex(-0.046118852, 0.08225812*2), 0, 1)

m[N+27]=Mobius(0.010318672,Complex(-0.099645922, -0.099645922), 0, 1) m[N+28]=Mobius(0.008518112,Complex(-0.082258122, -0.046118852), 0, 1) m[N+29]=Mobius(0.008518112,Complex(-0.046118852, -0.08225812*2), 0, 1)

m[N+30]=Mobius(0.010318672,Complex(0.099645922, -0.099645922), 0, 1) m[N+31]=Mobius(0.008518112,Complex(0.082258122, -0.046118852), 0, 1) m[N+32]=Mobius(0.008518112,Complex(0.046118852, -0.08225812*2), 0, 1)

' ' Assign Total = the total number of circles. ' const Complex Total = 0 count = totalGen

for (i = 0, i < Steps, i += 1) { Total += count count *= totalGen } const Circle c[Total] const Complex index[Total] const Complex level[Total] Circle UnitCircle = CircleC(0, 1) ' ' Generate the base circles (all generators applied to unit circle) ' for (i = 0, i < totalGen, i += 1) { c[i] = Mobius.TransformCircle(m[i], UnitCircle) index[i] = i level[i] = 0 } count = totalGen max = 0 ' ' Generate the remaining circles by applying all generators iteratively. ' if (Steps > 1) { for (i = 1, i < Steps, i += 1) { min = max max = count

for (j = min, j < max, j += 1) { for (k = 0, k < totalGen, k += 1) { c[count] = Mobius.TransformCircle(m[k], c[j]) if (c[count].Radius >= RadiusMin) { index[count] = index[j] level[count] = i count += 1 } } } } } Total = count

CurveTrap.Initialize(
Center, DegreeToRadian(Angle), Scale, AlternateAngle, 6, False, LineWidth
) ' ' Add the circles to the trap. ' for (i = 0, i < Total, i += 1) { lev = level[i] idx = index[i] if (idx = 0) { if (ShowCenter[lev]) { CurveTrap.AddCircle2(c[i], Solid, IIf(Solid, lev, 0), idx, lev) } } else { if (ShowRing[lev]) { CurveTrap.AddCircle2(c[i], Solid, IIf(Solid, lev, 0), idx, lev) } } }

trap:

trappedPoint = CurveTrap.Apply(z)

properties:

divider { caption = "General Options" } option Center { type = Complex caption = "Center" details = "Center of trap" default = 0 } option Angle { type = Float caption = "Angle" details = "Angle of rotation" default = 0 range = [-360,360] } option Scale { type = Float caption = "Scale" details = "Scale factor applied to trap" range = (0,) default = 2 } option Solid { type = Boolean caption = "Solid" details = "Check to create solid trap" default = False } option AlternateAngle { type = Boolean caption = "Alternate Angle" details = "Use alternate angle calculation" default = False } option LineWidth { type = Float caption = "Line Width" details = "Extent of trap on either side of curve (> 0)" range = (0,) default = 0.00411522633744855967078189300413 enabled = ~Solid } divider { caption = "U/V Controls" } option AbsU { type = Float caption = "Abs(U)" details = "Magnitude of U (1-2)" default = 1.1 range = [1,2] } option ArgU { type = Float caption = "Arg(U)" details = "Angle of U" default = 0 range = [-360,360] } option ArgV { type = Float caption = "Arg(V)" details = "Angle of V" default = 180 range = [-360,360] } divider { caption = "Circle Controls" } option N { type = IntegerEnum(3,12) caption = "N" details = "Number of base circles" default = 4 } option Steps { type = IntegerEnum(1,16) caption = "Steps" details = "Number of inversion steps" default = 4 ' <-- REDUCED from 8 to 4 to avoid memory crash } option Shift { type = Boolean caption = "Shift" details = "Check to rotate initial chain by pi/N" default = False } option RadiusMin { type = Float caption = "Radius Min" details = "Minimum acceptable circle radius" default = 0 range = [0,) } #define ShowLevel(Index)

divider { caption = "Level #Index# Options" } option LR#Index# { type = Boolean caption = "Show Ring" details = "Show ring of circles at level #Index#" default = True enabled = Steps >= #Index# } option LC#Index# { type = Boolean caption = "Show Center" details = "Show center circle at level #Index#" default = True enabled = Steps >= #Index# } #end

#include ShowLevel("1") #include ShowLevel("2") #include ShowLevel("3") #include ShowLevel("4") #include ShowLevel("5") #include ShowLevel("6") #include ShowLevel("7") #include ShowLevel("8") #include ShowLevel("9") #include ShowLevel("10") #include ShowLevel("11") #include ShowLevel("12") #include ShowLevel("13") #include ShowLevel("14") #include ShowLevel("15") #include ShowLevel("16")

ยทweb.archive.orgยท
๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบโธฌโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ• โ € แฏฝแชฃ๐–ฆธ โ € ๐–ฆธแชฃแฏฝ โ € ๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœโธฌโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ 
๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ• โ € แฏฝแชฃ๐–ฆธ โ € ๐–ฆธแชฃแฏฝ โ € ๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ 
๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ• โ € แฏฝแชฃ๐–ฆธ โ € ๐–ฆธแชฃแฏฝ โ € ๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’ 

comment:

trappedPoint.Index is the base circle index: 0 (center), 1-N (in ring) trappedPoint.Delta is the level: 0 - Steps-1

See the paper: "Evolution of Math into Art via Mobius Transformations" by Anne M. Burns, Department of Mathematics, Long Island University. http://myweb.cwpost.liu.edu/aburns/

Also, see pages 88-89 in the book: "Indra's Pearls, The Vision of Felix Klein" by David Mumford, Caroline Series, David Wright. http://klein.math.okstate.edu/IndrasPearls/

global:

Complex ShowCenter[] = LC1,LC2,LC3,LC4,LC5,LC6,LC7,LC8,LC9,LC10,LC11,LC12,LC13,LC14,LC15,LC16 Complex ShowRing[] = LR1,LR2,LR3,LR4,LR5,LR6,LR7,LR8,LR9,LR10,LR11,LR12,LR13,LR14,LR15,LR16 AbsV = Sqrt(AbsU^2 - 1) u = AbsU * Cis(DegreeToRadian(ArgU)) v = AbsV * Cis(DegreeToRadian(ArgV)) Mobius UnitCircleGroup = Mobius(u, v, Conj(v), Conj(u))

' ========= ' DEFINE FOUR APOLLONIAN CIRCLES AS GENERATORS ' (scaled by 2 to match default trap Scale=2) ' ========= scaleFactor = 2 customRadius = 0.08578644 * scaleFactor

' Total generators = 1 (center) + N (ring) + 4 custom totalGen = 1 + N + 4 Mobius m[totalGen] ' ' Given N, find radius R such that N circles with radius R can be ' placed along the inside of the unit circle, each tangent to the ' unit circle and each of its two adjacent neighbors. ' r = 1/(1+1/Sin(Math.PI/N))

step = 2Math.PI/N ang = IIf(Shift, step/2, 0) ' ' Center generator (index 0) ' m[0] = Mobius(1-2r, 0, 0, 1) ' ' Ring generators (indices 1..N) ' for (i = 1, i <= N, i += 1) { rotate = Cis(ang) m[i] = Mobius.Multiply(
Mobius(rrotate, (1-r)rotate, 0, 1),
UnitCircleGroup
) ang += step } ' ' Custom generators (indices N+1 .. N+4) ' m[N+1] = Mobius(customRadius, Complex( 0.29289322
scaleFactor, 0.29289322
scaleFactor), 0, 1) m[N+2] = Mobius(customRadius, Complex(-0.29289322scaleFactor, -0.29289322scaleFactor), 0, 1) m[N+3] = Mobius(customRadius, Complex( 0.29289322scaleFactor, -0.29289322scaleFactor), 0, 1) m[N+4] = Mobius(customRadius, Complex(-0.29289322scaleFactor, 0.29289322scaleFactor), 0, 1)

' ' Assign Total = the total number of circles. ' const Complex Total = 0 count = totalGen

for (i = 0, i < Steps, i += 1) { Total += count count *= totalGen } const Circle c[Total] const Complex index[Total] const Complex level[Total] Circle UnitCircle = CircleC(0, 1) ' ' Generate the base circles (all generators applied to unit circle) ' for (i = 0, i < totalGen, i += 1) { c[i] = Mobius.TransformCircle(m[i], UnitCircle) index[i] = i level[i] = 0 } count = totalGen max = 0 ' ' Generate the remaining circles by applying all generators iteratively. ' if (Steps > 1) { for (i = 1, i < Steps, i += 1) { min = max max = count

  for (j = min, j < max, j += 1) {
    for (k = 0, k < totalGen, k += 1) {
      c[count] = Mobius.TransformCircle(m[k], c[j])
      if (c[count].Radius >= RadiusMin) {
        index[count] = index[j]
        level[count] = i
        count += 1
      }
    }
  }
}

} Total = count

CurveTrap.Initialize(
Center, DegreeToRadian(Angle), Scale, AlternateAngle, 6, False, LineWidth
) ' ' Add the circles to the trap. ' for (i = 0, i < Total, i += 1) { lev = level[i] idx = index[i] if (idx = 0) { if (ShowCenter[lev]) { CurveTrap.AddCircle2(c[i], Solid, IIf(Solid, lev, 0), idx, lev) } } else { if (ShowRing[lev]) { CurveTrap.AddCircle2(c[i], Solid, IIf(Solid, lev, 0), idx, lev) } } }

trap:

trappedPoint = CurveTrap.Apply(z)

properties:

divider { caption = "General Options" } option Center { type = Complex caption = "Center" details = "Center of trap" default = 0 } option Angle { type = Float caption = "Angle" details = "Angle of rotation" default = 0 range = [-360,360] } option Scale { type = Float caption = "Scale" details = "Scale factor applied to trap" range = (0,) default = 2 } option Solid { type = Boolean caption = "Solid" details = "Check to create solid trap" default = False } option AlternateAngle { type = Boolean caption = "Alternate Angle" details = "Use alternate angle calculation" default = False } option LineWidth { type = Float caption = "Line Width" details = "Extent of trap on either side of curve (> 0)" range = (0,) default = 0.00411522633744855967078189300413 enabled = ~Solid } divider { caption = "U/V Controls" } option AbsU { type = Float caption = "Abs(U)" details = "Magnitude of U (1-2)" default = 1.1 range = [1,2] } option ArgU { type = Float caption = "Arg(U)" details = "Angle of U" default = 0 range = [-360,360] } option ArgV { type = Float caption = "Arg(V)" details = "Angle of V" default = 180 range = [-360,360] } divider { caption = "Circle Controls" } option N { type = IntegerEnum(3,12) caption = "N" details = "Number of base circles" default = 4 } option Steps { type = IntegerEnum(1,16) caption = "Steps" details = "Number of inversion steps" default = 4 ' <-- REDUCED from 8 to 4 to avoid memory crash } option Shift { type = Boolean caption = "Shift" details = "Check to rotate initial chain by pi/N" default = False } option RadiusMin { type = Float caption = "Radius Min" details = "Minimum acceptable circle radius" default = 0 range = [0,) } #define ShowLevel(Index)

divider { caption = "Level #Index# Options" } option LR#Index# { type = Boolean caption = "Show Ring" details = "Show ring of circles at level #Index#" default = True enabled = Steps >= #Index# } option LC#Index# { type = Boolean caption = "Show Center" details = "Show center circle at level #Index#" default = True enabled = Steps >= #Index# } #end

#include ShowLevel("1") #include ShowLevel("2") #include ShowLevel("3") #include ShowLevel("4") #include ShowLevel("5") #include ShowLevel("6") #include ShowLevel("7") #include ShowLevel("8") #include ShowLevel("9") #include ShowLevel("10") #include ShowLevel("11") #include ShowLevel("12") #include ShowLevel("13") #include ShowLevel("14") #include ShowLevel("15") #include ShowLevel("16")

ยทweb.archive.orgยท
๐Ÿ’ ๐–ก—๐–กน๐ซฐโšช๐”—ขโœบโœ๐‘๐Ÿฑ๐–กฝโฉฉ๐–ฅ• โ € แฏฝแชฃ๐–ฆธ โ € ๐–ฆธแชฃแฏฝ โ € ๐–ฅ•โฉฉ๐–กฝ๐Ÿฑ๐‘โœโœบ๐”—ขโšช๐ซฐ๐–กน๐–ก—๐Ÿ’