U0 Main() { F64 theta = 0, phi = 0, omega = 0; CD3I32 poly[4]; CDC *dc = DCAlias; DCDepthBufAlloc(dc); dc->flags |= DCF_TRANSFORMATION | DCF_SYMMETRY; try { while (!CharScan) { DCDepthBufReset(dc); DCSymmetrySet(dc, Fs->pix_width / 2, Fs->pix_height / 2, mouse.pos.x - Fs->pix_left - Fs->scroll_x, mouse.pos.y - Fs->pix_top - Fs->scroll_y); dc->color = LTBLUE; GrLine(dc, Fs->pix_width / 2, Fs->pix_height / 2, mouse.pos.x - Fs->pix_left - Fs->scroll_x, mouse.pos.y - Fs->pix_top - Fs->scroll_y); Mat4x4IdentEqu(dc->r); Mat4x4RotX(dc->r, omega); Mat4x4RotY(dc->r, phi); Mat4x4RotZ(dc->r, theta); DCMat4x4Set(dc, dc->r); dc->x = Fs->pix_width / 2; dc->y = Fs->pix_height / 2; dc->z = 500; dc->color = GREEN; poly[0].x = 50; poly[0].y = 150; poly[0].z = 0; poly[1].x = 275; poly[1].y = 100; poly[1].z = 0; poly[2].x = 155; poly[2].y = 200; poly[2].z = 0; poly[3].x = 100; poly[3].y = 200; poly[3].z = 0; GrFillPoly3(dc, 4, poly); dc->color = RED; poly[0].x = 50; poly[0].y = 150; poly[0].z = 50; poly[1].x = 275; poly[1].y = 100; poly[1].z = 50; poly[2].x = 155; poly[2].y = 200; poly[2].z = 50; poly[3].x = 100; poly[3].y = 200; poly[3].z = 50; GrFillPoly3(dc, 4, poly); dc->color = BLUE; poly[0].x = 50; poly[0].y = 150; poly[0].z = -50; poly[1].x = 275; poly[1].y = 100; poly[1].z = -50; poly[2].x = 155; poly[2].y = 200; poly[2].z = -50; poly[3].x = 100; poly[3].y = 200; poly[3].z = -50; GrFillPoly3(dc, 4, poly); dc->color = RED + GREEN << 16 + ROPF_DITHER; poly[0].x = 50; poly[0].y = 150; poly[0].z = 50; poly[1].x = 275; poly[1].y = 100; poly[1].z = 50; poly[2].x = 275; poly[2].y = 100; poly[2].z = 0; poly[3].x = 50; poly[3].y = 150; poly[3].z = 0; GrFillPoly3(dc, 4, poly); dc->color = BLUE + GREEN << 16 + ROPF_DITHER; poly[0].x = 100; poly[0].y = 200; poly[0].z = -50; poly[1].x = 155; poly[1].y = 200; poly[1].z = -50; poly[2].x = 155; poly[2].y = 200; poly[2].z = 0; poly[3].x = 100; poly[3].y = 200; poly[3].z = 0; GrFillPoly3(dc, 4, poly); Refresh; DCFill; theta += 2.1 * pi / 180.0; phi += 1.1 * pi / 180.0; omega += 0.5 * pi / 180.0; } } catch PutExcept; DCFill; DCDel(dc); } Main;