Hacker News new | past | comments | ask | show | jobs | submit login
Mathematics Animations (3blue1brown.com)
317 points by vinchuco on Feb 18, 2016 | hide | past | web | favorite | 37 comments

So, I went to highschool with the guy that makes these videos. Not only is he brilliant, he is particularly good at making advanced topics more accessible to people without a heavy math background.

Crazy. I just looked him up and he is currently in Stanford. I bet his genius shined like a beacon back in high school.

I just finished watching the Hilbert's Curve video. It's extremely well done!

Does anyone know what software or process was used to create these videos?

I'm pretty sure he uses his own software that he wrote in python to do it all.

From his YouTube comments, he wrote his own engine in Python and open sourced it -- https://github.com/3b1b/manim

LucasVB is another master of visualizing mathematics. He is responsible for some of the best math animations on Wikipedia.[1] If you like to know more about how he creates these masterpieces, check out his Blog.[2]

[1] https://en.wikipedia.org/wiki/User:LucasVB/Gallery

[2] http://1ucasvb.tumblr.com/

I think getting this (https://github.com/3b1b/manim) to work needs a video would need a video of its own. :)

Here's where I got to since the README.md is basically empty for the moment.

So far I've got it to do something. It needs at least these python libraries as dependencies.

    - cv2 (This is OpenCV and is not easily installable inside virtualenv)
    - colour
    - progressbar
    - tqdm
I'm running everything from the main manim directory, after a git clone.

    git clone https://github.com/3b1b/manim
    cd manim
Its also expecting a `../animation_file/images` directory to exist.

    mkdir -p ../animation_file/images
Now each project consist of a set of classes, each one a scene. To view a scene, it can just be instantiated

    PYTHONPATH=`pwd` python
    >>> scene = generate_logo.LogoGeneration()
There's a progress bar that shows a few times. Then a new window shows up for me (from ImageMagick? Maybe that's a dependency too.).

Then I think you can call .construct() on the object.

    >>> scene.construct()
But it took too much computational power so I stopped there.

Ah, yes, this is one of those projects that I worked on mostly as a tool for my own use. Eventually, I plan to make a proper tutorial and everything, but first there are a few key things I ought to revamp which, over time, have become way over-personalized.

So when are we going to create glasses with cameras and ear pieces that create images of the view in front of them and convert to sounds using hilbert curves and help deaf people see?

I imagine this is already feasible. We would need to give them time to pick up the skill by letting them loose in some kind of training situations so they know what everything looks like and can distinguish things passing by.

The only thing I'm not certain of is how long the training would take before some basic recognition is possible amidst the already present noise of every day life. I do know that when you lose a sense though your other senses get sharpened to compensate, and that might improve the adaptation period.

edit: we could also give these to seeing people to help retain their acuity as they age.

It's pretty amazing but Alexander Graham Bell's work towards visualizing sound for deaf people is what prompted his "invention" of the telephone.

This section [1] talks about the end result but the whole wikipedia article is an interesting read on how his work developed over time. I didn't see anything specific to what I remember from my college class on it but this part hints at it, "pen-like machine that could draw shapes of sound waves on smoked glass by tracing their vibrations."

The linked article on Visible Speech [2] may also be of interest describing what Bell's father used to describe sounds phonetically.

1. https://en.wikipedia.org/wiki/Alexander_Graham_Bell#Telephon...

2. https://en.wikipedia.org/wiki/Visible_Speech

There's an Android app that does something like that, "The vOICe for Android" by Peter Meijer:


website: https://www.seeingwithsound.com/

It's also available as/on a web app, Raspberry Pi, NVDA, and Windows.

It apparently works: http://www.sciencemag.org/news/2014/03/computer-program-allo...

Apparently there is a similar iOS app called EyeMusic.

Related: This App Turns Your Photos into Music If You Want to Do That For Some Reason: https://www.youtube.com/watch?v=zpNgsU9o4ik

Remember Monster Rancher?

Re: the Hilbert curve - is there any research into an image compression application of it?

Split the image into RGB (or HSV) channels, stretch each of them into a stream using Hilbert curve mapping and then either try a lossless compression or a lossy JPEG/FFT-like one. A hunch says this could show some interesting results.

There are probably little-to-no applications of Hilbert SFCs to image compression (in the sense of increasing compression ratio or something). The main benefit of using something like the Hilbert SFC is (2D) locality. That is, "close" points in D where D = [ d0,d1,d2,d3,d4,d5, ... dn] will also be "close" in D2, where D2 = [(x0,y0),(x0,y1)(x0,y2),...(xn,yn)]. NOTE: The converse does not hold. Closeness of points in the D2 plane does NOT guarantee closeness of points in D.

Usually this has applications when dealing with things like file systems and databases. I've seen some people that argue that using something like Hilbert curves in compression algorithms will yield less compression-induced artifacts because the artifacts, as you can probably already guess, will "snake around" the image, being much harder to detect visually.

People also have toyed with the idea (and maybe even implemented it) to let the electron beam of a cathode ray tube trace out a Hilbert curve, or two mirrored side-by side.

Advantage would be that you would not lose time in which you could have drawn pixels for vertical and horizontal blanking periods.

Disadvantage would be that the hardware is a lot harder to make, more so if you want to dampen out oscillations near corners well.

The Theora video codec (accidentally apparently) uses a hilbert curve for traversing it's superblocks.

There's a recent overview of that kind of thing here:

