SkillAgentSearch skills...

Alchemy

Generate any a-by-( b + c ) finite rectangle SVG containing potentially Infinitely many a-by-( 2 * b ) finite rectangles animated along a number line of ( ( c - b ) / a )^n scale symmetry.

Install / Use

/learn @bestape/Alchemy

README

for MozFest, 2021

During the workshop, we'll have fun with:

We'll discuss (c - b)/a as well as a*(x^0) = 2*b*(x^1) + a*(x^2).

<details> <summary>Before the workshop, please visit:</summary> </details> <details> <summary>A question to ponder, "Is the Harmonic Series convergent or divergent, given the correct 'resonant' base?":</summary> </details> <details> <summary>If we have time, we might explore how integer sequences as music relate to `a*(x^0) = (x^(y – 1))*(a*x + 2*b)`:</summary> </details> <details> <summary>Additional resources:</summary> </details>

<p align="center"> <img src="https://github.com/bestape/alchemy/blob/master/images/muybridge.svg?raw=true" width="100%"> </p>

Above: a from iteration, to recursion photograph-stack stereogram use case.

alchemy

an animated SVG printer using a PythagoreanMetal engine

!!! TIP JAR !!!

!!! MERCH !!!

<img src="https://github.com/bestape/alchemy/blob/master/images/24hourStopwatch.svg?raw=true" width="100%">

Above: a stopwatch that uses 75% of the remaining parent area to count in loops of 60 seconds, 60 minutes and 24 hours.

!!! TIP JAR !!!

0. contents

<details> <summary>contents</summary>
  1. what

  2. use

  3. options

  4. example tiles

  5. technology

  6. why

  7. problem & opportunity

  8. how

  9. next

  10. app.js

  11. paths

  12. to do

  13. license

</details>

1. what

Create vanishing point cellular automata moving images like the famous Golden Ratio:

<img src="https://github.com/bestape/alchemy/blob/master/images/100by50-1.svg?raw=true" width="50%" >

These images can be used, among other things, as a box of Infinite objects with every object observable from above.

Make Infinite copies of yourself. Super selfies!

selfie

<img src="https://github.com/bestape/alchemy/blob/master/images/fergus.svg?raw=true" width="50%">

<img src="https://github.com/bestape/alchemy/blob/master/images/toby.svg?raw=true" width="50%">

<img src="https://github.com/bestape/alchemy/blob/master/images/catman.svg?raw=true" width="50%">

!!! TIP JAR !!!

2. use

<details> <summary>details</summary>
  1. Have node.js installed on your machine;

  2. download the app.js and app.json files; ensure app.js is executable;

  3. change the values in app.json to your preference;

  4. run ./app.js in your terminal; and

  5. enjoy the SVG printout!

</details>

3. options

<details> <summary>options</summary>

Please read app.js.

The app.json file lists the options.

Change its values to the choices you want then run app.js in a terminal with Node.js installed.

| option | type | description | | ---------------- | ------- | ---------------------------------------- | | a | number | repeating rectangle's horizontal measure | | author | string | the person who made the program | | b2 | number | repeating rectangle's vertical measure | | background | string | parent rectangle's colour; can be null | | borderColour | string | parent rectangle's border colour | | borderSize | number | parent rectangle's border size >= 0 | | cellBorderColour | string | repeating rectangle's border colour | | cellBorderSize | number | repeating rectangle's border size >= 0 | | clickStart | boolean | false = auto; true = manual | | colours | array | repeats if too short; [0] only for start | | cork | string | remainder rectangle included if colour | | drawPath1 | boolean | path shown if true | | drawPath2 | boolean | path shown if true | | drawPath3 | boolean | path shown if true | | drawPath4 | boolean | path shown if true | | embed | boolean | use to copy/paste code into an SVG file | | file | string | file name and relative path | | id | string | combine with other code; use with embed | | images | array | repeats if too short; [0] only for start | | lead | boolean | false = a repeat begins from the top | | loop | boolean | animation auto restarts when finished | | offset | object | use with embed and id to add to SVG file | | opacity | number | between 1 (opaque) and 0 (transparent) | | pause | string | delay until next animation starts | | png | boolean | false = jpg | | repeat | number | number of repeating rectangles >= 1 | | speed | string | the time it takes to move by 1 exponent | | vertical | boolean | repeating rectangle starts vertical | | viewBoxAdd | object | the width and height axis canvas size |

If you need to calculate a number option:

  1. open and edit app.js;

  2. mute the option in the App(){ ... } constructor function with //; and

  3. write the modified option below the muted option.

Please see the this.a option in App(){ ... } for an example.

</details>

4. example tiles

<details> <summary>example tiles</summary>

To run the following animations:

  1. click on the image, it'll open in a new tab; and

  2. within the new tab, click on the repeating rectangle at the top of the parent rectangle.

Vera's Metallic Means can be SVG printed by app.js:

  • set the a value in app.json to 100; and

  • set the b2 value in app.json to 100, then 200, then 300 and so on.

As a continuum rather than a natural count, the Metallic Means are SVG printed by app.js whenever a <= b2 ( a is less than or equal to b2 ) in app.json.

Here's the first Metallic Mean natural count, the Golden Ratio:

<img src="https://github.com/bestape/alchemy/blob/master/images/goldenRatio.svg?raw=true" width="25%" >

Here's the fifth Metallic Mean natural count:

<img src="https://github.com/bestape/alchemy/blob/master/images/fifth.svg?raw=true" width="25%" >

As b2 tends toward Infinity, the repeating rectangles quickly become invisible to the naked eye.

Here's the tenth Metallic Mean natural count, with a = 100; b2 = 1000 in app.json:

<img src="https://github.com/bestape/alchemy/blob/master/images/metalTen.svg?raw=true" width="25%" >

However, if b2 <= a ( b2 is less than or equal to a ) in app.json, the repeating rectangle takes much longer to become invisible to the naked eye, and not because of x scale exponentiation.

Here's the second natural count in the b2 <= a direction:

<img src="https://github.com/bestape/alchemy/blob/master/images/beyondMetal.svg?raw=true" width="25%" >

Here's b2 <= a when x = 99 / 100, in other words no irrational parts but still non-halting, using this formula:

<img src="https://github.com/bestape/alchemy/blob/master/images/yellowBrickRoad.svg?raw=true" width="25%" >

As b2 approaches a magnitude Infinitely larger than a, the automation approaches a more accurate non-halting definition of 2^( 1 / 2 ). Compare the anthyphairesis of 2^( 1 / 2 ).

<img src="https://github.com/bestape/alchemy/blob/master/images/redcarpet.svg?raw=true" width="50%" >

A natural PythagoreanMetal order measures ax with b2 unity or b2x with a unity.

ax = b2 is ISO 216, using this WolframAlpha calculation:

<img src="https://github.com/bestape/alchemy/blob/master/images/b2equalsax.svg?raw=true" width="50%" >

2ax = b2:

<img src="https://github.com/bestape/alchemy/blob/master/images/b2equals2ax.svg?raw=true" width="50%" >

ax/2 = b2:

<img src="https://github.com/bestape/alchemy/blob/master/images/b2equalsAxOver2.svg?raw=true" width="50%" >

ax/3 = b2:

<img src="

Related Skills

View on GitHub
GitHub Stars32
CategoryData
Updated3mo ago
Forks2

Languages

HTML

Security Score

77/100

Audited on Dec 17, 2025

No findings