58 lines
1.4 KiB
Plaintext
58 lines
1.4 KiB
Plaintext
GrBitMap *base=GrAlias(grbase2,Fs);
|
|
|
|
void DrawIt(TssStruct *tss)
|
|
{
|
|
ClearWinText(tss);
|
|
base->pen_width=2;
|
|
base->color=RED;
|
|
GrLine3(base,-100,-100,-100, -100, 100,-100);
|
|
GrLine3(base,-100, 100,-100, 100, 100,-100);
|
|
GrLine3(base, 100, 100,-100, 100,-100,-100);
|
|
GrLine3(base, 100,-100,-100, -100,-100,-100);
|
|
GrLine3(base,-100,-100, 100, -100, 100, 100);
|
|
GrLine3(base,-100, 100, 100, 100, 100, 100);
|
|
GrLine3(base, 100, 100, 100, 100,-100, 100);
|
|
GrLine3(base, 100,-100, 100, -100,-100, 100);
|
|
GrLine3(base,-100,-100, 100, -100,-100,-100);
|
|
GrLine3(base,-100, 100, 100, -100, 100,-100);
|
|
GrLine3(base, 100, 100, 100, 100, 100,-100);
|
|
GrLine3(base, 100,-100, 100, 100,-100,-100);
|
|
}
|
|
|
|
void Box()
|
|
{
|
|
double theta=0,phi=0,zeta=0,s=1,s1=1.05;
|
|
I8 *r1,*r2,*r3,*r4,*r5,*r6;
|
|
void *old_update=Fs->update_win;
|
|
Fs->update_win=&DrawIt;
|
|
|
|
base->x=200;
|
|
base->y=200;
|
|
base->flags|=BMF_TRANSFORMATION;
|
|
while (!ScanKey) {
|
|
r1=GrTheta(theta);
|
|
r2=GrPhi(phi);
|
|
r3=GrTheta(zeta);
|
|
r4=GrMulMat(r1,r2);
|
|
r5=GrMulMat(r4,r3);
|
|
r6=base->r;
|
|
base->r=GrScaleMat(r5,s);
|
|
Free(r1);
|
|
Free(r2);
|
|
Free(r3);
|
|
Free(r4);
|
|
Free(r5);
|
|
Free(r6);
|
|
|
|
Sleep(60);
|
|
theta+=pi2/70;
|
|
phi +=pi2/90;
|
|
zeta +=pi2/110;
|
|
s *=s1;
|
|
if (s<0.2|| s>1.4) s1=1/s1;
|
|
}
|
|
Fs->update_win=old_update;
|
|
}
|
|
|
|
Box;
|
|
|