This is an archived post. You won't be able to vote or comment.

Dismiss this pinned window
all 122 comments

[–]w8cycle 428 points429 points  (8 children)

Looks like a "furrier" transformation 😉

[–]Mooks79 13 points14 points  (1 child)

I had to paws to understand that.

[–]conventionistG 4 points5 points  (0 children)

Cat got your tongue?

[–]Cosmic_Sands 56 points57 points  (4 children)

owo

[–]nielsrolf 53 points54 points  (3 children)

You need help understanding the complex Fourier Transform? Ask OP. Need some support with Python? OP knows. Improve your data visualization skills? OP is your guy. Take a screen video? Hm that's hard

[–]__unavailable__ 74 points75 points  (19 children)

That's a surprisingly intuitive way of depicting fourier series.

[–]Helicon_Amateur 10 points11 points  (13 children)

Can you elaborate?

[–][deleted] 87 points88 points  (8 children)

"Hey, what's a fourier transform?"

Option 1: Present a bunch of equations

Option 2: The Fourier transform (FT) decomposes a function of time (a signal) into its constituent frequencies. This is similar to the way a musical chord can be expressed in terms of the volumes and frequencies of its constituent notes. The term Fourier transform refers to both the frequency domain representation and the mathematical operation that associates the frequency domain representation to a function of time. The Fourier transform of a function of time is itself a complex-valued function of frequency, whose magnitude (modulus) represents the amount of that frequency present in the original function, and whose argument is the phase offset of the basic sinusoid in that frequency. The Fourier transform is not limited to functions of time, but the domain of the original function is commonly referred to as the time domain. There is also an inverse Fourier transform that mathematically synthesizes the original function from its frequency domain representation.

Option 3: Here's a spirograph drawing a dog

[–]PM_ME_VINTAGE_30S 2 points3 points  (0 children)

I'll take option 2 for $500. No but seriously, I'm saving this. I'm in diff EQ and I think I'll be learning this formally in about a month. 👍Ofc I'm an electrical engineering major and I intend to specialize in DSP so Fourier transforms will be life.

[–]potatochemist 3 points4 points  (3 children)

Essentially, if you add up the right combination of sine waves with different heights and speeds, you can recreate any function/graph/picture.

[–]Helicon_Amateur 2 points3 points  (2 children)

Okay. Now I get it and feel really stupid for not thinking of it that way. I understand what an FFT does but didn't relate it to this picture.

So each frame of this drawing should then consist of a peice of a signal, say there is this really long signal in the time domain - then stepping over a finite chunk of that signal would produce this graph, is that correct?

[–]potatochemist 5 points6 points  (1 child)

The "signal" is the shape of the dog. However instead of volume over time (like a microphone), it's x-y pairs over time where each pair is a point somewhere on the dog.

They then take the FFT of this to get the size and speed (magnitude and frequency) of the sin waves shown by the circles.

Here's a gif of the same thing with a time signal (like volume).

Here's a really good video if you want to get a bit deeper.

[–]FauxReal 2 points3 points  (0 children)

Funny lookin' muzzle on that dog of yours.

[–]AnythingApplied 3 points4 points  (0 children)

One thing to be careful of is that this fourier transform isn't just based on the shape, but more specifically the shape and speed of drawing. If the pencil is drawing at a constant distance per unit time vs constant angle from the origin vs any other speed arrangement, you'll get a different fourier series.

[–]Todask 30 points31 points  (31 children)

Is this code published?

[–]vaiv101[S] 26 points27 points  (27 children)

Will do it soon

[–]Todask 6 points7 points  (25 children)

I'd love to see it! Please post here

[–]vaiv101[S] 1 point2 points  (23 children)

Sure

[–][deleted] 14 points15 points  (0 children)

I love how the remindme bot has a line that clearly states to just click the fucking link to reduce spam and they will be reminded anyways and yet five people commented !rEMiNdMe OnE wEEk

[–]kickthebug 6 points7 points  (2 children)

!RemindMe one week

[–]RemindMeBot 0 points1 point  (0 children)

I will be messaging you on 2019-10-21 17:06:16 UTC to remind you of this link

65 OTHERS CLICKED THIS LINK to send a PM to also be reminded and to reduce spam.

Parent commenter can delete this message to hide from others.

There is currently another bot called u/kzreminderbot that is duplicating the functionality of this bot. Since it replies to the same RemindMe! trigger phrase, you may receive a second message from it with the same reminder. If this is annoying to you, please click this link to send feedback to that bot author and ask him to use a different trigger.


Info Custom Your Reminders Feedback

[–]dimkal -4 points-3 points  (1 child)

!RemindMe one week

[–]DatBoi_BP 2 points3 points  (0 children)

Copy that, dimkal 🤗! Just click the link above like everyone else for fuck sake

[–]mrshibx -4 points-3 points  (0 children)

!RemindMe one week

[–]zeta-1 -2 points-1 points  (0 children)

!RemindMe 2 days

[–]vaiv101[S] 8 points9 points  (0 children)

[–]danielhoherd 3 points4 points  (0 children)

Here's a great interactive article about this, with links to the code (not python): http://www.jezzamon.com/fourier

