#include #include #include #include static void side(int x0, int y0, int z0, int x1, int y1, int z1, int x2, int y2, int z2) { printf("( %d %d %d ) ( %d %d %d ) ( %d %d %d ) " "mtrl/invisible 0 0 0 0.500000 0.500000 0 0 0\n", x0, y0, z0, x1, y1, z1, x2, y2, z2); } static void lump(int r0, int r1, double a0, double a1) { int x00 = (int) ceil(r0 * cos(M_PI * a0 / 180.0)); int y00 = (int) ceil(r0 * sin(M_PI * a0 / 180.0)); int x10 = (int) ceil(r1 * cos(M_PI * a0 / 180.0)); int y10 = (int) ceil(r1 * sin(M_PI * a0 / 180.0)); int x01 = (int) ceil(r0 * cos(M_PI * a1 / 180.0)); int y01 = (int) ceil(r0 * sin(M_PI * a1 / 180.0)); int x11 = (int) ceil(r1 * cos(M_PI * a1 / 180.0)); int y11 = (int) ceil(r1 * sin(M_PI * a1 / 180.0)); int z0 = 0; int z1 = 256; printf("{\n"); side(x00, y00, z0, x01, y01, z0, x00, y00, z1); side(x10, y10, z1, x11, y11, z1, x10, y10, z0); side(x00, y00, z1, x10, y10, z1, x00, y00, z0); side(x01, y01, z0, x11, y11, z0, x01, y01, z1); side(0, 0, z0, 1, 0, z0, 0, 1, z0); side(0, 0, z1, 0, 1, z1, 1, 0, z1); printf("}\n"); } int main(int argc, char *argv[]) { int r0 = 128; int r1 = 256; int n = 8; int a0 = 0; int a1 = 90; int i; if (argc > 1 && strcmp(argv[1], "-?") == 0) fprintf(stderr, "Usage: %s \n", argv[0]); else { if (argc > 1) r0 = atoi(argv[1]); if (argc > 2) r1 = atoi(argv[2]); if (argc > 3) n = atoi(argv[3]); if (argc > 4) a0 = atoi(argv[4]); if (argc > 5) a1 = atoi(argv[5]); printf("{\n"); printf("\"classname\" \"worldspawn\"\n"); for (i = 0; i < n; i++) { double ai0 = (double) (i ) * (a1 - a0) / n + a0; double ai1 = (double) (i + 1) * (a1 - a0) / n + a0; lump(r0, r1, ai0, ai1); } printf("}\n"); } return 0; }