Scan Methods and Their Application in Image Compression

Tarek Ouni and Mohamed Abid


Wavelet transforms have been around for a while, and even used in JPEG 2000 for compression [1]. The article on Wikipedia does a great job of describing it. Hilbert transforms are involved. I learned of wavelet transforms when I was learning about fractals in the late 1990's.

[1] https://en.wikipedia.org/wiki/Wavelet_transform

This is friggin awesome! Thanks for posting. Gives me inspiration to take some more Math courses on Coursera.

I'm torn with respect to Coursera. Some of the treatment of topics is light. "The carrot and the stick" are lacking.

That might be just my experience and may not extend to others. However, it should be clear that time is better spent in choosing a good learning source than wasting time trying to make up for it later.

Really fantastic stuff. Thanks for posting...

My question on the Hilbert Curve: When he's talking about filling infinite space, why does the curve or repeating blocks of HC's spiral out, instead of continuing in the pattern of the original Hilbert curve? Doesn't the spiral introduce a new pattern?

The original pattern is good for going "out-to-in", in the sense of starting with a finite area, a square, and filling the whole thing.

That same pattern cannot apply to go "in-to-out", as in starting with a unit square and trying to go to all of space.

You might think you could have the Pseudo-Hilbert curve pattern fill 4 unit square, then 16 unit square, then 64 unit square, etc. However, no proper limit curve would exist in this case, since each specific value on the curve tends to diverge to infinity.

So then it's not really able to define infinite space so much as infinitesimal space. Going from 1 to 0.

On a side note, the Hilbert Curve pattern quite resembles the folds of a brain. Which makes me wonder about the attributes such a pattern would lend our brains:

1) the ability to hold fixed points in space relative to each other while increasing information density between those points, and

2) our ability to stand on the edge of space (reality), and look / measure inward (1 to zero), without seeing infinity looming behind us.

Think about where would you start? How would you define the starting square that you fill?

These have been a great help in my self-learning already. They definitely fill a huge void in intuition building that rote-style-learning generally ignores. Thanks! :)

It is sad that Mathematics is often taught either as narrow examples that miss the big picture or abstract definitions which are more general but feel artificial.

The best teaching often jumps back and forth between the two.

Mathematics can be thought of a simulation of properties of the world inside people's brains which verify the result. Sadly, there's no shared comprehensive framework outside our brains for visualizing [1] and organizing all of it, since it's very flexible [2]. And thus most people miss out on experiencing the beauty of many results.

I sometimes wonder if LaTeX augmented by context (and visualization) would help, and I wish Mathematica was open source to aid this. At the same time, we are faced with incompleteness results that put into question any formal organization of mathematics [3].

[1] https://vimeo.com/36579366

[2] www.jeremykun.com/2013/02/08/why-there-is-no-hitchhikers-guide-to-mathematics-for-programmers/

[3] http://inference-review.com/article/doing-mathematics-differ...

Sorry for the long rant.

I actually deleted a rant that completely says what you just said. I 100% agree. It's mind boggling how much intuition is available to explain maths. It oddly just... makes visual sense. It's "simply" an explanation of what's around us.

Yet, when discussing it, <i>while learning</i> with math folk, it's usually met with "You don't have a degree" or "That's not a formal understanding of the definition, come back". It's completely exclusionary and killed much of my math passion until recently.

It seems a lot of concerns about math pedagogy tend to be killed off with "you don't have a degree", "you don't have the math gene" kind of rhetoric which is a pity. I discovered I really liked math waay too late for my tastes and it was mostly because I was being taught math by people who didn't really know math.

> I wish Mathematica was open source to aid this.

Rather than wishing for this that will not happen, let's work to make Sage, particularly SageMathCloud (https://cloud.sagemath.com), the lingua franca of CASs.

Make sure you check out the one on counting in binary on your fingers. This is a skill all programmers should have, obviously.

Linky: https://www.youtube.com/watch?v=1SMmc9gQmHQ

Why? It's kind of hard to do all the finger positions and you end up being needlessly rude when you reach 4. I prefer the system where you count on your right hand's phalanges with your thumb, giving you 1-12 and use the fingers on your left for how many dozens you've counted. This lets you go up to 72 without much trouble.

To expand:

Touch your right thumb to the small bone on your right pinky finger that is closest to the palm - this is 1. Move it up one bone (phalanx) - this is 2. Move it one more to the tip of your pinky - this is 3. Then you continue with your ring finger - 4, 5, 6 and when you reach the tip of your index finger, you're at 12. Now raise one finger on your left hand for 1 * 12 and continue with your thumb on the first phalanx of your pinky - 13. Once you've raised all 5 fingers on your left hand you're at 5 * 12 = 60 and when you then place your thumb on the tip of your index finger, you're at 72. It's easy and quick after only a bit of training and lets you count practically all numbers you'll ever want to count on your fingers.

I think one of the worst things to happen to math education is set theory. Great if you're a working researcher that actually creates proofs and theorems, a nightmare if you actually want to apply that math and want a better intuition of it...

Just saw the Hilbert curve video, absolutely awesome. Very well done, amazing animations, and I learned some things to boot!

Should come with a warning - once you start watching, don't expect to get anything else done for the next 17 minutes :-)

The Euler's formula one is amazing. That is such a simple explanation.

Just wanted to say thanks for posting this. Loved it.

Registration is open for Startup School 2019. Classes start July 22nd.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact