• FEATURED
• FEATURED
• FEATURED
• FEATURED
• FEATURED

View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

# Cube2Sphere

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

2 replies to this topic

### #1montify  Members

Posted 07 November 2012 - 08:36 AM

Hello everyone.

Im working on a Sphere out of 6 Planes...

But i have no Idea how to Implemet it.

Here's little Math: http://mathproofs.bl...-to-sphere.html

And here is my Code for the Vertex Plane (at the moment only one Plane)

[source lang="csharp"] vertices = new VertexPositionColor[256 * 256]; int index = 0; for (int z = 0; z < 256; z++) { for (int x = 0; x < 256; x++) { vertices[z * 256 + x].Position.X = x * 90.0f; vertices[z * 256 + x].Position.Y = 3; vertices[z * 256 + x].Position.Z = z * 90.0f; vertices[z * 256 + x].Color = Color.White; } vertexBuffer = new VertexBuffer(gDevice, typeof(VertexPositionColor), 256 * 256, BufferUsage.WriteOnly); this.vertexBuffer.SetData<VertexPositionColor>(vertices); }[/source]

next, the IndexBuffer

[source lang="csharp"] int[] indices = new int[255 * 255 * 6]; index = 0; for (int z = 0; z < 255; z++) { for (int x = 0; x < 255; x++) { indices[index + 0] = z * 256 + x; indices[index + 1] = indices[index + 0] + 256 + 1; indices[index + 2] = indices[index + 0] + 256; indices[index + 3] = indices[index + 0]; indices[index + 4] = indices[index + 0] + 1; indices[index + 5] = indices[index + 0] + 256 + 1; index += 6; } } this.indexBuffer = new IndexBuffer(gDevice , IndexElementSize.ThirtyTwoBits, 255 * 255 * 6, BufferUsage.WriteOnly); this.indexBuffer.SetData<int>(indices);[/source]

so now the Math says for the X Axis:

[source lang="csharp"](Math.Sqrt(1 - (Math.Pow(vertices[i].Position.Y, 2) / 2)- (Math.Pow(vertices[i].Position.Z, 2) / 2)+ ((Math.Pow(vertices[i].Position.Y, 2) * Math.Pow(vertices[i].Position.Z, 2)) / 3)))[/source]

But how i can Implement this in my Code?

### #2montify  Members

Posted 12 November 2012 - 04:36 AM

Hello

I started a new experiment

What im doing wrong?

VertexBuffer:
[source lang="csharp"]int index = 0; vertices = new VertexPositionColor[256* 256]; int xA = 0; int yA = 0; int scale = 100; double z = 1.0f; for (double x = -1.0f; x <= 1.0f; x = x + 0.25f) { for (double y = -1.0f; y <= 1.0f; y = y + 0.25f) { double xsphere = scale * x * Math.Sqrt(1 - (Math.Pow(y, 2) / 2) - (Math.Pow(z, 2) / 2) + ((Math.Pow(y, 2) * Math.Pow(z, 2)) / 3)); double ysphere = scale * y * Math.Sqrt(1 - (Math.Pow(z, 2) / 2) - (Math.Pow(x, 2) / 2) + ((Math.Pow(z, 2) * Math.Pow(x, 2)) / 3)); double zsphere = scale * z * Math.Sqrt(1 - (Math.Pow(x, 2) / 2) - (Math.Pow(y, 2) / 2) + ((Math.Pow(x, 2) * Math.Pow(y, 2)) / 3)); vertices[xA + yA * 9].Position = new Vector3((float)xsphere, (float)ysphere, (float)zsphere); vertices[xA + yA * 9].Color = Color.White; yA += 1; } yA = 0; xA = xA + 1; }vertexBuffer = new VertexBuffer(gDevice, typeof(VertexPositionColor), 256 * 256, BufferUsage.WriteOnly);this.vertexBuffer.SetData<VertexPositionColor>(vertices); [/source]

IndexBuffer:

[source lang="csharp"]#region IndexBuffer index = 0; for (int a = 0; z < 255; z++) { for (int x = 0; x < 255; x++) { indices[index + 0] = a * 256 + x; indices[index + 1] = indices[index + 0] + 256 + 1; indices[index + 2] = indices[index + 0] + 256; indices[index + 3] = indices[index + 0]; indices[index + 4] = indices[index + 0] + 1; indices[index + 5] = indices[index + 0] + 256 + 1; index += 6; } } this.indexBuffer = new IndexBuffer(gDevice, IndexElementSize.ThirtyTwoBits, 255 * 255 * 6, BufferUsage.WriteOnly); this.indexBuffer.SetData<int>(indices); #endregion [/source]

### #3montify  Members

Posted 13 November 2012 - 02:39 PM

Solved!

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.