There is scope for refactoring in this port(such as replacing each with more powerful methods). My first priority was to get it working. Now that it does, I will refactor the code sometime soon, hopefully.
I ported the code from the Python for Fun series’ article entitled Waves and Harmonics. This port still has some rough edges, no pun intended, and not tested very well(see the disclaimers below). It is located on the Box widget to your left with the label ploty.rb. It can be run by typing in ruby ploty.rb. The code is licensed under GPLv2
To actually “explore the Fourier series”, please go ahead and read the original article above. I don’t have the time and patience to go into that after porting this thing–the Ruby/Tk canvas binding was not that intuitive to me(which is rare, most ruby packages I have run into are very intuitive). I had to hunt and peck through Google to find out more about TkcLine, etc.
It turns out, that this is a good collection of scripts–just source code–mostly English, some Japanese strings are there sometimes:
Here’s a screenshot
Unfortunately, the Mac version doesn’t take advantage of anti-aliased rendering.
NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.