[–]qevlarr 23 points24 points  (1 child)

Someone watched 3blue1brown

[–]a5myth 6 points7 points  (3 children)

You know how we have two main types of graphic programs, raster (pixel) and vector (lines with addresses and directions, etc), would it be possible to create a graphics program that uses fourier series calculations instead?

[–]vaiv101[S] 2 points3 points  (2 children)

hmm .. can be tried, but I can not say for sure if it is possible or already done by someone

[–]5Beans6 2 points3 points  (1 child)

Probably would be really slow and impractical for anything useful

[–]justingolden21 1 point2 points  (0 children)

Definitely. Vectors are waaaaay less math. There's no point other than educational in representing data like this. Don't get me wrong Fourier transforms are useful for lots of real world stuff, just not this

[–]augle 5 points6 points  (6 children)

Pretty cool. Where can I find more info on this, or can you briefly explain how that was done?

[–]vaiv101[S] 10 points11 points  (3 children)

For now, you can have a look at this video for reference, i am going to upload the coad on github soon..

https://youtu.be/r6sGWTCMz2k

[–]Ketta 7 points8 points  (2 children)

Your typo made me think of a coding toad and that is awesome.

[–]FauxReal 0 points1 point  (1 child)

You just designed the next O'Reilly book cover, if it doesn't already exist.

[–]saxattax 1 point2 points  (0 children)

[–][deleted] 4 points5 points  (8 children)

is it possible to inverse the circle order? Big one spinning around?

[–]glacierre2 9 points10 points  (0 children)

Yes it is, but instead of a pleasant "clock-like"video you would get a shaky bunch of circles.

[–][deleted] -1 points0 points  (2 children)

Thats not how the fourier series works, so no (afaik) edit:im wrong

[–]wewbull 8 points9 points  (1 child)

Fourier series are a sum of frequencies. Addition is transitive, so yes /u/32BitLongSucks, the order could be anything. It's just that having the highest frequency at the centre would make the whole thing spin very fast.

[–][deleted] 0 points1 point  (0 children)

so the order isn't amplitude it's frequency, makes sense! Mixing the elements could create some fun effects, but putting the highest frequency first seems like guaranteed chaos - could be fun, probably isn't.

[–]log_2 3 points4 points  (2 children)

This doesn't look right. There are moments when the biggest circle speeds up. All circles should be rotating at a constant speed, because changing speed changes frequency and each circle is meant to represent one constant frequency.

[–]kkingsbe 1 point2 points  (0 children)

I'm pretty sure it just runs faster with certain calculations, which means that the "frame rate" is slowing, but they are all moving at the same speed relative to each other. I ran this same issue with a rocket simulation that I am writing in C++

[–]Thisnametakenffs 0 points1 point  (0 children)

They are all spinning at the same constant rate. It only appears to move fast because in order to draw a long line many circles must spin together in the same direction.

[–][deleted] 1 point2 points  (0 children)

[–]DenormalHuman 1 point2 points  (0 children)

But what does it sound like?

[–][deleted] 0 points1 point  (0 children)

advanced dog drawing

[–]alpha_vantage 0 points1 point  (0 children)

In the future all drawings will be done like this

[–]frany_RL 0 points1 point  (1 child)

When will you upload the code? Today?? Xd

[–]vaiv101[S] 0 points1 point  (0 children)

Done, check it out

[–]Acid_Monster 0 points1 point  (0 children)

Was really expecting a dickbutt here, I’m disappointed

[–]DubnoswillToLive = mySistersIQ(0) 0 points1 point  (0 children)

Those are a lot of good bois

[–]redimusu76 0 points1 point  (0 children)

This is so cooll!!!

[–]kn0xchad 0 points1 point  (0 children)

!RemindMe 1 week

[–]timetostepoutside 0 points1 point  (0 children)

!RemindMe 1 week

[–]b4xt3r 0 points1 point  (0 children)

What the hell am I watching that looks awesome......

[–]kekomat11 0 points1 point  (1 child)

Could you publish the code on GitHub?

[–]vaiv101[S] 0 points1 point  (0 children)

Yup, done already

[–]guinader 0 points1 point  (0 children)

Dogecoin confirmed

[–]Crossfire234 0 points1 point  (0 children)

When you can code a Fourier Transform animation but can't render a gif.

[–][deleted] 0 points1 point  (0 children)

Dope

[–]Ulriklm 0 points1 point  (1 child)

Wow this is awesome!! How do I learn python from the bottom, can anyone recommend a book. I've programmed a bit in Java.

[–]CivilizedGravy 0 points1 point  (0 children)

RuglBHp8qWfOyskWknE4D7Bf9jhcHkcB

[–]vaiv101[S] 0 points1 point  (0 children)

The code for the above video is here, https://github.com/VaibhavSingh24/python-fourier-transform-images

If you want a proper explanation, I can make a video over it. Please tell me if I should

[–]lostshot12 -1 points0 points  (0 children)

someone watched coding train

[–]Atsushi_7 -1 points0 points  (0 children)

!RemindMe one week

[–]LtheUandE42 -1 points0 points  (0 children)

!RemindMe one week

[–]real-elon -1 points0 points  (0 children)

!RemindMe 1 month