Pure Fourier series animation montage

3Blue1Brown · 690K views · 2019 · 12:29

Open on YouTube

Recreational & visual mathCreative coding & generative artInformation theory & signal processingdemo

Why Stack Overflow recommends it

Stack Overflow users link it as the target animation they are trying to recreate when they ask how to turn SVG paths or coordinates into epicycle drawings using a Fourier transform.

Recommended by 0 people across 0 different months, 2020 to 2022.

What it is

A 12-minute montage from 3Blue1Brown showing complex Fourier series animations that trace drawings such as a treble clef, a Hilbert curve and the Seattle skyline using rotating vectors (epicycles). It has no narration, with music by Vincent Rubinetti, and the animations are made with the manim Python library.

What people said

Cites roybe · 2020-04 · Stack Overflow · on “Manim: How to update function with defined time interval”

I am currently learning manim and I am trying to replicate 3b1b's fourier drawing animations. ( [this video] ) I've got everything set up and the basics of the animation is working. The only problem I've got is, that it doesnt draw the wanted figure. I am currently using valuetracker to update the function. To get the animation right, I think i need to have a constant "dt" between each updating, but I don't know how to implement that. I am not sure if valuetracker is the right way to do it. I've tried the using "dt" like in Theorem of Beethoven tutotial 8.3 ( [LINK] ). Wasn't able to make it work like that though. Here is the code that updates all mobjects in the animation: def update_fct(c): # U

Cites xEthereal · 2021-01 · Stack Overflow · on “How to extract the cartesian coordinates (x,y) of an svg image?”

I have an svg image that contains a continuous path, and I want to extract its cartesian coordinates (x,y) preferably to a csv file. I’m doing this to recreate 3B1B’s animation of any arbitrary path using epicycles. Link here [this video]

Cites Christopher Mattocks · 2021-08 · Stack Overflow · on “What is the correct way to implement the Discrete Fourier Transform for complex values in Python?”

I am starting to try some more interesting projects in python, which has led me to attempt to create a program that will take in a text file of x and y coordinates and produce an epicycle animation such as this one [this video] . I've already got a function that can draw an epicycle with a given centre, radius, frequency and phase. The way I've approached the 'maths' bit is by doing a discrete Fourier transform on a list of complex numbers(corresponding to the x-y coordinates). Here's my code for the DFT: def dft(vals): transformed=[] N=len(vals) for k in range(0,N): coeff=0 upper_freq=0 if k>N/2 : b=-k else: b=k for n in range(0,N): coeff+=(vals[n]*(np.e**(-2*np.pi*1j*k*n*1/N))) transformed.appe

Cites Freud · 2021-12 · Stack Overflow · on “How to get the coordinate of a point in a svg path in c++”

I am trying to implement the animations presented in this video [this video] In order to do so I need to parse a svg path into a set of points. More precisely, given a svg path I need to get the coordinate of the point that is in some fraction of the curve. For example the coordinate of the point that is located 50% in length from the beginning of the curve to the end. I have only found solutions for this in javascript and python but I need it in c++ (since I implemented all the graphics in c++ opengl) Can someone please help me?

Cites rafaelcb21 · 2022-09 · Stack Overflow · on “Fourier transform why can I convert one of the axes into an imaginary number?”

Contextualizing This question is inspired by the following video: [this video] I own a sign, a drawing of a square with 200 points in total: import numpy as np import matplotlib.pyplot as plt from scipy.integrate import quad, quad_vec POINTS_EACH_SIDE = 50 x = list(np.linspace(-np.pi, np.pi, POINTS_EACH_SIDE )) + [np.pi] * POINTS_EACH_SIDE + list(np.linspace(np.pi, -np.pi, POINTS_EACH_SIDE )) + [-np.pi] * POINTS_EACH_SIDE y = [np.pi] * POINTS_EACH_SIDE + list(np.linspace(np.pi, -np.pi, POINTS_EACH_SIDE )) + [-np.pi] * POINTS_EACH_SIDE + list(np.linspace(-np.pi, np.pi, POINTS_EACH_SIDE )) t_list = np.linspace(0, 2*np.pi, 200) fig, ax = plt.subplots() ax.set_aspect('equal') ax.plot(x, y, 'b') xlim_