# Sphere texture mapping

Hi at all,

I am a newbye developer on OpenGL and I have to develop an sphere with texture mapping for have a result like this:

Virtual Tour

I am making a porting of a application and the code I am using isn’t totally write by me, for this reason I have some doubts.
This is the code for the sphere generation:

``````
public Sphere(int space, float radius, float H,float K,float Z, Bitmap image){

this.totalVertexCount = (((90 / space) * (360 / space) * 4) * 2);
this.pVertices = Vertice.getArray(totalVertexCount);
this.pNormal = Texture.getArray(totalVertexCount);
this.textures_ids = IntBuffer.allocate(2);
this.image = image;
int n;
double a;
double b;
int tcount;
n = 0;

for( b = 0; b <= 180 - space; b+=space){
tcount = 360;
for( a = 0; a <= 360 - space; a+=space, tcount-=space){

pVertices[n].X = (float) (radius * Math.sin((a) / 180 * Math.PI) * Math.sin((b) / 180 * Math.PI) - H);
pVertices[n].Z = (float) (radius * Math.cos((a) / 180 * Math.PI) * Math.sin((b) / 180 * Math.PI) + K);
pVertices[n].Y = (float) (radius * Math.cos((b) / 180 * Math.PI) - Z);
pNormal[n].V = (float)   ((2.0f * b) / 360.0f);
pNormal[n].U = (float)   ((2.0* tcount) / 360.0f);

if(pNormal[n].U>=1.0 && a<=180-space)
pNormal[n].U -= 1.0;

n++;

pVertices[n].X = (float) (radius * Math.sin((a) / 180 * Math.PI) * Math.sin((b + space) / 180 * Math.PI) - H);
pVertices[n].Z = (float) (radius * Math.cos((a) / 180 * Math.PI) * Math.sin((b + space) / 180 * Math.PI) + K);
pVertices[n].Y = (float) (radius * Math.cos((b + space) / 180 * Math.PI) - Z);

pNormal[n].V = (float) ((2.0f * (b + space)) / 360.0f);
pNormal[n].U = (float) ((2.0* tcount) / 360.0f);

if(pNormal[n].U>=1.0 && a<=180-space)
pNormal[n].U -= 1.0;

n++;

pVertices[n].X = (float) (radius * Math.sin((a + space) / 180 * Math.PI) * Math.sin((b) / 180 * Math.PI) - H);
pVertices[n].Z = (float) (radius * Math.cos((a + space) / 180 * Math.PI) * Math.sin((b) / 180 * Math.PI) + K);
pVertices[n].Y = (float) (radius * Math.cos((b) / 180 * Math.PI) - Z);
pNormal[n].V = (float) ((2.0f * b) / 360.0f);
pNormal[n].U = (float) (2.0*( tcount - space) / 360.0f);

if(pNormal[n].U>=1.0 && a<=180-space)
pNormal[n].U -= 1.0;

n++;

pVertices[n].X = (float) (radius * Math.sin((a + space) / 180 * Math.PI) * Math.sin((b + space) / 180 * Math.PI) - H);
pVertices[n].Z = (float) (radius * Math.cos((a + space) / 180 * Math.PI) * Math.sin((b + space) / 180 * Math.PI) + K);
pVertices[n].Y = (float) (radius * Math.cos((b + space) / 180 * Math.PI) - Z);
pNormal[n].V = (float) ((2.0f * (b + space)) / 360.0f);
pNormal[n].U = (float) (2.0*( tcount - space) / 360.0f);

if(pNormal[n].U>=1.0 && a<=180-space)
pNormal[n].U -= 1.0;

n++;

}

}
[fill buffer and other stuff]
}
``````

I am really sure that the points are correct but I am not sure about normal, the problems is result:

What’s wrong:

1. Points or Normal vector?
2. Order with points of the sphere are generated?
3. Some other stuff?