Flash, will you be my Valentines?

heart I refuse to celebrate a corporate holiday sponsored by the diamond industry and chocolate companies by purchasing a bunch of crap to further perpetuate the Valentine Industrial Complex. But that doesn’t mean I can’t celebrate in my own way by playing around with some trig and polar coordinates using Away3D to draw hearts in 3D space.

Here’s the simple version

[kml_flashembed movie=”http://polygeek.com/flex/3512_Heart/_3512_SimpleHeart.swf” width=”550″ height=”700″ wmode=”normal” allowfullscreen=”true”/]
view source

The Heart equation
Thanks to an anonymous submission at Mathworld.Wolfram.com I had the algebraic equation to work with without having to rediscover it on my own. Programmatically it looks like this:

var r : Number =  2 - 2 * Math.sin( t ) +
			Math.sin( t ) * Math.sqrt( Math.abs( Math.cos( t ) ) )
			/ ( Math.sin( t ) + 7/5 );

You can see that someone put it a lot of tweaking to get this just right.

Symbolically the equation looks like this:

heart equation

Here’s the code for the loop that draws the dots.

private function drawHeart():void {
	for( var t:Number = 0; t < Math.PI * 2; t+= 0.01 ) {
		var pixel : Sprite3D = makeParticle();
		var r : Number =  2 - 2 * Math.sin( t ) +
			Math.sin( t ) * Math.sqrt( Math.abs( Math.cos( t ) ) )
			/ ( Math.sin( t ) + 7/5 );
		// multiply by 80 to spread out the dots.
		pixel.x = r * 80 * Math.cos( t );
		pixel.y = r * 80 * Math.sin( t );
		_view3D.scene.addSprite( pixel );
	}
}

Here’s a version that draws hearts in a heart patterns.

[kml_flashembed movie=”http://polygeek.com/flex/3512_Heart/_3512_ComplexHeart.swf” width=”550″ height=”700″ wmode=”normal” allowfullscreen=”true”/]
view source

I kept the heart count down in the example above so that the rotations wouldn’t be too chunky. ( Is Molehill out yet? I want it now, Now, NOW! )

I’m not sure why it looks like part of the heart slides into a shadow when it rotates to certain angels. I didn’t do that in Chrome when I was working on it.

Below are a few screen captures using many more hearts.

heart
heart
heart

What do you think?

6 thoughts on “Flash, will you be my Valentines?

  1. Your algebraic equation is going to blast the Valentine Industrial Complex onto their backsides! Happy Valentine's Day and nice work!

Leave a Reply

Your email address will not be published. Required fields are marked *