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

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;