Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. class BezierSurface {
  2.     mat4 geoMatrix[3];
  3.  
  4. public:
  5.     void init() {
  6.         geoMatrix[0] = mat4(    0.0f, 0.0f, 0.0f, 0.0f,
  7.                                 0.33f, 0.33f, 0.33f, 0.33f,
  8.                                 0.66f, 0.66f, 0.66f, 0.66f,
  9.                                 1.0f, 1.0f, 1.0f, 1.0f);
  10.  
  11.         geoMatrix[1] = mat4(    0.0f, 0.33f, 0.66f, 1.0f,
  12.                                 0.0f, 0.33f, 0.66f, 1.0f,
  13.                                 0.0f, 0.33f, 0.66f, 1.0f,
  14.                                 0.0f, 0.33f, 0.66f, 1.0f);
  15.  
  16.         geoMatrix[2] = mat4(    5.8f, 18.6f, 81.4f, 84.6f,
  17.                                 31.0f, 12.1f, 20.6, 54.0f,
  18.                                 52.0f, 14.1f, 13.2f, 378.12f,
  19.                                 20.0f, 20.1f, 12.0f, 611.23f);
  20.  
  21.         printf("%f",y(0.0f, 0.33f));
  22.     }
  23.  
  24.     float x(float u, float v) {
  25.         float temp = 0.0f;
  26.         for (int i = 0; i < 4; i++) {
  27.             for (int j = 0; j < 4; j++) {
  28.                 temp += geoMatrix[0].m[i][j] * Bers(i, u) * Bers(j, v);
  29.             }
  30.         }
  31.         return temp;
  32.     }
  33.  
  34.     float y(float u, float v) {
  35.         float temp = 0.0f;
  36.         for (int i = 0; i < 4; i++) {
  37.             for (int j = 0; j < 4; j++) {
  38.                 return geoMatrix[1].m[i][j] * Bers(i, u) * Bers(j, v);
  39.             }
  40.         }
  41.         return temp;
  42.     }
  43.  
  44.     float z(float u, float v) {
  45.         float temp = 0.0f;
  46.         for (int i = 0; i < 4; i++) {
  47.             for (int j = 0; j < 4; j++) {
  48.                 return geoMatrix[2].m[i][j] * Bers(i, u) * Bers(j, v);
  49.             }
  50.         }
  51.         return temp;
  52.     }
  53.  
  54.     float Bers(int i, float uv) {
  55.         switch (i){
  56.         case 0: return((1 - uv)*(1 - uv)*(1 - uv));
  57.                 break;
  58.         case 1: return((3 * uv)*((1 - uv)*(1 - uv)));
  59.                 break;
  60.         case 2: return((3 * (uv*uv))*(1 - uv));
  61.                 break;
  62.         case 3: return(uv * uv * uv);
  63.                 break;
  64.         }
  65.     }
  66. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement