â…ƒMX....ð«°âŠšá”“á”•â“„ðŸá‘á‘•ðŸâ“„ᔓᔕ𖢄ðŸâ“„✣ИN⟠á‘ᑕ⟠ИN✣ⓄðŸð–¢„ᗱᗴ◇á‘á‘•ðŸâµ™á‘á‘•âµ™ðŸá‘ᑕ◇ᗱᗴ𖢄ðŸâ“„✣ИN⟠á‘ᑕ⟠ИN✣ⓄðŸð–¢„ᔓᔕⓄðŸá‘á‘•ðŸâ“„ᔓᔕ⊚ð«°....XML 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533
  1. <?xml version="1.0" encoding="utf-8" standalone="yes"?>
  2. <Fractal BackgroundVisible="True" BackColor="FFFFFF00" BorderWidth="0" StripBorder="True" PixelSize="0.00548779710473845" Pixels.X="729" Pixels.Y="729" ClassicProcessing="None" OrbitTrapProcessing="ActivateControllers" ClassicMaxDwell="1" CycleDetectionActive="False" SolidGuessing="None">
  3. <FractalNotes><![CDATA[]]></FractalNotes>
  4. <FractalEquation Id="adb85431-618d-491f-b8c5-08555b119814" Title="Pixel" MaxPower="1">
  5. <Instructions><![CDATA[
  6. comment:
  7. This equation can be used when no equation is necessary.
  8. By setting the MinDwell/MaxDwell to 1 below, we limit
  9. the iteration to a single step for best performance.
  10. global:
  11. FSK.OverrideValue("MinDwell", 1)
  12. FSK.OverrideValue("MaxDwell", 1)
  13. iterate:
  14. z = c
  15. ]]></Instructions>
  16. <PropertyValueOverrides />
  17. </FractalEquation>
  18. <TransformationArray>
  19. <Transformation Id="7fc4bc2c-b961-4431-b074-277d7b29842b" Title="Identity">
  20. <Instructions><![CDATA[]]></Instructions>
  21. <PropertyValueOverrides />
  22. </Transformation>
  23. </TransformationArray>
  24. <TransformationArray>
  25. <Transformation Id="7fc4bc2c-b961-4431-b074-277d7b29842b" Title="Identity">
  26. <Instructions><![CDATA[]]></Instructions>
  27. <PropertyValueOverrides />
  28. </Transformation>
  29. </TransformationArray>
  30. <AlternateValueInfo />
  31. <AlternateValueInfo />
  32. <OrbitTrapInfo TrapValueNTrapPreProcessing="CenterReflect" TrapValueNTrapStyle="Flat" TrapValueNSmoothing="Linear" TrapValueNTrapPreProcessing1="CenterReflect" TrapValueNTrapStyle1="Flat" TrapValueNSmoothing1="Linear" TrapValueNTrapPreProcessing2="CenterReflect" TrapValueNTrapStyle2="Flat" TrapValueNSmoothing2="Linear" TrapValueNTrapPreProcessing3="CenterReflect" TrapValueNTrapStyle3="Flat" TrapValueNSmoothing3="Linear">
  33. <OrbitTrapArray TrapIndexMapping="CombinedIndex" TrapDeltaMapping="TrapDelta" BlendValues="False">
  34. <OrbitTransform />
  35. <OrbitTransform />
  36. <TransformationArray>
  37. <Transformation Id="7fc4bc2c-b961-4431-b074-277d7b29842b" Title="Identity">
  38. <Instructions><![CDATA[]]></Instructions>
  39. <PropertyValueOverrides />
  40. </Transformation>
  41. </TransformationArray>
  42. <TransformationArray>
  43. <Transformation Id="7fc4bc2c-b961-4431-b074-277d7b29842b" Title="Identity">
  44. <Instructions><![CDATA[]]></Instructions>
  45. <PropertyValueOverrides />
  46. </Transformation>
  47. </TransformationArray>
  48. <SymmetryTransformation Id="8301dc6c-2273-4fb9-ada8-2ded2833031f" Title="Identity">
  49. <Instructions><![CDATA[]]></Instructions>
  50. <PropertyValueOverrides />
  51. </SymmetryTransformation>
  52. <OrbitTrapItem>
  53. <OrbitTrap Id="4e4b2e73-dc52-4107-bb98-f9abb8745748" Title="Unit Circle Group">
  54. <Instructions><![CDATA[
  55. comment:
  56. trappedPoint.Index is the base circle index: 0 (center), 1-N (in ring)
  57. trappedPoint.Delta is the level: 0 - Steps-1
  58. See the paper:
  59. "Evolution of Math into Art via Mobius Transformations"
  60. by Anne M. Burns, Department of Mathematics,
  61. Long Island University.
  62. http://myweb.cwpost.liu.edu/aburns/
  63. Also, see pages 88-89 in the book:
  64. "Indra's Pearls, The Vision of Felix Klein"
  65. by David Mumford, Caroline Series, David Wright.
  66. http://klein.math.okstate.edu/IndrasPearls/
  67. global:
  68. Complex ShowCenter[] = LC1,LC2,LC3,LC4,LC5,LC6,LC7,LC8,LC9,LC10,LC11,LC12,LC13,LC14,LC15,LC16
  69. Complex ShowRing[] = LR1,LR2,LR3,LR4,LR5,LR6,LR7,LR8,LR9,LR10,LR11,LR12,LR13,LR14,LR15,LR16
  70. AbsV = Sqrt(AbsU^2 - 1)
  71. u = AbsU * Cis(DegreeToRadian(ArgU))
  72. v = AbsV * Cis(DegreeToRadian(ArgV))
  73. Mobius UnitCircleGroup = Mobius(u, v, Conj(v), Conj(u))
  74. Mobius m[N+1]
  75. '
  76. ' Given N, find radius R such that N circles with radius R can be
  77. ' placed along the inside of the unit circle, each tangent to the
  78. ' unit circle and each of its two adjacent neighbors. The centers
  79. ' of all circles are a distance of 1-R from the origin. The centers
  80. ' of all circles form a regular polygon P with N sides and each edge
  81. ' has length = 2*(1-R)*Sin(pi/N). Since all N circles are pairwise
  82. ' tangent, the edge of P must equal 2*R, so 2*R = 2*(1-R)*Sin(pi/N).
  83. ' Solving for R yields R = 1/(1+1/Sin(pi/N)).
  84. '
  85. r = 1/(1+1/Sin(Math.PI/N))
  86. step = 2*Math.PI/N
  87. ang = IIf(Shift, step/2, 0)
  88. '
  89. ' Generate the Mobius transformation that transforms the
  90. ' unit circle into the circle in the center of the ring.
  91. '
  92. m[0] = Mobius(1-2*r, 0, 0, 1)
  93. '
  94. ' Generate the set of N Mobius transformations the
  95. ' transform the unit circle into the i'th circle in the
  96. ' ring, where i = 1 to N.
  97. '
  98. for (i = 1, i <= N, i += 1) {
  99. rotate = Cis(ang)
  100. m[i] = Mobius.Multiply( \
  101. Mobius(r*rotate, (1-r)*rotate, 0, 1), \
  102. UnitCircleGroup \
  103. )
  104. ang += step
  105. }
  106. '
  107. ' Assign Total = the total number of circles.
  108. '
  109. const Complex Total = 0
  110. count = N+1
  111. for (i = 0, i < Steps, i += 1) {
  112. Total += count
  113. count *= N+1
  114. }
  115. const Circle c[Total]
  116. const Complex index[Total]
  117. const Complex level[Total]
  118. Circle UnitCircle = CircleC(0, 1)
  119. '
  120. ' Generate the base ring and center circles.
  121. '
  122. for (i = 0, i <= N, i += 1) {
  123. c[i] = Mobius.TransformCircle(m[i], UnitCircle)
  124. index[i] = i
  125. level[i] = 0
  126. }
  127. count = N+1
  128. max = 0
  129. '
  130. ' Generate the remaining circles.
  131. '
  132. if (Steps > 1) {
  133. for (i = 1, i < Steps, i += 1) {
  134. min = max
  135. max = count
  136. for (j = min, j < max, j += 1) {
  137. for (k = 0, k < N+1, k += 1) {
  138. c[count] = Mobius.TransformCircle(m[k], c[j])
  139. '
  140. ' Skip circles that are too small.
  141. '
  142. if (c[count].Radius >= RadiusMin) {
  143. index[count] = index[j]
  144. level[count] = i
  145. count += 1
  146. }
  147. }
  148. }
  149. }
  150. }
  151. '
  152. ' Reset Total in case you skipped circles that were too small.
  153. '
  154. Total = count
  155. CurveTrap.Initialize( \
  156. Center, DegreeToRadian(Angle), Scale, AlternateAngle, 6, False, LineWidth \
  157. )
  158. '
  159. ' Add the circles to the trap based on user criteria.
  160. '
  161. for (i = 0, i < Total, i += 1) {
  162. lev = level[i]
  163. idx = index[i]
  164. '
  165. ' Note: idx=N for center circles.
  166. '
  167. if (idx = 0) {
  168. if (ShowCenter[lev]) {
  169. CurveTrap.AddCircle2(c[i], Solid, IIf(Solid, lev, 0), idx, lev)
  170. }
  171. } else {
  172. if (ShowRing[lev]) {
  173. CurveTrap.AddCircle2(c[i], Solid, IIf(Solid, lev, 0), idx, lev)
  174. }
  175. }
  176. }
  177. trap:
  178. trappedPoint = CurveTrap.Apply(z)
  179. properties:
  180. divider {
  181. caption = "General Options"
  182. }
  183. option Center {
  184. type = Complex
  185. caption = "Center"
  186. details = "Center of trap"
  187. default = 0
  188. }
  189. option Angle {
  190. type = Float
  191. caption = "Angle"
  192. details = "Angle of rotation"
  193. default = 0
  194. range = [-360,360]
  195. }
  196. option Scale {
  197. type = Float
  198. caption = "Scale"
  199. details = "Scale factor applied to trap"
  200. range = (0,)
  201. default = 2
  202. }
  203. option Solid {
  204. type = Boolean
  205. caption = "Solid"
  206. details = "Check to create solid trap"
  207. default = False
  208. }
  209. option AlternateAngle {
  210. type = Boolean
  211. caption = "Alternate Angle"
  212. details = "Use alternate angle calculation"
  213. default = False
  214. }
  215. option LineWidth {
  216. type = Float
  217. caption = "Line Width"
  218. details = "Extent of trap on either side of curve (> 0)"
  219. range = (0,)
  220. default = 0.00411522633744855967078189300413
  221. enabled = ~Solid
  222. }
  223. divider {
  224. caption = "U/V Controls"
  225. }
  226. option AbsU {
  227. type = Float
  228. caption = "Abs(U)"
  229. details = "Magnitude of U (1-2)"
  230. default = 1.1
  231. range = [1,2]
  232. }
  233. option ArgU {
  234. type = Float
  235. caption = "Arg(U)"
  236. details = "Angle of U"
  237. default = 0
  238. range = [-360,360]
  239. }
  240. option ArgV {
  241. type = Float
  242. caption = "Arg(V)"
  243. details = "Angle of V"
  244. default = 180
  245. range = [-360,360]
  246. }
  247. divider {
  248. caption = "Circle Controls"
  249. }
  250. option N {
  251. type = IntegerEnum(3,12)
  252. caption = "N"
  253. details = "Number of base circles"
  254. default = 4
  255. }
  256. option Steps {
  257. type = IntegerEnum(1,16)
  258. caption = "Steps"
  259. details = "Number of inversion steps"
  260. default = 7
  261. }
  262. option Shift {
  263. type = Boolean
  264. caption = "Shift"
  265. details = "Check to rotate initial chain by pi/N"
  266. default = False
  267. }
  268. option RadiusMin {
  269. type = Float
  270. caption = "Radius Min"
  271. details = "Minimum acceptable circle radius"
  272. default = 0
  273. range = [0,)
  274. }
  275. #define ShowLevel(Index)
  276. divider {
  277. caption = "Level #Index# Options"
  278. }
  279. option LR#Index# {
  280. type = Boolean
  281. caption = "Show Ring"
  282. details = "Show ring of circles at level #Index#"
  283. default = True
  284. enabled = Steps >= #Index#
  285. }
  286. option LC#Index# {
  287. type = Boolean
  288. caption = "Show Center"
  289. details = "Show center circle at level #Index#"
  290. default = True
  291. enabled = Steps >= #Index#
  292. }
  293. #end
  294. #include ShowLevel("1")
  295. #include ShowLevel("2")
  296. #include ShowLevel("3")
  297. #include ShowLevel("4")
  298. #include ShowLevel("5")
  299. #include ShowLevel("6")
  300. #include ShowLevel("7")
  301. #include ShowLevel("8")
  302. #include ShowLevel("9")
  303. #include ShowLevel("10")
  304. #include ShowLevel("11")
  305. #include ShowLevel("12")
  306. #include ShowLevel("13")
  307. #include ShowLevel("14")
  308. #include ShowLevel("15")
  309. #include ShowLevel("16")]]></Instructions>
  310. <PropertyValueOverrides>
  311. <Option Name="Solid" Type="BooleanOption" Value="True" />
  312. <Option Name="LineWidth" Type="FloatOption" Value="0.00411522633744855" />
  313. <Option Name="ArgU" Type="FloatOption" Value="180" />
  314. <Option Name="ArgV" Type="FloatOption" Value="0" />
  315. <Option Name="Steps" Type="IntegerEnumOption" Value="7" />
  316. <Option Name="LR1" Type="BooleanOption" Value="False" />
  317. <Option Name="LR2" Type="BooleanOption" Value="False" />
  318. <Option Name="LR3" Type="BooleanOption" Value="False" />
  319. <Option Name="LR4" Type="BooleanOption" Value="False" />
  320. <Option Name="LR5" Type="BooleanOption" Value="False" />
  321. <Option Name="LR6" Type="BooleanOption" Value="False" />
  322. <Option Name="LR7" Type="BooleanOption" Value="False" />
  323. <Option Name="LR8" Type="BooleanOption" Value="False" />
  324. <Option Name="LR9" Type="BooleanOption" Value="False" />
  325. <Option Name="LR10" Type="BooleanOption" Value="False" />
  326. <Option Name="LR11" Type="BooleanOption" Value="False" />
  327. <Option Name="LR12" Type="BooleanOption" Value="False" />
  328. <Option Name="LR13" Type="BooleanOption" Value="False" />
  329. <Option Name="LR14" Type="BooleanOption" Value="False" />
  330. <Option Name="LR15" Type="BooleanOption" Value="False" />
  331. <Option Name="LR16" Type="BooleanOption" Value="False" />
  332. </PropertyValueOverrides>
  333. </OrbitTrap>
  334. </OrbitTrapItem>
  335. </OrbitTrapArray>
  336. <OrbitTrapMasterController Id="02699986-4214-4098-b68b-48285874bc4e" Title="â €">
  337. <Instructions><![CDATA[
  338. comment:
  339. Return color computed by 1st controller.
  340. color:
  341. color = Controller.Color(0)
  342. ]]></Instructions>
  343. <PropertyValueOverrides />
  344. </OrbitTrapMasterController>
  345. <OrbitTrapControllerArray>
  346. <OrbitTrapController Id="29fbd0db-b470-4d0d-ad93-e4d5d937ef86" Title="ⵔ·ⵔ" ApplyDepth="False" Apply3D="False">
  347. <GradientArray />
  348. <TextureArray />
  349. <Instructions><![CDATA[
  350. comment:
  351. This controller colors each trap based on the
  352. property 'Index Map' and the point's 'Trap Dwell'
  353. 'Trap Index' or 'Trap Delta'. You can define up to
  354. 16 colors and these are mapped to the index map
  355. values. Offset can be used to shift the set of
  356. colors with respect to value 0.
  357. If Cutouts are active, the trap is divided into
  358. N sectors and a user defined percent of each
  359. sector is inverted with respect to the 3D shading
  360. effect. This gives the appearance that part of
  361. the trap surface has been cutout or folded over.
  362. The Cutout effect only looks good if the trap
  363. is a solid shape. For example, the 'Shape',
  364. 'Tangent Circles', 'Shapes' and 'Squares'
  365. traps support a 'Solid' property that is used to
  366. produce a solid figure. You should check this
  367. property to display Cutouts.
  368. Also note that the Cutout effect only works if
  369. the trap's angle is given relative to the center
  370. of the solid shape. This is always the case when
  371. the trap is composed of a single shape. However,
  372. when the trap is composed of several shapes arranged
  373. in a pattern like the 'Tangent Circles', 'Shapes' and
  374. 'Squares' traps, the angle is given relative to the
  375. center of the pattern not the individual shapes.
  376. In those cases, you will need to check the
  377. 'Alternate Angle' property on the properties page
  378. for the specific trap so the angle is given relative
  379. to the individual shapes.
  380. global:
  381. const Complex angleShift = SectorAngle / 360
  382. const Complex percentSolid = 1 - PercentCutout
  383. color:
  384. switch (IndexMap) {
  385. case IndexMapTypes.TrapDwell: index = Sample.TrapDwellRaw
  386. case IndexMapTypes.TrapIndex: index = Sample.TrapIndexRaw
  387. case IndexMapTypes.TrapDelta: index = Sample.TrapDeltaRaw
  388. case IndexMapTypes.Alternate1Index: index = Sample.Alternate1IndexRaw
  389. }
  390. color = Colors[WrapIndex(Offset + index, Count)]
  391. if (ApplyCutouts) {
  392. r = Sectors * Wrap(Sample.TrapAngle - angleShift)
  393. r = r - Int(r)
  394. v = Abs(Sample.TrapValue)
  395. compositeHeight = IIf(r < percentSolid, v, Blend(0.75, 0.25, v))
  396. } else {
  397. compositeHeight = Sample.TrapValue
  398. }
  399. properties:
  400. divider {
  401. caption = "Index Map"
  402. }
  403. enum IndexMapTypes {
  404. TrapDwell, "Trap Dwell"
  405. TrapIndex, "Trap Index"
  406. TrapDelta, "Trap Delta"
  407. Alternate1Index , "Alternate 1 Index"
  408. }
  409. option IndexMap {
  410. type = IndexMapTypes
  411. caption = "Index Map"
  412. details = "Color index map"
  413. default = IndexMapTypes.TrapDwell
  414. }
  415. divider {
  416. caption = "Color Map"
  417. }
  418. option Count {
  419. type = IntegerEnum(1,32)
  420. caption = "Count"
  421. details = "Number of colors to use"
  422. default = 8
  423. }
  424. option Colors {
  425. type = ColorSet[Count]
  426. caption = "Colors"
  427. default = FF00AE, FF2020, FF8200, FFFF00, 00FF6C, 00FFFF, 4040FF, AE60FF
  428. }
  429. option Offset {
  430. type = IntegerEnum(0,31)
  431. caption = "Offset"
  432. details = "Offset into set of colors"
  433. default = 0
  434. }
  435. divider {
  436. caption = "Cutouts (Solid traps only)"
  437. }
  438. option ApplyCutouts {
  439. type = Boolean
  440. caption = "Active"
  441. details = "Activate cutout effects"
  442. default = False
  443. }
  444. option Sectors {
  445. type = IntegerEnum(2,16)
  446. caption = "Sectors"
  447. details = "Number of sectors"
  448. default = 2
  449. enabled = ApplyCutouts
  450. }
  451. option SectorAngle {
  452. type = Float
  453. caption = "Angle"
  454. details = "Starting angle of 1st sector"
  455. default = 0
  456. range = [-360,360]
  457. enabled = ApplyCutouts
  458. }
  459. option PercentCutout {
  460. type = Float
  461. caption = "Percent Cutout"
  462. details = "Percent of sector that is cutout"
  463. range = [0,1]
  464. default = 0.5
  465. enabled = ApplyCutouts
  466. }
  467. ]]></Instructions>
  468. <PropertyValueOverrides>
  469. <Option Name="IndexMap" Type="EnumOption" Value="IndexMapTypes.TrapDelta" />
  470. <Option Name="Count" Type="IntegerEnumOption" Value="10" />
  471. <Option Name="Colors" Type="ColorSetOption" Value="A9A9A9,B2B2B2,BABABA,C3C3C3,CBCBCB,D4D4D4,DCDCDC,E5E5E5,EDEDED,F6F6F6" />
  472. </PropertyValueOverrides>
  473. </OrbitTrapController>
  474. </OrbitTrapControllerArray>
  475. <SampleDataNormalizer>
  476. <NormalizerDescriptor />
  477. </SampleDataNormalizer>
  478. <SampleDataNormalizer>
  479. <NormalizerDescriptor />
  480. </SampleDataNormalizer>
  481. <SampleDataNormalizer>
  482. <NormalizerDescriptor />
  483. </SampleDataNormalizer>
  484. </OrbitTrapInfo>
  485. <TransformationArray>
  486. <Transformation Id="7fc4bc2c-b961-4431-b074-277d7b29842b" Title="Identity">
  487. <Instructions><![CDATA[]]></Instructions>
  488. <PropertyValueOverrides />
  489. </Transformation>
  490. </TransformationArray>
  491. <TriangleMetricSet>
  492. <Instructions><![CDATA[metric = p1]]></Instructions>
  493. <TriangleMetric />
  494. <TriangleMetric />
  495. <TriangleMetric />
  496. </TriangleMetricSet>
  497. </Fractal>