60 lines
1.4 KiB
Plaintext
60 lines
1.4 KiB
Plaintext
GrBitMap *base=GrNew(grbase2);
|
|
|
|
void DrawIt()
|
|
{
|
|
ClearWindowText;
|
|
base->pen_width=2;
|
|
base->color=GR_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;
|
|
U8 sc,ch;
|
|
U4 *old_update_window=Fs->update_window;
|
|
Fs->update_window=&DrawIt;
|
|
|
|
base->x=200;
|
|
base->y=200;
|
|
base->flags|=BMF_TRANSFORMATION;
|
|
while (TRUE) {
|
|
if (ScanChar(&sc,&ch)) break;
|
|
r1=GrTheta(theta);
|
|
r2=GrPhi(phi);
|
|
r3=GrTheta(zeta);
|
|
r4=GrMulMat(r1,r2);
|
|
r5=GrMulMat(r4,r3);
|
|
Free(base->r);
|
|
base->r=GrScaleMat(r5,s);
|
|
Free(r1);
|
|
Free(r2);
|
|
Free(r3);
|
|
Free(r4);
|
|
Free(r5);
|
|
|
|
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_window=old_update_window;
|
|
}
|
|
|
|
Box; |