Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int segments = 32;
- int sides = 32;
- float radius1 = 2.0f;
- float radius2 = 0.5f;
- for (int i = 0; i < segments; ++i)
- {
- for (int j = 0; j < sides; ++j)
- {
- float theta1 = -DirectX::XM_2PI * i / (segments - 1) + 2 * DirectX::XM_PIDIV2;
- float phi1 = -DirectX::XM_2PI * j / sides;
- float theta2 = DirectX::XM_PI * i / (segments - 1);
- float phi2 = -DirectX::XM_2PI * j / sides;
- Vertex v1((radius1 + radius2 * std::cosf(theta1)) * std::cosf(phi1), (radius1 + radius2 * std::cosf(theta1)) * std::sinf(phi1), radius2 * std::sinf(theta1), (float)i / segments, (float)j / sides);
- Vertex v2(std::cosf(phi2) * std::sinf(theta2) * radius1, std::sinf(phi2) * std::sinf(theta2) * radius1, std::cosf(theta2) * radius1, (float)i / segments, (float)j / sides);
- m_Vertices.push_back(VertexLerp(v1, v2, morphFactor));
- if (i < sides - 1)
- {
- unsigned int jplus1 = (j == sides - 1) ? 0 : (j + 1);
- m_Indices.push_back((i + 1) * sides + j);
- m_Indices.push_back(i * sides + j);
- m_Indices.push_back(i * sides + jplus1);
- m_Indices.push_back((i + 1) * sides + j);
- m_Indices.push_back(i * sides + jplus1);
- m_Indices.push_back((i + 1) * sides + jplus1);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement