- colors in .mov file look different, it seems like red and blu are inverted.
- I change the parameters to 20 seconds at 20 frames per sec, but the animation is still 150 frame long (15fps)
I am using windows vista 64bit.
anyway... thanks a lot to the developers, version 3 has a lot of new useful features and the last beta looks very stable.
Code: Select all
startshape inizia
CF::Impure=1
CF::Size = [s 2.4]
CF::ColorDepth = 8
CF::Frame = 1
maxiter=frame()*15000
angolo=frame()*360 /2
//maxiter=1000
CF::Background = [b -.9 sat 1 h 0]
shape ambientocclusion
{
CIRCLE [s 2 b -1 sat 1 a -.925 z -.0031]
// CIRCLE [s 30 b .1 sat 1 a -.9975 z -1 ]
}
shape plot(number px, number py, number pz)
{
//ambientocclusion[s .02 x px y py z pz]
CIRCLE [s .02 x px y py z pz b (pz+1.2) sat ((-pz + .5) *1.5)]
}
shape surface(
number ax, number ay, number az,
number bx, number by, number bz,
number cx, number cy, number cz,
number iter,
number ra, number rb, number rc
)
rule .0131 {
surface(ax,ay,az, bx,by,bz, cx,cy,cz, iter, -ra, rb, rc)[]
}
rule
{
//ra=ra + 0.001
//rotation: modify here -------------------------------------------------------------------------------
/*
ra = 0
rb = .03
rc = .03
*/
//-------------------------------------------------------------------------------------------
// NOTHING INTERESTING BELOW
//-------------------------------------------------------------------------------------------
// Normalizing axixs to avoid error (a shape got too big)
va = sqrt(ax*ax + ay*ay + az*az)
ax = ax/va
ay = ay/va
az = az/va
vb = sqrt(bx*bx + by*by + bz*bz)
bx = bx/vb
by = by/vb
bz = bz/vb
vc = sqrt(cx*cx + cy*cy + cz*cz)
cx = cx/vc
cy = cy/vc
cz = cz/vc
// rotate against axis "A"
cos2=cos(ra/2)
sin2=sin(ra/2)
qw=cos2
qx=ax*sin2
qy=ay*sin2
qz=az*sin2
// rotate A axis --------------------------------------------------------------
p1x=ax
p1y=ay
p1z=az
p2x = qw*qw*p1x + 2*qy*qw*p1z - 2*qz*qw*p1y + qx*qx*p1x + 2*qy*qx*p1y + 2*qz*qx*p1z - qz*qz*p1x - qy*qy*p1x
p2y = 2*qx*qy*p1x + qy*qy*p1y + 2*qz*qy*p1z + 2*qw*qz*p1x - qz*qz*p1y + qw*qw*p1y - 2*qx*qw*p1z - qx*qx*p1y
p2z = 2*qx*qz*p1x + 2*qy*qz*p1y + qz*qz*p1z - 2*qw*qy*p1x - qy*qy*p1z + 2*qw*qx*p1y - qx*qx*p1z + qw*qw*p1z
ax=p2x
ay=p2y
az=p2z
// rotate B axis --------------------------------------------------------------
p1x=bx
p1y=by
p1z=bz
p2x = qw*qw*p1x + 2*qy*qw*p1z - 2*qz*qw*p1y + qx*qx*p1x + 2*qy*qx*p1y + 2*qz*qx*p1z - qz*qz*p1x - qy*qy*p1x
p2y = 2*qx*qy*p1x + qy*qy*p1y + 2*qz*qy*p1z + 2*qw*qz*p1x - qz*qz*p1y + qw*qw*p1y - 2*qx*qw*p1z - qx*qx*p1y
p2z = 2*qx*qz*p1x + 2*qy*qz*p1y + qz*qz*p1z - 2*qw*qy*p1x - qy*qy*p1z + 2*qw*qx*p1y - qx*qx*p1z + qw*qw*p1z
bx=p2x
by=p2y
bz=p2z
// rotate C axis --------------------------------------------------------------
p1x=cx
p1y=cy
p1z=cz
p2x = qw*qw*p1x + 2*qy*qw*p1z - 2*qz*qw*p1y + qx*qx*p1x + 2*qy*qx*p1y + 2*qz*qx*p1z - qz*qz*p1x - qy*qy*p1x
p2y = 2*qx*qy*p1x + qy*qy*p1y + 2*qz*qy*p1z + 2*qw*qz*p1x - qz*qz*p1y + qw*qw*p1y - 2*qx*qw*p1z - qx*qx*p1y
p2z = 2*qx*qz*p1x + 2*qy*qz*p1y + qz*qz*p1z - 2*qw*qy*p1x - qy*qy*p1z + 2*qw*qx*p1y - qx*qx*p1z + qw*qw*p1z
cx=p2x
cy=p2y
cz=p2z
//-------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------
// rotate against axis "B"
cos2=cos(rb/2)
sin2=sin(rb/2)
qw=cos2
qx=bx*sin2
qy=by*sin2
qz=bz*sin2
// rotate A axis --------------------------------------------------------------
p1x=ax
p1y=ay
p1z=az
p2x = qw*qw*p1x + 2*qy*qw*p1z - 2*qz*qw*p1y + qx*qx*p1x + 2*qy*qx*p1y + 2*qz*qx*p1z - qz*qz*p1x - qy*qy*p1x
p2y = 2*qx*qy*p1x + qy*qy*p1y + 2*qz*qy*p1z + 2*qw*qz*p1x - qz*qz*p1y + qw*qw*p1y - 2*qx*qw*p1z - qx*qx*p1y
p2z = 2*qx*qz*p1x + 2*qy*qz*p1y + qz*qz*p1z - 2*qw*qy*p1x - qy*qy*p1z + 2*qw*qx*p1y - qx*qx*p1z + qw*qw*p1z
ax=p2x
ay=p2y
az=p2z
// rotate B axis --------------------------------------------------------------
p1x=bx
p1y=by
p1z=bz
p2x = qw*qw*p1x + 2*qy*qw*p1z - 2*qz*qw*p1y + qx*qx*p1x + 2*qy*qx*p1y + 2*qz*qx*p1z - qz*qz*p1x - qy*qy*p1x
p2y = 2*qx*qy*p1x + qy*qy*p1y + 2*qz*qy*p1z + 2*qw*qz*p1x - qz*qz*p1y + qw*qw*p1y - 2*qx*qw*p1z - qx*qx*p1y
p2z = 2*qx*qz*p1x + 2*qy*qz*p1y + qz*qz*p1z - 2*qw*qy*p1x - qy*qy*p1z + 2*qw*qx*p1y - qx*qx*p1z + qw*qw*p1z
bx=p2x
by=p2y
bz=p2z
// rotate C axis --------------------------------------------------------------
p1x=cx
p1y=cy
p1z=cz
p2x = qw*qw*p1x + 2*qy*qw*p1z - 2*qz*qw*p1y + qx*qx*p1x + 2*qy*qx*p1y + 2*qz*qx*p1z - qz*qz*p1x - qy*qy*p1x
p2y = 2*qx*qy*p1x + qy*qy*p1y + 2*qz*qy*p1z + 2*qw*qz*p1x - qz*qz*p1y + qw*qw*p1y - 2*qx*qw*p1z - qx*qx*p1y
p2z = 2*qx*qz*p1x + 2*qy*qz*p1y + qz*qz*p1z - 2*qw*qy*p1x - qy*qy*p1z + 2*qw*qx*p1y - qx*qx*p1z + qw*qw*p1z
cx=p2x
cy=p2y
cz=p2z
//-------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------
// rotate against axis "C"
cos2=cos(rc/2)
sin2=sin(rc/2)
qw=cos2
qx=cx*sin2
qy=cy*sin2
qz=cz*sin2
// rotate A axis --------------------------------------------------------------
p1x=ax
p1y=ay
p1z=az
p2x = qw*qw*p1x + 2*qy*qw*p1z - 2*qz*qw*p1y + qx*qx*p1x + 2*qy*qx*p1y + 2*qz*qx*p1z - qz*qz*p1x - qy*qy*p1x
p2y = 2*qx*qy*p1x + qy*qy*p1y + 2*qz*qy*p1z + 2*qw*qz*p1x - qz*qz*p1y + qw*qw*p1y - 2*qx*qw*p1z - qx*qx*p1y
p2z = 2*qx*qz*p1x + 2*qy*qz*p1y + qz*qz*p1z - 2*qw*qy*p1x - qy*qy*p1z + 2*qw*qx*p1y - qx*qx*p1z + qw*qw*p1z
ax=p2x
ay=p2y
az=p2z
// rotate B axis --------------------------------------------------------------
p1x=bx
p1y=by
p1z=bz
p2x = qw*qw*p1x + 2*qy*qw*p1z - 2*qz*qw*p1y + qx*qx*p1x + 2*qy*qx*p1y + 2*qz*qx*p1z - qz*qz*p1x - qy*qy*p1x
p2y = 2*qx*qy*p1x + qy*qy*p1y + 2*qz*qy*p1z + 2*qw*qz*p1x - qz*qz*p1y + qw*qw*p1y - 2*qx*qw*p1z - qx*qx*p1y
p2z = 2*qx*qz*p1x + 2*qy*qz*p1y + qz*qz*p1z - 2*qw*qy*p1x - qy*qy*p1z + 2*qw*qx*p1y - qx*qx*p1z + qw*qw*p1z
bx=p2x
by=p2y
bz=p2z
// rotate C axis --------------------------------------------------------------
p1x=cx
p1y=cy
p1z=cz
p2x = qw*qw*p1x + 2*qy*qw*p1z - 2*qz*qw*p1y + qx*qx*p1x + 2*qy*qx*p1y + 2*qz*qx*p1z - qz*qz*p1x - qy*qy*p1x
p2y = 2*qx*qy*p1x + qy*qy*p1y + 2*qz*qy*p1z + 2*qw*qz*p1x - qz*qz*p1y + qw*qw*p1y - 2*qx*qw*p1z - qx*qx*p1y
p2z = 2*qx*qz*p1x + 2*qy*qz*p1y + qz*qz*p1z - 2*qw*qy*p1x - qy*qy*p1z + 2*qw*qx*p1y - qx*qx*p1z + qw*qw*p1z
cx=p2x
cy=p2y
cz=p2z
//-------------------------------------------------------------------------------------------
plot (ax, ay, az)[]
//plot (bx, by, bz)[]
//plot (cx, cy, cz)[]
iter=iter+1
//if (iter <maxiter) surface(ax,ay,az, bx,by,bz, cx,cy,cz, iter, ra,rb,rc)[s .99995]
if (iter <maxiter) surface(ax,ay,az, bx,by,bz, cx,cy,cz, iter, ra,rb,rc)[s .99995]
}
shape sfera
{
CIRCLE[s 1.9 b .41 sat 1 a -.85]
}
shape inizia
{
//sfera()[]
ax=0
ay=1
az=0
bx=1
by=0
bz=0
cx=0
cy=0
cz=1
//-------------------------------------------------------------------
// ROTAZIONE INIZIALE
rb = angolo
//rb=0
cos2=cos(rb/2)
sin2=sin(rb/2)
qw=cos2
qx=bx*sin2
qy=by*sin2
qz=bz*sin2
// rotate A axis --------------------------------------------------------------
p1x=ax
p1y=ay
p1z=az
p2x = qw*qw*p1x + 2*qy*qw*p1z - 2*qz*qw*p1y + qx*qx*p1x + 2*qy*qx*p1y + 2*qz*qx*p1z - qz*qz*p1x - qy*qy*p1x
p2y = 2*qx*qy*p1x + qy*qy*p1y + 2*qz*qy*p1z + 2*qw*qz*p1x - qz*qz*p1y + qw*qw*p1y - 2*qx*qw*p1z - qx*qx*p1y
p2z = 2*qx*qz*p1x + 2*qy*qz*p1y + qz*qz*p1z - 2*qw*qy*p1x - qy*qy*p1z + 2*qw*qx*p1y - qx*qx*p1z + qw*qw*p1z
ax=p2x
ay=p2y
az=p2z
// rotate C axis --------------------------------------------------------------
p1x=cx
p1y=cy
p1z=cz
p2x = qw*qw*p1x + 2*qy*qw*p1z - 2*qz*qw*p1y + qx*qx*p1x + 2*qy*qx*p1y + 2*qz*qx*p1z - qz*qz*p1x - qy*qy*p1x
p2y = 2*qx*qy*p1x + qy*qy*p1y + 2*qz*qy*p1z + 2*qw*qz*p1x - qz*qz*p1y + qw*qw*p1y - 2*qx*qw*p1z - qx*qx*p1y
p2z = 2*qx*qz*p1x + 2*qy*qz*p1y + qz*qz*p1z - 2*qw*qy*p1x - qy*qy*p1z + 2*qw*qx*p1y - qx*qx*p1z + qw*qw*p1z
cx=p2x
cy=p2y
cz=p2z
//-------------------------------------------------------------------------------------------
surface (ax,ay,az, bx,by,bz, cx,cy,cz, 0, rand_static(-1.5, 1.5), rand_static(.4, .8) , rand_static(-.1, .1))[]
}