temp_normal = vertices[v_index].subtract(vertices[v_index + 1]).cross(vertices[v_index + 1].subtract(vertices[v_index + 2])).normalize();
if (outsideView)
temp_normal = temp_normal.negate();
normals[v_index] = normals[v_index + 1] = normals[v_index + 2] = normals[v_index + 3] = temp_normal;
texCoord[v_index] = new Vector2f(0, 0);
texCoord[v_index + 1] = new Vector2f(0, 1);
texCoord[v_index + 2] = new Vector2f(1, 1);
texCoord[v_index + 3] = new Vector2f(1, 0);
if (outsideView) {
indexes[i_index] = v_index;
indexes[i_index + 1] = v_index + 3;
indexes[i_index + 2] = v_index + 1;
indexes[i_index + 3] = v_index + 1;
indexes[i_index + 4] = v_index + 3;
indexes[i_index + 5] = v_index + 2;
}
else {
indexes[i_index] = v_index;
indexes[i_index + 1] = v_index + 1;
indexes[i_index + 2] = v_index + 2;
indexes[i_index + 3] = v_index + 2;
indexes[i_index + 4] = v_index + 3;
indexes[i_index + 5] = v_index;
}
i_index += 6;
v_index += 4;
}
}
// Calculate vertices and determine indexes for the top tier.
for (int i = 0; i < radialSamples; i++) {
vertices[v_index] = World.toCartesian(azimuth[i], elevation[elevation.length - 2], radius);
vertices[v_index + 1] = new Vector3f(0, radius, 0);
vertices[v_index + 2] = World.toCartesian(azimuth[i + 1], elevation[elevation.length - 2], radius);
temp_normal = vertices[v_index].subtract(vertices[v_index + 1]).cross(vertices[v_index + 1].subtract(vertices[v_index + 2])).normalize();
if (outsideView)
temp_normal = temp_normal.negate();
normals[v_index] = normals[v_index + 1] = normals[v_index + 2] = temp_normal;
texCoord[v_index] = new Vector2f(0, 0);
texCoord[v_index] = new Vector2f(0.5f, 1);
texCoord[v_index] = new Vector2f(1, 0);
if (outsideView) {
indexes[i_index] = v_index;
indexes[i_index + 1] = v_index + 2;
indexes[i_index + 2] = v_index + 1;