Another Height Map experiment – subtly different from the wireframe. The wireframe is visually more interesting, perhaps, but this one is more beautiful.
Category: Programming
Wireframe Height Map
Rearranging a Few Things
Click the image to launch the experiment.
This is an earlier experiment which I have re-posted in order to test some new TextPattern functionality. Well, new to me, anyway. I want to have my Flash experiments plugged into my blogging software, and at the same time have them appear in a minimal interface which allows for movies of any arbitrary size. I also wanted to have comments enabled for the experiments. So over the next little while there will be several experiments – some old, some new – posted here, in order to, at long last, enter them officially into the site.
A New Flash Experiment
Click the image to launch the experiment.
This is a thing which I suppose I have been working on for almost a year and a half: An isometric view, rotating height map created only using the built-in capabilities of Flash 9. Well, I have been kicking the idea around for a year and a half. I began to build something out in Flash 8 late last summer, but as soon as the new plug-in was released, it stopped working. This new version I built from scratch in about a week.
Click on the above screenshot to see it in action. Warning: It is quite processor intensive. It won’t crash your computer, but you will probably hear all of the fans kick on. And the file is less than 2k in size.
Some New Stuff
I have been doing a lot of Flash work lately, so in an effort to shamelessly promote my talents I now have an experiments section. You can see the button at the top of the page, nestled in between “About” and “Links”
Also: As of November 1, 2007, BBK Studio (my former and current place of employment) is now People Design. We ushered in the new era with a grand party at the new Grand Rapids Art Museum, which is big and beautiful (as is their website, which we built).
120
I have just updated the Grand Rapids Crime Map for the first time since, I think, May. I now have 120 incidents located.
This round of updates includes several teenagers being shot, a couple of bank robberies, the attempted rape of an 85 year old woman and the attempted robbery of a 72 year old man. You may have heard of that last on from the national news.
Oh yeah. And an officer killed in the line of duty. For some reason, that one bothered me more than the rest. Maybe because it was the only violent crime (other than the 85-year-old woman) where the victim definitely didn’t have it coming.
If Grand Rapids doesn’t fucking chill out soon, I may have to build a content management system for my pet project just to keep up with the idiocy.
Argh.
And Another One!
Click here to launch the experiment.
I figured out how to implement double buffering in Flash this morning, and this is the result: 500 particles, with transparency and a blur filter.
If this seems to run slow, click on the headline to this article to open the Flash movie in a page where it isn’t competing for resources with the other experiments.
Another One. This is Too Much Fun!
Click here to launch the experiment.
This is 100 particles following a simple curve formula. Anything repeated 100 times is going to be kind of interesting.
Second Flash Experiment in A Long Time
First Flash Experiment in a Long Time
Here it is. My first real experiment in Flash 9.
Because, first and foremost, Flash is a trip toy.
Code for this experiment here:
package { import flash.display.*; import flash.events.Event; import flash.geom.*; import flash.filters.BlurFilter; public class BitmapRotate2 extends Sprite { private var _graphic:PolyStar; private var _graphic2:PolyStar; private var _bitmap:BitmapData; private var _image:Bitmap; private var _m:Matrix; private var _blurFilter:BlurFilter; private var xSpeed:Number = .9; private var ySpeed:Number = 1.1; public function BitmapRotate2() { _graphic = new PolyStar(0,0,7,false,50,30,0,0xff0000,100,0x0000ff,100); _m = _graphic.transform.matrix; _blurFilter = new BlurFilter(); addEventListener(Event.ENTER_FRAME,registerStage); } public function registerStage(event:Event) { if(stage) { removeEventListener(Event.ENTER_FRAME,registerStage); _graphic.x = 0 _graphic.y = 0; _bitmap = new BitmapData(stage.stageWidth,stage.stageHeight,true,0xff000000); _image = new Bitmap(_bitmap); _m = _graphic.transform.matrix; _graphic2 = new PolyStar(stage.stageWidth/2,stage.stageHeight/2,9,true,stage.stageWidth/2-20,stage.stageWidth/6,0,0xff0000,100,0xff0000,0); addChild(_image); addEventListener(Event.ENTER_FRAME,onEnterFrame); } } private function onEnterFrame(event:Event) { _graphic.rotation+=5; _graphic.x = mouseX; _graphic.y = mouseY; _m = _graphic.transform.matrix; _bitmap.draw(_graphic,_graphic.transform.matrix); _bitmap.draw(_graphic2,_graphic2.transform.matrix); _bitmap.applyFilter(_bitmap,_bitmap.rect,new Point(),_blurFilter); } } }
The “PolyStar” class is here:
package { import flash.display.Shape public class PolyStar extends Shape{ public function PolyStar($x:Number,$y:Number,$points:Number,$vertical:Boolean,$outerRad:Number,$innerRad:Number,$lineW:Number,$lineC:Number,$lineA:Number,$bgC,$bgA:Number) { var points:Number = $points*2; var angleDelta:Number = (Math.PI*2 / points); var angle:Number = 0; var anglex:Number = 0; var angley:Number = 0; graphics.lineStyle($lineW,$lineC,$lineA); if(typeof($bgC)=="number") { graphics.beginFill($bgC,$bgA); } else { graphics.beginGradientFill($bgC.type,$bgC.colors,$bgC.alphas,$bgC.ratios,$bgC.matrix); } if($vertical != true) { graphics.moveTo($outerRad,0); } else { graphics.moveTo(//change orientation of polygon Math.cos(angle + (angleDelta/2)) * $outerRad, Math.sin(angle + (angleDelta/2)) * $outerRad ); } for(var i=0;i<points;i++) br=""> angle += angleDelta; var temp:Number = (i%2) ? $outerRad: $innerRad; if($vertical != true) { anglex = Math.cos(angle) * temp; angley = Math.sin(angle) * temp; } else {//change orientation of polygon anglex = Math.cos(angle + (angleDelta/2)) * temp; angley = Math.sin(angle + (angleDelta/2)) * temp; } graphics.lineTo(anglex,angley); } x = $x; y = $y; } } }
Enjoy!