C_chess/3d.h

166 lines
4 KiB
C

# define M_PI 3.14159265358979323846 /* pi */
#define CNT 10
float k;
int width, height;
float vretices_4[CNT*3][3];
//float texCoord_2[] = {0,1, 1,1, 1,0, 0,0};
GLuint index_L_3[CNT*3*3+1][2];
void SAS(){
float x,y;
int v = CNT;
float l = 0.30;
float a = M_PI * 2 / CNT;
for (int i = 0; i < CNT; i++){
x = sin(a*i) * l;
y = cos(a*i) * l;
vretices_4[i][0] = x;
vretices_4[i][1] = y;
vretices_4[i][2] = 0;
}
l = 0.15;
for (int i = 0; i < CNT; i++){
x = sin(a*i) * l;
y = cos(a*i) * l;
vretices_4[v+i][0] = x;
vretices_4[v+i][1] = y;
vretices_4[v+i][2] = 0.6;
}
v = v + CNT;
l = 0.2;
for (int q = 0; q < CNT; q++){
x = sin(a*q) * l;
y = cos(a*q) * l;
vretices_4[v+q][0] = x;
vretices_4[v+q][1] = y;
vretices_4[v+q][2] = 0.8;
}
v = v + CNT;
vretices_4[v][0] = 0;
vretices_4[v][1] = 0;
vretices_4[v][2] = 0.9;
v++;
vretices_4[v][0] = 0;
vretices_4[v][1] = 0;
vretices_4[v][2] = 0;
int i = 0, nnn;
for (int m = 0; m != 3; m++){
nnn = i;
for (int b = 0; b <= CNT-2; i++, b++){
index_L_3[i][0] = i;
index_L_3[i][1] = i+1;
}
index_L_3[i][0] = i;
index_L_3[i][1] = nnn;
i++;
}
nnn = i;
int M = i;
i = 0;
for (int b = 0; b <= CNT-1; i++, b++, nnn++){
index_L_3[nnn][0] = i;
index_L_3[nnn][1] = i+CNT;
nnn++;
index_L_3[nnn][0] = i;
index_L_3[nnn][1] = M+1;
nnn++;
if (b != 0){
index_L_3[nnn][0] = i;
index_L_3[nnn][1] = i+CNT-1;
}
else{
index_L_3[nnn][0] = i;
index_L_3[nnn][1] = i+CNT+CNT-1;
}
}
for (int b = 0; b <= CNT-1; i++, b++, nnn++){
index_L_3[nnn][0] = i;
index_L_3[nnn][1] = i+CNT;
nnn++;
index_L_3[nnn][1] = i+CNT;
index_L_3[nnn][0] = M;
nnn++;
if (b != 0){
index_L_3[nnn][0] = i;
index_L_3[nnn][1] = i+CNT-1;
}
else{
index_L_3[nnn][0] = i;
index_L_3[nnn][1] = i+CNT+CNT-1;
}
}
index_L_3[nnn][1] = M;
index_L_3[nnn][0] = M+1;
}
unsigned int texsture_target;
/*
void glTexParam(){
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);// GL_CLAMP
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);// GL_REPEAT
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);// GL_NEAREST
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);// GL_LINEAR
}
*/
void render_figure_2(){
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0 , &vretices_4);
glDrawElements(GL_LINES, sizeof(index_L_3) / sizeof(index_L_3[0][0]), GL_UNSIGNED_INT, &index_L_3);
// GL_LINES GL_TRIANGLE_FAN
glDisableClientState(GL_VERTEX_ARRAY);
}
//float i = 0, q = 0;
float i = 0;
/*
void render(void){
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glutPostRedisplay();
glPushMatrix();
glColor3f(1,1,1);
glLoadIdentity();
glFrustum(-k,k, -1,1, 2, 50);
glTranslatef(0,0,-3);
glRotatef(q+=0.2,1,0,1);
glLineWidth(2);
glColor3f(0.1f,0.8f,0.0f);
render_figure_2();
glutSwapBuffers();
glFlush();
usleep(1000000/144);
}
*/
/*
void ChangeWindow(int width_l, int height_l){
width = width_l;
height = height_l;
printf("width: %i width: %i\n", width, height);
glViewport(0,0, width, height);
glLoadIdentity();
k = width / (float)height;
glOrtho(-k,k, -1,1, -1,1);
}
int main(int argc, char** argv){
SAS();
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowSize(800, 800);
glutInitWindowPosition(100, 100);
glutCreateWindow("Hello world!");
glutDisplayFunc(render);
glutReshapeFunc(ChangeWindow);
glutMainLoop();
return 0;
}
*/