Jump to content

  • Log In with Google      Sign In   
  • Create Account


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.

  • You cannot reply to this topic
2 replies to this topic

#1 montify   Members   -  Reputation: 365

Like
0Likes
Like

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?

Please help me

Sponsor:

#2 montify   Members   -  Reputation: 365

Like
0Likes
Like

Posted 12 November 2012 - 04:36 AM

Hello

I started a new experiment

Posted Image


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]


Please help me :/

#3 montify   Members   -  Reputation: 365

Like
0Likes
Like

Posted 13 November 2012 - 02:39 PM

Solved!
Posted Image




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.



PARTNERS