# Animation

## Pure CSS Animated Squiggle Underline

Probably not a great use of my time. Anyways…

## Hover over me

## CSS Border-Style Animation

You can’t use CSS to animate between a solid and a dotted border style, which makes sense because the change is non-numerical. But you *can* use CSS to achieve the following effect:

## Little Animation Thingy

I’m working on an animation library which specializes in animating between paths whose commands are different in number and type. Essentially, from a given set of paths, all paths’ commands are converted to cubic Bézier and then the paths with fewer subpaths or fewer commands are padded (with ’empty’ paths or commands e.g. `m0 0c0 0 0 0 0 0`

).

The interesting part is the way in which the padding is interleaved with the preexisting commands. I’d like to eventually include several parameters to create fine grained control over the style of interleaving. I also think that adding some “noise” or an arc trajectory to the motion of the control points would produce an interesting result. We’ll see!

## Math of Bézier Curves

If you are at all interested in SVG or Bézier curves, you’ve probably seen something like Jason Davies’ animation. I found that those animations are an excellent way of intuitively grasping how Bézier curves work. However, the math behind it all is less intuitive.

I just read this really illuminating article.

Something I hadn’t realized before reading the article is that, mathematically, Bézier curves are not defined as run-of-the-mill functions. Whereas generally one would plug an `x`

value into a function to determine a `y`

value, à la `f(x) = y = ax + b`

, Bézier curves are defined *parametrically*. The values of `x`

and `y`

are determined independently, according to a third parameter, dubbed `t`

.

This is the general formula for a cubic Bézier:

B(t) = (1-t)^{3}·P0 + 3·(1-t)^{2}·t·P1 + 3·(1-t)·t^{2}·P2 + t^{3}·P3

where `P0`

and `P3`

are the start and end points, and `P1`

and `P2`

are the first and second control points.

## SVG Arc Command Parameters

An SVG `<path>`

element’s “arc” command (denoted `a`

or `A`

) has 7 parameters:

```
<path d='a {rx} {ry} {x-axis-rotation} {large-arc-flag} {sweepflag} {x} {y}' />
```

That’s quite a lot of params for one command, and the names of the params are not exactly enlightening. Here’s the deal:

## Conway’s GOLf

In my free time, I’m making a game based on conway’s game of life. Here’s the result of my work so far. Obviously, it’s not a game yet, but it is a functional cellular automaton written in javascript.

Click on a cell to flip its state, or drag to paint on living cells.

In this example, the starting state of living cells is called a “pulsar” – an example of a cyclic form with a period of 3. In other words, if you step 3 times it will return to the original state.

Click on the cells to turn them on or off – maybe you can find other stable or cyclic forms.

## Pentagram ≅ Pentagon

animation javascript math svg graphs

Pentagrams and pentagons are actually a bit spooky…

## Graph Theory

animation javascript math svg graphs

I’m currently reading a book on graph theory.

A graph, in the mathematical sense, is a completely abstract object made up of sets. However, it definitely lends itself to visual representation, so I’m having a bit of fun making visualizations of some of the concepts.