Work finished long ago, simple examples of Rober Penner's Vector3d.
SOURCE(as1 timeline code 3 in 1)
//============================//
//timeline code actionscript1 //
//============================//
//Robert Penner's "vector3d_class.as" can be found
//here: http://www.robertpenner.com/profmx/
//==========================
//grass
//==========================
#include "vector3d_class.as"
Vector3d.prototype.createOvalPoly=function(a,b,NumPts,rotation){
var Pts=[];
var angle=2*Math.PI/NumPts;
for(i=0;i<=NumPts-1;i++){
Pts.push(new Vector3d(this.x+a*Math.cos(angle*i+rotation),this.y,this.z+b*Math.sin(angle*i+rotation)));
}
return Pts;
};
Vector3d.prototype.rotateYnew = function (angle) {
with (Math) {
var ca = cos(angle*Math.PI/180);
var sa = sin(angle*Math.PI/180);
}
with (this) {
var tempX = x * ca + z * sa;
var tempZ = x * -sa + z * ca;
}
return new Vector3d(tempX,this.y,tempZ);
};
MovieClip.prototype.curveToPts=function(p1,p2){
this.curveTo(p1.x,p1.y,p2.x,p2.y);
};
var a1=[];
var a2=[];
var a3=[];
var a4=[];
var a5=[];
var a6=[];
var a7=[];
var a8=[];
a1o=new Vector3d(300,300,100);
a1=a1o.createOvalPoly(100,100,4,0);
a3o=new Vector3d(a1o.x,a1o.y-150,a1o.z);
a3=a3o.createOvalPoly(80,80,6,0);
a2o=new Vector3d((a1o.x+a3o.x)/2,(a1o.y+a3o.y)/2,(a1o.z+a3o.z)/2);
a2=a2o.createOvalPoly(50,50,4,0);
a8o=new Vector3d(a1o.x,a1o.y-20,a1o.z);
a4o=new Vector3d((a3o.x+a8o.x)/2,(a3o.y+a8o.y)/2,(a3o.z+a8o.z)/2);
a4=a2o.createOvalPoly(50,50,6,0);
for(i=0;i<=3;i++){
a1[i].y=a1[i].y-120;
}
for(i=0;i<=5;i++){
a5[i]=a4[i].rotateYnew(10);
a6[i]=a4[i].rotateYnew(-10);
}
for(i=0;i<=3;i++){
a7[i]=a2[i].rotateYnew(5);
a8[i]=a2[i].rotateYnew(-5);
}
//project all
this.lineStyle(2,0x0000FF);
this.onEnterFrame=function(){
if(a1o.x<=-60){
a1o=new Vector3d(_xmouse,_ymouse,100);
a1=a1o.createOvalPoly(100,100,4,0);
a3o=new Vector3d(a1o.x,a1o.y-150,a1o.z);
a3=a3o.createOvalPoly(80,80,6,0);
a2o=new Vector3d((a1o.x+a3o.x)/2,(a1o.y+a3o.y)/2,(a1o.z+a3o.z)/2);
a2=a2o.createOvalPoly(50,50,4,0);
a8o=new Vector3d(a1o.x,a1o.y-20,a1o.z);
a4o=new Vector3d((a3o.x+a8o.x)/2,(a3o.y+a8o.y)/2,(a3o.z+a8o.z)/2);
a4=a2o.createOvalPoly(50,50,6,0);
for(i=0;i<=3;i++){
a1[i].y=a1[i].y-120;
}
for(i=0;i<=5;i++){
a5[i]=a4[i].rotateYnew(10);
a6[i]=a4[i].rotateYnew(-10);
}
for(i=0;i<=3;i++){
a7[i]=a2[i].rotateYnew(5);
a8[i]=a2[i].rotateYnew(-5);
}
}
else{
a1o.rotateY(_xmouse/1000);
a2o.rotateY(_xmouse/1000);
a3o.rotateY(_xmouse/1000);
a1o.rotateZ(_ymouse/1000);
a2o.rotateZ(_ymouse/1000);
a3o.rotateZ(_ymouse/1000);
for(i=0;i<=3;i++){
a1[i].rotateY(_xmouse/1000);
a7[i].rotateY(_xmouse/1000);
a8[i].rotateY(_xmouse/1000);
a1[i].rotateZ(_ymouse/1000);
a7[i].rotateZ(_ymouse/1000);
a8[i].rotateZ(_ymouse/1000);
}
for(i=0;i<=5;i++){
a3[i].rotateY(_xmouse/1000);
a5[i].rotateY(_xmouse/1000);
a6[i].rotateY(_xmouse/1000);
a3[i].rotateZ(_ymouse/1000);
a5[i].rotateZ(_ymouse/1000);
a6[i].rotateZ(_ymouse/1000);
}
}
a1o.perProject();
a2o.perProject();
a3o.perProject();
for(i=0;i<=3;i++){
a1[i].perProject();
a7[i].perProject();
a8[i].perProject();
}
for(i=0;i<=5;i++){
a3[i].perProject();
a5[i].perProject();
a6[i].perProject();
}
this.clear();
this.lineStyle(2,0x0000FF);
this.moveTo(a1o.x,a1o.y);
this.curveToPts(a2o,a3o);
for(i=0;i<=3;i++){
this.moveTo(a1o.x,a1o.y);
this.curveToPts(a7[i],a1[i]);
this.moveTo(a1o.x,a1o.y);
this.curveToPts(a8[i],a1[i]);
}
for(i=0;i<=5;i++){
this.moveTo(a3o.x,a3o.y);
this.curveToPts(a5[i],a3[i]);
this.moveTo(a3o.x,a3o.y);
this.curveToPts(a6[i],a3[i]);
}
}
//==========================
//cube
//==========================
#include "vector3d_class.as"
Vector3d.prototype.createOvalPoly=function(a,b,NumPts,rotation){
var Pts=[];
var angle=2*Math.PI/NumPts;
for(i=0;i<=NumPts-1;i++){
Pts.push(new Vector3d(this.x+a*Math.cos(angle*i+rotation),this.y,this.z+b*Math.sin(angle*i+rotation)));
}
return Pts;
};
MovieClip.prototype.curveToPts=function(p1,p2){
this.curveTo(p1.x,p1.y,p2.x,p2.y);
};
var p=new Vector3d(100,200,0);
var q=new Vector3d(100,100,0);
var x=[];
var y=[];
var z=[];
var o=new Vector3d((p.x+q.x)/2,(p.y+q.y)/2,(p.z+q.z)/2);
x=p.createOvalPoly(50,50,4,0);
y=q.createOvalPoly(50,50,4,0);
z=o.createOvalPoly(60,60,4,0);
this.lineStyle(2,0x0000FF);
this.onEnterFrame=function(){
this.clear();
this.beginFill(0x00CC22,40);
for(i=0;i<=3;i++){
if(Key.isDown(Key.UP)){x[i].rotateY(1);
y[i].rotateY(1);
z[i].rotateY(1);
}
if(Key.isDown(Key.DOWN)){x[i].rotateZ(1);
y[i].rotateZ(1);
z[i].rotateZ(1);
}
x[i].rotateY(_xmouse/20);
y[i].rotateY(_xmouse/20);
z[i].rotateY(_xmouse/20);
x[i].rotateZ(_ymouse/20);
y[i].rotateZ(_ymouse/20);
z[i].rotateZ(_ymouse/20);
x[i].perProject();
y[i].perProject();
z[i].perProject();
this.lineStyle(2,0x0000FF);
this.moveTo(y[i].x,y[i].y);
this.curveToPts(z[i],x[i]);
}
for(i=0;i<=2;i++){
this.beginFill(0x00CC22,40);
this.moveTo(y[i].x,y[i].y);
this.lineTo(x[i].x,x[i].y);
this.lineTo(x[i+1].x,x[i+1].y);
this.lineTo(y[i+1].x,y[i+1].y);
}
this.beginFill(0x00CC22,40);
this.moveTo(y[3].x,y[3].y);
this.lineTo(x[3].x,x[3].y);
this.lineTo(x[0].x,x[0].y);
this.lineTo(y[0].x,y[0].y);
this.endFill();
}
//==========================
//curve
//==========================
//frame1
#include "vector3d_class.as"
Vector3d.prototype.createOvalPoly=function(a,b,NumPts,rotation){
var Pts=[];
var angle=2*Math.PI/NumPts;
for(i=0;i<=NumPts-1;i++){
Pts.push(new Vector3d(this.x+a*Math.cos(angle*i+rotation),this.y,this.z+b*Math.sin(angle*i+rotation)));
}
return Pts;
};
MovieClip.prototype.curveToPts=function(p1,p2){
this.curveTo(p1.x,p1.y,p2.x,p2.y);
};
var p=new Vector3d(100,200,0);
var q=new Vector3d(100,100,0);
var x=[];
var y=[];
var z=[];
var o=new Vector3d((p.x+q.x)/2,(p.y+q.y)/2,(p.z+q.z)/2);
x=p.createOvalPoly(50,50,4,0);
y=q.createOvalPoly(50,50,4,0);
z=o.createOvalPoly(60,60,4,0);
this.lineStyle(2,0x0000FF);
this.onEnterFrame=function(){
this.clear();
for(i=0;i<=3;i++){
if(Key.isDown(Key.UP)){x[i].rotateY(1);
y[i].rotateY(1);
z[i].rotateY(1);
}
if(Key.isDown(Key.DOWN)){x[i].rotateZ(1);
y[i].rotateZ(1);
z[i].rotateZ(1);
}
x[i].rotateY(_xmouse/20);
y[i].rotateY(_xmouse/20);
z[i].rotateY(_xmouse/20);
x[i].perProject();
y[i].perProject();
z[i].perProject();
this.lineStyle(2,0x0000FF);
this.moveTo(y[i].x,y[i].y);
this.curveToPts(z[i],x[i]);}
}
//frame50
#include "vector3d_class.as"
Vector3d.prototype.createOvalPoly=function(a,b,NumPts,rotation){
var Pts=[];
var angle=2*Math.PI/NumPts;
for(i=0;i<=NumPts-1;i++){
Pts.push(new Vector3d(this.x+a*Math.cos(angle*i+rotation),this.y,this.z+b*Math.sin(angle*i+rotation)));
}
return Pts;
};
MovieClip.prototype.curveToPts=function(p1,p2){
this.curveTo(p1.x,p1.y,p2.x,p2.y);
};
var p=new Vector3d(300,200,0);
var q=new Vector3d(300,250,0);
var x=[];
var y=[];
var z=[];
var o=new Vector3d((p.x+q.x)/2,(p.y+q.y)/2,(p.z+q.z)/2);
x=p.createOvalPoly(50,50,4,0);
y=q.createOvalPoly(50,50,4,0);
z=o.createOvalPoly(60,60,4,0);
this.lineStyle(2,0x0000FF);
this.onEnterFrame=function(){
for(i=0;i<=3;i++){
if(Key.isDown(Key.UP)){x[i].rotateY(1);
y[i].rotateY(1);
z[i].rotateY(1);
}
if(Key.isDown(Key.DOWN)){x[i].rotateZ(1);
y[i].rotateZ(1);
z[i].rotateZ(1);
}
x[i].rotateY(_xmouse/20);
y[i].rotateY(_xmouse/20);
z[i].rotateY(_xmouse/20);
y[i].perProject();
z[i].perProject();
this.lineStyle(2,0x0000FF);
this.moveTo(y[i].x,y[i].y);
this.curveToPts(z[i],x[i]);}
}
//frame90
#include "vector3d_class.as"
Vector3d.prototype.createOvalPoly=function(a,b,NumPts,rotation){
var Pts=[];
var angle=2*Math.PI/NumPts;
for(i=0;i<=NumPts-1;i++){
Pts.push(new Vector3d(this.x+a*Math.cos(angle*i+rotation),this.y,this.z+b*Math.sin(angle*i+rotation)));
}
return Pts;
};
MovieClip.prototype.curveToPts=function(p1,p2){
this.curveTo(p1.x,p1.y,p2.x,p2.y);
};
var p=new Vector3d(500,200,0);
var q=new Vector3d(500,250,0);
var x=[];
var y=[];
var z=[];
var o=new Vector3d((p.x+q.x)/2,(p.y+q.y)/2,(p.z+q.z)/2);
x=p.createOvalPoly(50,50,4,0);
y=q.createOvalPoly(50,50,4,0);
z=o.createOvalPoly(60,60,4,0);
this.lineStyle(2,0x0000FF);
this.onEnterFrame=function(){
for(i=0;i<=3;i++){
if(Key.isDown(Key.UP)){x[i].rotateY(1);
y[i].rotateY(1);
z[i].rotateY(1);
}
if(Key.isDown(Key.DOWN)){x[i].rotateZ(1);
y[i].rotateZ(1);
z[i].rotateZ(1);
}
x[i].rotateY(_xmouse/20);
y[i].rotateY(_xmouse/20);
z[i].rotateY(_xmouse/20);
x[i].rotateZ(_ymouse/20);
y[i].rotateZ(_ymouse/20);
z[i].rotateZ(_ymouse/20);
x[i].perProject();
y[i].perProject();
z[i].perProject();
this.lineStyle(2,0x0000FF);
this.moveTo(y[i].x,y[i].y);
this.curveToPts(z[i],x[i]);}
}
Book: Robert Penner's Programming Macromedia Flash MX
Cracking piece of writing.
ReplyDeleteThis definitely makes great sense to me!!
ReplyDelete