# what's lacking for non-Escher-like appearance?

my “prepare” function looks like this:

``````
double t; int i;
double dt = (2*M_PI)/numberOfColorStrips;

vertexArray = calloc(4*numberOfColorStrips, 3*sizeof(double));
normalArray = calloc(4*numberOfColorStrips, 3*sizeof(double));
colorArray = calloc(4*numberOfColorStrips, 3*sizeof(double));

first = calloc(numberOfColorStrips, sizeof(int));
count = calloc(numberOfColorStrips, sizeof(int));

for ( i=0; i<numberOfColorStrips; i++ ){
count[i] = 4;
}

BOOL up = YES;

for ( t = 0, i=0; t <= 2*M_PI; t += dt, i+=6) {
if ( up ){
vertexArray[i] = sin(t);
vertexArray[i+1] = -h;
vertexArray[i+2] = cos(t);

vertexArray[i+3] = sin(t);
vertexArray[i+4] = +h;
vertexArray[i+5] = cos(t);

up = NO;

} else {
vertexArray[i] = sin(t);
vertexArray[i+1] = +h;
vertexArray[i+2] = cos(t);

vertexArray[i+3] = sin(t);
vertexArray[i+4] = -h;
vertexArray[i+5] = cos(t);

up = YES;

}

colorArray[i  ] = colorArray[i+3] = (random()%256)/256.0;
colorArray[i+1] = colorArray[i+4] =  (random()%256)/256.0;
colorArray[i+2] = colorArray[i+5] =  (random()%256)/256.0;

double d1[3], d2[3];
d1[0] = vertexArray[i] -  vertexArray[i+3];
d1[1] = vertexArray[i+1] - vertexArray[i+4];
d1[2] = vertexArray[i+2] - vertexArray[i+5];

d2[0] = vertexArray[i] -  vertexArray[i-3];
d2[1] = vertexArray[i+1] - vertexArray[i-2];
d2[2] = vertexArray[i+2] - vertexArray[i-1];

normcrossprod(d1, d2, &normalArray[i]);
normcrossprod(d1, d2, &normalArray[i+3]);

first[i/6] = (i/6)*2;

}

``````

my drawRect functions looks like this:

``````
glClearColor(0.2, 0.2, 0.2, 0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);

//	glEnableClientState(GL_INDEX_ARRAY);

glVertexPointer(3, GL_DOUBLE, 0, vertexArray);
glColorPointer(3, GL_DOUBLE, 0, colorArray);
glNormalPointer(GL_DOUBLE, 0, normalArray);
//	glIndexPointer(GL_INT, 0, indexArray);

gluLookAt(-4.5, 4.0, -3.0,
0.0, 0.0, 0.0,
-2.0, 1.0, 0.0);