Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class BezierSurface {
- mat4 geoMatrix[3];
- public:
- void init() {
- geoMatrix[0] = mat4( 0.0f, 0.0f, 0.0f, 0.0f,
- 0.33f, 0.33f, 0.33f, 0.33f,
- 0.66f, 0.66f, 0.66f, 0.66f,
- 1.0f, 1.0f, 1.0f, 1.0f);
- geoMatrix[1] = mat4( 0.0f, 0.33f, 0.66f, 1.0f,
- 0.0f, 0.33f, 0.66f, 1.0f,
- 0.0f, 0.33f, 0.66f, 1.0f,
- 0.0f, 0.33f, 0.66f, 1.0f);
- geoMatrix[2] = mat4( 5.8f, 18.6f, 81.4f, 84.6f,
- 31.0f, 12.1f, 20.6, 54.0f,
- 52.0f, 14.1f, 13.2f, 378.12f,
- 20.0f, 20.1f, 12.0f, 611.23f);
- printf("%f",y(0.0f, 0.33f));
- }
- float x(float u, float v) {
- float temp = 0.0f;
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
- temp += geoMatrix[0].m[i][j] * Bers(i, u) * Bers(j, v);
- }
- }
- return temp;
- }
- float y(float u, float v) {
- float temp = 0.0f;
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
- return geoMatrix[1].m[i][j] * Bers(i, u) * Bers(j, v);
- }
- }
- return temp;
- }
- float z(float u, float v) {
- float temp = 0.0f;
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
- return geoMatrix[2].m[i][j] * Bers(i, u) * Bers(j, v);
- }
- }
- return temp;
- }
- float Bers(int i, float uv) {
- switch (i){
- case 0: return((1 - uv)*(1 - uv)*(1 - uv));
- break;
- case 1: return((3 * uv)*((1 - uv)*(1 - uv)));
- break;
- case 2: return((3 * (uv*uv))*(1 - uv));
- break;
- case 3: return(uv * uv * uv);
- break;
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement