Files
TempleOS-Rijn/LT/DEMO/Graphics/Box.CPZ
T
2018-09-08 21:45:17 +02:00

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;