My favorites
▼
|
Sign in
barteksplayground
Misc project from Bartek Drozdz [www.everydayflash.com]
Project Home
Downloads
Source
Checkout
Browse
Changes
Source path:
svn
/
trunk
/
fp10
/
src
/
com
/
everydayflash
/
cart
/
points3d
/
Points3D2.as
‹r27
r29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package com.everydayflash.cart.points3d {
import com.everydayflash.cart.core.AbstractSketch;
import com.everydayflash.cart.core.Pixel3D;
import flash.display.BitmapData;
import flash.events.MouseEvent;
import flash.filters.BlurFilter;
import flash.geom.ColorTransform;
import flash.geom.Matrix3D;
import flash.geom.PerspectiveProjection;
import flash.geom.Point;
import flash.geom.Vector3D;
/**
* @author bartekd
*/
public class Points3D2 extends AbstractSketch {
private var pts:Vector.<Pixel3D>;
private var projection:Matrix3D;
private var angleX:Number = 0;
private var angleY:Number = 0;
private var matrix:Matrix3D;
[Embed (source="pattern.png")]
private var Pattern:Class;
private var pattern:BitmapData;
override protected function init():void {
var p:PerspectiveProjection = new PerspectiveProjection();
p.focalLength = 400;
projection = p.toMatrix3D();
matrix = new Matrix3D();
pts = new Vector.<Pixel3D>();
pattern = new Pattern().bitmapData;
var rd:Number = 200;
for (var i:int = 0; i < 2500; i++) {
var r:Pixel3D = new Pixel3D(rdpos, rdpos, rdpos);
r.color = pattern.getPixel(i % 50, i / 50);
r.normalize();
r.x *= rd;
r.y *= rd;
r.z *= rd;
pts.push(r);
}
}
override protected function mouseDown(e:MouseEvent):void {
var rd:Number = 150 * Math.random();
for (var i:int = 0; i < 2500; i++) {
var r:Pixel3D = pts[i];
r.normalize();
r.x *= rd;
r.y *= rd;
r.z *= rd;
}
}
private function get rdpos():Number {
return 1 - (Math.random() * 2);
}
override protected function draw():void {
// clearBCanvas();
bcanvas.applyFilter(bcanvas, bcanvas.rect, new Point(), new BlurFilter(4,4,1));
bcanvas.colorTransform(bcanvas.rect, new ColorTransform(1,1,1,.8));
angleX -= (mouseX - sw/2) / sw/2 * 10;
angleY += (mouseY - sh/2) / sh/2 * 10;
for (var i:int = 0;i < pts.length; i++) {
matrix.identity();
matrix.appendRotation(angleX, new Vector3D(0, 0, 1));
matrix.appendRotation(angleY, new Vector3D(1, 0, 0));
matrix.appendTranslation(0, 0, 350);
var v:Pixel3D = pts[i];
var iv:Vector3D = matrix.transformVector(v);
var vz:Number = 1 - (iv.z / 500);
vz = Math.min(1, vz);
vz = Math.max(0, vz);
iv = projection.transformVector(iv);
iv.project();
var c:uint = (vz * 255) << 24 | v.color;
drawParticle(sw / 2 + iv.x, sh/2 + iv.y, c);
}
}
private function drawParticle(x:Number, y:Number, c:uint):void {
bcanvas.setPixel32(x, y, c);
bcanvas.setPixel32(x-1, y, c);
bcanvas.setPixel32(x, y-1, c);
bcanvas.setPixel32(x+1, y, c);
bcanvas.setPixel32(x, y+1, c);
}
}
}
Show details
Hide details
Change log
r29
by drojdjou on Apr 23, 2009
Diff
[No log message]
Go to:
...flash/cart/points3d/Points3D2.as
...src/com/everydayflash/playground
Project members,
sign in
to write a code review
Older revisions
r27
by drojdjou on Apr 23, 2009
Diff
[No log message]
r20
by drojdjou on Mar 15, 2009
Diff
[No log message]
All revisions of this file
File info
Size: 2868 bytes, 113 lines
View raw file
Powered by
Google Project Hosting