Advertisement
Guest User

Untitled

a guest
Mar 17th, 2014
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.82 KB | None | 0 0
  1.     m_planes[0] = vector<glm::vec4>(m_size * m_size);
  2.     m_planes[1] = vector<glm::vec4>(m_size * m_size);
  3.  
  4.     for (unsigned i = 0; i < m_size; i++)
  5.     {
  6.         for (unsigned j = 0; j < m_size; j++)
  7.         {
  8.             unsigned int index = i * (m_size + 1) + j;
  9.  
  10.             glm::vec3 triangle1[] =
  11.             {
  12.                 vertices[index],
  13.                 vertices[index + (m_size + 1)],
  14.                 vertices[index + 1]
  15.             };
  16.  
  17.             glm::vec3 triangle2[] =
  18.             {
  19.                 vertices[index + (m_size + 1) + 1],
  20.                 vertices[index + 1],
  21.                 vertices[index + (m_size + 1)]
  22.             };
  23.  
  24.             glm::vec3 triangleNormal1 = glm::normalize(glm::cross(triangle1[1] - triangle1[0], triangle1[2] - triangle1[0]));
  25.             glm::vec3 triangleNormal2 = glm::normalize(glm::cross(triangle2[1] - triangle2[0], triangle2[2] - triangle2[0]));
  26.  
  27.             m_planes[0][i * m_size + j] = glm::vec4(triangleNormal1, triangleNormal1.x * triangle1[2].x + triangleNormal1.y * triangle1[2].y + triangleNormal1.z * triangle1[2].z);
  28.             m_planes[1][i * m_size + j] = glm::vec4(triangleNormal2, triangleNormal2.x * triangle1[2].x + triangleNormal2.y * triangle1[2].y + triangleNormal2.z * triangle1[2].z);
  29.         }
  30.     }
  31.  
  32.     vector<glm::vec3> normals = vector<glm::vec3>(Size);
  33.  
  34.     for (unsigned i = 0; i < m_size + 1; i++)
  35.     {
  36.         for (unsigned j = 0; j < m_size + 1; j++)
  37.         {
  38.             glm::vec3 normal = glm::vec3(0.0f);
  39.  
  40.             if (j != 0 && i != 0)
  41.                 normal += glm::vec3(m_planes[1][(i - 1) * m_size + (j - 1)]);
  42.             if (i != 0 && j != m_size)
  43.                 normal += glm::vec3(m_planes[0][(i - 1) * m_size + j]) + glm::vec3(m_planes[1][(i - 1) * m_size + j]);
  44.             if (i != m_size && j != m_size)
  45.                 normal += glm::vec3(m_planes[0][i * m_size + j]);
  46.             if (i != m_size && j != 0)
  47.                 normal += glm::vec3(m_planes[0][i * m_size + (j - 1)]) + glm::vec3(m_planes[1][i * m_size + (j - 1)]);
  48.  
  49.             normal = glm::normalize(normal);
  50.  
  51.             normals[i * (m_size + 1) + j] = normal;
  52.         }
  53.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement