📄 shapes.c
字号:
/* shapes.c
Mason Woo, 1999 with modification of code by Nate Robins, 1997 Tool for teaching about OpenGL primitives. */#include <math.h>#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#include <string.h>#include <GL/glut.h>
#pragma comment( linker, "/entry:\"mainCRTStartup\"" ) // set the entry point to be main()
typedef struct _cell { int id; int x, y; float min, max; float value; float step; char* info; char* format;} cell;
#define MESSAGEY 455
cell lines[2*3+4*2] = { { 1, 120, 60, 0.0f, 1.0f, 1.0f, 0.005f, "Specifies red component of a color.", "%.2f" }, { 2, 180, 60, 0.0f, 1.0f, 1.0f, 0.005f, "Specifies green component of a color.", "%.2f" }, { 3, 240, 60, 0.0f, 1.0f, 1.0f, 0.005f, "Specifies blue component of a color.", "%.2f" },
{ 4, 120, 90, 0.0f, 200.0f, 50.0f, 1.0f, "Specifies x component of a vertex.", "%.1f" },
{ 5, 180, 90, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 6, 120, 120, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 7, 180, 120, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 8, 120, 150, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 9, 180, 150, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 10, 240, 150, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 11, 120, 180, 0.0f, 200.0f, 150.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 12, 180, 180, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 13, 120, 210, 0.0f, 200.0f, 200.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 14, 180, 210, 0.0f, 200.0f, 150.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" }};
cell shadeFour[4*3+4*2] = {
{ 15, 120, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 16, 180, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 17, 240, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 18, 120, 90, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 19, 180, 90, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 20, 120, 120, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 21, 180, 120, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 22, 240, 120, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 23, 120, 150, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 24, 180, 150, 0.0f, 200.0f, 150.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 25, 120, 180, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 26, 180, 180, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 27, 240, 180, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 28, 120, 210, 0.0f, 200.0f, 200.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 29, 180, 210, 0.0f, 200.0f, 200.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 30, 120, 240, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 31, 180, 240, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 32, 240, 240, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 33, 120, 270, 0.0f, 200.0f, 150.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 34, 180, 270, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" }
};
cell flatFour[1*3+4*2] = {
{ 35, 120, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 36, 180, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 37, 240, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 38, 120, 90, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 39, 180, 90, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 40, 120, 120, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 41, 180, 120, 0.0f, 200.0f, 150.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 42, 120, 150, 0.0f, 200.0f, 200.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 43, 180, 150, 0.0f, 200.0f, 200.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 44, 120, 180, 0.0f, 200.0f, 150.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 45, 180, 180, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" }
};
cell shadeThree[3*3+3*2] = {
{ 46, 120, 60, 0.0f, 1.0f, 0.5f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 47, 180, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 48, 240, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 49, 120, 90, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 50, 180, 90, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 51, 120, 120, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 52, 180, 120, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 53, 240, 120, 0.0f, 1.0f, 0.5f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 54, 120, 150, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 55, 180, 150, 0.0f, 200.0f, 150.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 56, 120, 180, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 57, 180, 180, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 58, 240, 180, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 59, 120, 210, 0.0f, 200.0f, 200.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 60, 180, 210, 0.0f, 200.0f, 200.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" }
};
cell flatThree[1*3+3*2] = {
{ 61, 120, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 62, 180, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 63, 240, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 64, 120, 90, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 65, 180, 90, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 66, 120, 120, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 67, 180, 120, 0.0f, 200.0f, 150.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 68, 120, 150, 0.0f, 200.0f, 200.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 69, 180, 150, 0.0f, 200.0f, 200.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" }
};
cell shadeQStrip[6*3+6*2] = {
{ 70, 120, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 71, 180, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 72, 240, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 73, 120, 90, 0.0f, 200.0f, 25.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 74, 180, 90, 0.0f, 200.0f, 25.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 75, 120, 120, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 76, 180, 120, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 77, 240, 120, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 78, 120, 150, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 79, 180, 150, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 80, 120, 180, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 81, 180, 180, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 82, 240, 180, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 83, 120, 210, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 84, 180, 210, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 85, 120, 240, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 86, 180, 240, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 87, 240, 240, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 88, 120, 270, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 89, 180, 270, 0.0f, 200.0f, 75.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 90, 120, 300, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 91, 180, 300, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 92, 240, 300, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 93, 120, 330, 0.0f, 200.0f, 150.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 94, 180, 330, 0.0f, 200.0f, 25.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 95, 120, 360, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 96, 180, 360, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 97, 240, 360, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 98, 120, 390, 0.0f, 200.0f, 175.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 99, 180, 390, 0.0f, 200.0f, 125.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" }
};
cell shadePoints[6*3+6*2] = {
{ 100, 120, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 101, 180, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 102, 240, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 103, 120, 90, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 104, 180, 90, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 105, 120, 120, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 106, 180, 120, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 107, 240, 120, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 108, 120, 150, 0.0f, 200.0f, 200.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 109, 180, 150, 0.0f, 200.0f, 175.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 110, 120, 180, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 111, 180, 180, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 112, 240, 180, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 113, 120, 210, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 114, 180, 210, 0.0f, 200.0f, 200.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 115, 120, 240, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 116, 180, 240, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 117, 240, 240, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 118, 120, 270, 0.0f, 200.0f, 150.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 119, 180, 270, 0.0f, 200.0f, 150.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 120, 120, 300, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 121, 180, 300, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 122, 240, 300, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 123, 120, 330, 0.0f, 200.0f, 75.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 124, 180, 330, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 125, 120, 360, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 126, 180, 360, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 127, 240, 360, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 128, 120, 390, 0.0f, 200.0f, 175.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 129, 180, 390, 0.0f, 200.0f, 75.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" }
};
cell tStrip[4*3+4*2] = {
{ 130, 120, 60, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 131, 180, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 132, 240, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 133, 120, 90, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 134, 180, 90, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 135, 120, 120, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 136, 180, 120, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 137, 240, 120, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 138, 120, 150, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 139, 180, 150, 0.0f, 200.0f, 150.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 140, 120, 180, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 141, 180, 180, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 142, 240, 180, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 143, 120, 210, 0.0f, 200.0f, 175.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 144, 180, 210, 0.0f, 200.0f, 25.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 145, 120, 240, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 146, 180, 240, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 147, 240, 240, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 148, 120, 270, 0.0f, 200.0f, 150.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 149, 180, 270, 0.0f, 200.0f, 175.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" }
};
cell tFan[4*3+4*2] = {
{ 150, 120, 60, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 151, 180, 60, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 152, 240, 60, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 153, 120, 90, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 154, 180, 90, 0.0f, 200.0f, 50.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 155, 120, 120, 0.0f, 1.0f, 0.0f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 156, 180, 120, 0.0f, 1.0f, 0.5f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 157, 240, 120, 0.0f, 1.0f, 1.0f, 0.005f,
"Specifies blue component of a color.", "%.2f" },
{ 158, 120, 150, 0.0f, 200.0f, 100.0f, 1.0f,
"Specifies x component of a vertex.", "%.1f" },
{ 159, 180, 150, 0.0f, 200.0f, 150.0f, 1.0f,
"Specifies y component of a vertex.", "%.1f" },
{ 160, 120, 180, 0.0f, 1.0f, 0.5f, 0.005f,
"Specifies red component of a color.", "%.2f" },
{ 161, 180, 180, 0.0f, 1.0f, 0.5f, 0.005f,
"Specifies green component of a color.", "%.2f" },
{ 162, 240, 180, 0.0f, 1.0f, 1.0f, 0.005f,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -