Just something small for Valentines day. I found the formula for a heart shaped curve on the Wolfram website and wanted to animate the line that draws these points with d3.js.
I actually had in mind to make the line disappear again after a few seconds, so it would seem like a snake passing between the points, but I couldn’t find how to do this, so I just let the lines be. Now the end result reminds me of those spirographs from my childhood.
The formula for the heart curve, where t
is in radians (I used a step size of 1), is
![](../../../img/blog/2015/heart-curve/heart_curve_formula.png)
Which translates to the following loop to create the data in JavaScript
var x, y;
var data = [];
for (var i = 0; i < 350; i++) {
t = i*0.1;
x = 16 * Math.pow(Math.sin(t),3);
y = 13 * Math.cos(t) - 5* Math.cos(2*t) - 2 * Math.cos(3*t) - Math.cos(4*t)
data[i] = [x,y];
}//for i
If you make the steps for t
small enough, you get an actual heart without the lines all over the place, but I quite liked the extra element. For completeness, here is what the line would look like with steps of 0.1
![](../../../img/blog/2015/heart-curve/heart_curve.png)
Here is the complete code for the animated line and for the one line. Happy Valentine’s Day!