oculus1
changeset 29:9a973ef0e2a3 tip
fixed the performance issue under MacOSX by replacing glutSolidTeapot (which
uses glEvalMesh) with my own teapot generator.
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sun, 27 Oct 2013 06:31:18 +0200 |
parents | cedf581048c7 |
children | |
files | src/bezmath.c src/bezmath.h src/main.cc src/teapot.c src/teapot.h src/teapot_data.h |
diffstat | 6 files changed, 438 insertions(+), 1 deletions(-) [+] |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/bezmath.c Sun Oct 27 06:31:18 2013 +0200 1.3 @@ -0,0 +1,93 @@ 1.4 +#include <math.h> 1.5 +#include "bezmath.h" 1.6 + 1.7 +static float bernstein(int i, float x); 1.8 + 1.9 + 1.10 +struct vec3 v3_add(struct vec3 a, struct vec3 b) 1.11 +{ 1.12 + a.x += b.x; 1.13 + a.y += b.y; 1.14 + a.z += b.z; 1.15 + return a; 1.16 +} 1.17 + 1.18 +struct vec3 v3_sub(struct vec3 a, struct vec3 b) 1.19 +{ 1.20 + a.x -= b.x; 1.21 + a.y -= b.y; 1.22 + a.z -= b.z; 1.23 + return a; 1.24 +} 1.25 + 1.26 +struct vec3 v3_cross(struct vec3 a, struct vec3 b) 1.27 +{ 1.28 + struct vec3 res; 1.29 + res.x = a.y * b.z - a.z * b.y; 1.30 + res.y = a.z * b.x - a.x * b.z; 1.31 + res.z = a.x * b.y - a.y * b.x; 1.32 + return res; 1.33 +} 1.34 + 1.35 +struct vec3 v3_normalize(struct vec3 v) 1.36 +{ 1.37 + float len = sqrt(v.x * v.x + v.y * v.y + v.z * v.z); 1.38 + v.x /= len; 1.39 + v.y /= len; 1.40 + v.z /= len; 1.41 + return v; 1.42 +} 1.43 + 1.44 +struct vec3 bezier_patch(struct vec3 *cp, float u, float v) 1.45 +{ 1.46 + int i, j; 1.47 + struct vec3 res = {0, 0, 0}; 1.48 + 1.49 + for(j=0; j<4; j++) { 1.50 + for(i=0; i<4; i++) { 1.51 + float bu = bernstein(i, u); 1.52 + float bv = bernstein(j, v); 1.53 + 1.54 + res.x += cp->x * bu * bv; 1.55 + res.y += cp->y * bu * bv; 1.56 + res.z += cp->z * bu * bv; 1.57 + 1.58 + cp++; 1.59 + } 1.60 + } 1.61 + return res; 1.62 +} 1.63 + 1.64 +#define DT 0.001 1.65 + 1.66 +struct vec3 bezier_patch_norm(struct vec3 *cp, float u, float v) 1.67 +{ 1.68 + struct vec3 tang, bitan, norm; 1.69 + 1.70 + tang = v3_sub(bezier_patch(cp, u + DT, v), bezier_patch(cp, u - DT, v)); 1.71 + bitan = v3_sub(bezier_patch(cp, u, v + DT), bezier_patch(cp, u, v - DT)); 1.72 + norm = v3_cross(tang, bitan); 1.73 + 1.74 + return v3_normalize(norm); 1.75 +} 1.76 + 1.77 + 1.78 + 1.79 +static float bernstein(int i, float x) 1.80 +{ 1.81 + float invx = 1.0 - x; 1.82 + 1.83 + switch(i) { 1.84 + case 0: 1.85 + return invx * invx * invx; 1.86 + case 1: 1.87 + return 3 * x * invx * invx; 1.88 + case 2: 1.89 + return 3 * x * x * invx; 1.90 + case 3: 1.91 + return x * x * x; 1.92 + default: 1.93 + break; 1.94 + } 1.95 + return 0; 1.96 +}
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/src/bezmath.h Sun Oct 27 06:31:18 2013 +0200 2.3 @@ -0,0 +1,24 @@ 2.4 +#ifndef BEZMATH_H_ 2.5 +#define BEZMATH_H_ 2.6 + 2.7 +struct vec3 { 2.8 + float x, y, z; 2.9 +}; 2.10 + 2.11 +#ifdef __cplusplus 2.12 +extern "C" 2.13 +#endif 2.14 + 2.15 +struct vec3 v3_add(struct vec3 a, struct vec3 b); 2.16 +struct vec3 v3_sub(struct vec3 a, struct vec3 b); 2.17 +struct vec3 v3_cross(struct vec3 a, struct vec3 b); 2.18 +struct vec3 v3_normalize(struct vec3 v); 2.19 + 2.20 +struct vec3 bezier_patch(struct vec3 *cp, float u, float v); 2.21 +struct vec3 bezier_patch_norm(struct vec3 *cp, float u, float v); 2.22 + 2.23 +#ifdef __cplusplus 2.24 +} 2.25 +#endif 2.26 + 2.27 +#endif /* BEZMATH_H_ */
3.1 --- a/src/main.cc Sat Oct 26 04:24:16 2013 +0300 3.2 +++ b/src/main.cc Sun Oct 27 06:31:18 2013 +0200 3.3 @@ -6,6 +6,7 @@ 3.4 #include "vr.h" 3.5 #include "camera.h" 3.6 #include "sdr.h" 3.7 +#include "teapot.h" 3.8 3.9 #ifdef __APPLE__ 3.10 #include <OpenGL/OpenGL.h> 3.11 @@ -330,7 +331,8 @@ 3.12 if(!tealist) { 3.13 tealist = glGenLists(1); 3.14 glNewList(tealist, GL_COMPILE); 3.15 - glutSolidTeapot(1.0); 3.16 + //glutSolidTeapot(1.0); 3.17 + bezier_teapot(1.0); 3.18 glEndList(); 3.19 } 3.20 3.21 @@ -341,6 +343,7 @@ 3.22 3.23 glFrontFace(GL_CW); 3.24 glCallList(tealist); 3.25 + //bezier_teapot(1.0); 3.26 glFrontFace(GL_CCW); 3.27 3.28 glPopMatrix();
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 4.2 +++ b/src/teapot.c Sun Oct 27 06:31:18 2013 +0200 4.3 @@ -0,0 +1,87 @@ 4.4 +#ifndef __APPLE__ 4.5 +#include <GL/gl.h> 4.6 +#else 4.7 +#include <OpenGL/gl.h> 4.8 +#endif 4.9 + 4.10 +#include "teapot.h" 4.11 +#include "teapot_data.h" 4.12 + 4.13 +static void draw_patch(struct vec3 *bez_cp, int *index, int flip, int useg, int vseg, float scale); 4.14 + 4.15 +int patch_subdivision = 6; 4.16 + 4.17 +void bezier_teapot(float scale) 4.18 +{ 4.19 + int i; 4.20 + 4.21 + scale /= 2.0; 4.22 + 4.23 + for(i=0; i<NUM_TEAPOT_PATCHES; i++) { 4.24 + float flip = teapot_part_flip[i]; 4.25 + float rot = teapot_part_rot[i]; 4.26 + 4.27 + glMatrixMode(GL_MODELVIEW); 4.28 + glPushMatrix(); 4.29 + glTranslatef(0, -3.15 * scale * 0.5, 0); 4.30 + glRotatef(rot, 0, 1, 0); 4.31 + glScalef(1, 1, flip); 4.32 + glRotatef(-90, 1, 0, 0); 4.33 + 4.34 + draw_patch(teapot_verts, teapot_index + i * 16, flip < 0.0 ? 1 : 0, patch_subdivision, patch_subdivision, scale); 4.35 + 4.36 + glPopMatrix(); 4.37 + } 4.38 +} 4.39 + 4.40 +static void draw_patch(struct vec3 *bez_cp, int *index, int flip, int useg, int vseg, float scale) 4.41 +{ 4.42 + static const float uoffs[2][4] = {{0, 0, 1, 1}, {1, 1, 0, 0}}; 4.43 + static const float voffs[4] = {0, 1, 1, 0}; 4.44 + 4.45 + int i, j, k; 4.46 + struct vec3 cp[16]; 4.47 + struct vec3 pt, n; 4.48 + float u, v; 4.49 + float du = 1.0 / useg; 4.50 + float dv = 1.0 / vseg; 4.51 + 4.52 + /* collect control points */ 4.53 + for(i=0; i<16; i++) { 4.54 + cp[i] = bez_cp[index[i]]; 4.55 + } 4.56 + 4.57 + glBegin(GL_QUADS); 4.58 + glColor3f(1, 1, 1); 4.59 + 4.60 + u = 0; 4.61 + for(i=0; i<useg; i++) { 4.62 + v = 0; 4.63 + for(j=0; j<vseg; j++) { 4.64 + 4.65 + for(k=0; k<4; k++) { 4.66 + pt = bezier_patch(cp, u + uoffs[flip][k] * du, v + voffs[k] * dv); 4.67 + 4.68 + /* top/bottom normal hack */ 4.69 + if(pt.z > 3.14) { 4.70 + n.x = n.y = 0.0f; 4.71 + n.z = 1.0f; 4.72 + } else if(pt.z < 0.00001) { 4.73 + n.x = n.y = 0.0f; 4.74 + n.z = -1.0f; 4.75 + } else { 4.76 + n = bezier_patch_norm(cp, u + uoffs[flip][k] * du, v + voffs[k] * dv); 4.77 + } 4.78 + 4.79 + glTexCoord2f(u, v); 4.80 + glNormal3f(n.x, n.y, n.z); 4.81 + glVertex3f(pt.x * scale, pt.y * scale, pt.z * scale); 4.82 + } 4.83 + 4.84 + v += dv; 4.85 + } 4.86 + u += du; 4.87 + } 4.88 + 4.89 + glEnd(); 4.90 +}
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 5.2 +++ b/src/teapot.h Sun Oct 27 06:31:18 2013 +0200 5.3 @@ -0,0 +1,16 @@ 5.4 +#ifndef TEAPOT_H_ 5.5 +#define TEAPOT_H_ 5.6 + 5.7 +extern int patch_subdivision; 5.8 + 5.9 +#ifdef __cplusplus 5.10 +extern "C" { 5.11 +#endif 5.12 + 5.13 +void bezier_teapot(float scale); 5.14 + 5.15 +#ifdef __cplusplus 5.16 +} 5.17 +#endif 5.18 + 5.19 +#endif /* TEAPOT_H_ */
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 6.2 +++ b/src/teapot_data.h Sun Oct 27 06:31:18 2013 +0200 6.3 @@ -0,0 +1,214 @@ 6.4 +#ifndef TEAPOT_DATA_H_ 6.5 +#define TEAPOT_DATA_H_ 6.6 + 6.7 +#include "bezmath.h" 6.8 + 6.9 +#define NUM_TEAPOT_INDICES (sizeof teapot_index / sizeof *teapot_index) 6.10 +#define NUM_TEAPOT_VERTS (sizeof teapot_verts / sizeof *teapot_verts) 6.11 + 6.12 +#define NUM_TEAPOT_PATCHES (NUM_TEAPOT_INDICES / 16) 6.13 + 6.14 +static float teapot_part_flip[] = { 6.15 + 1, 1, 1, 1, /* rim flip */ 6.16 + 1, 1, 1, 1, /* body1 flip */ 6.17 + 1, 1, 1, 1, /* body2 flip */ 6.18 + 1, 1, 1, 1, /* lid patch 1 flip */ 6.19 + 1, 1, 1, 1, /* lid patch 2 flip */ 6.20 + 1, -1, /* handle 1 flip */ 6.21 + 1, -1, /* handle 2 flip */ 6.22 + 1, -1, /* spout 1 flip */ 6.23 + 1, -1, /* spout 2 flip */ 6.24 + 1, 1, 1, 1 /* bottom flip */ 6.25 +}; 6.26 + 6.27 +static float teapot_part_rot[] = { 6.28 + 0, 90, 180, 270, /* rim rotations */ 6.29 + 0, 90, 180, 270, /* body patch 1 rotations */ 6.30 + 0, 90, 180, 270, /* body patch 2 rotations */ 6.31 + 0, 90, 180, 270, /* lid patch 1 rotations */ 6.32 + 0, 90, 180, 270, /* lid patch 2 rotations */ 6.33 + 0, 0, /* handle 1 rotations */ 6.34 + 0, 0, /* handle 2 rotations */ 6.35 + 0, 0, /* spout 1 rotations */ 6.36 + 0, 0, /* spout 2 rotations */ 6.37 + 0, 90, 180, 270 /* bottom rotations */ 6.38 +}; 6.39 + 6.40 + 6.41 +static int teapot_index[] = { 6.42 + /* rim */ 6.43 + 102, 103, 104, 105, 4, 5, 6, 7, 8, 6.44 + 9, 10, 11, 12, 13, 14, 15, 6.45 + 6.46 + 102, 103, 104, 105, 4, 5, 6, 7, 8, 6.47 + 9, 10, 11, 12, 13, 14, 15, 6.48 + 6.49 + 102, 103, 104, 105, 4, 5, 6, 7, 8, 6.50 + 9, 10, 11, 12, 13, 14, 15, 6.51 + 6.52 + 102, 103, 104, 105, 4, 5, 6, 7, 8, 6.53 + 9, 10, 11, 12, 13, 14, 15, 6.54 + 6.55 + /* body1 */ 6.56 + 12, 13, 14, 15, 16, 17, 18, 19, 6.57 + 20, 21, 22, 23, 24, 25, 26, 27, 6.58 + 6.59 + 12, 13, 14, 15, 16, 17, 18, 19, 6.60 + 20, 21, 22, 23, 24, 25, 26, 27, 6.61 + 6.62 + 12, 13, 14, 15, 16, 17, 18, 19, 6.63 + 20, 21, 22, 23, 24, 25, 26, 27, 6.64 + 6.65 + 12, 13, 14, 15, 16, 17, 18, 19, 6.66 + 20, 21, 22, 23, 24, 25, 26, 27, 6.67 + 6.68 + /* body 2 */ 6.69 + 24, 25, 26, 27, 29, 30, 31, 32, 6.70 + 33, 34, 35, 36, 37, 38, 39, 40, 6.71 + 6.72 + 24, 25, 26, 27, 29, 30, 31, 32, 6.73 + 33, 34, 35, 36, 37, 38, 39, 40, 6.74 + 6.75 + 24, 25, 26, 27, 29, 30, 31, 32, 6.76 + 33, 34, 35, 36, 37, 38, 39, 40, 6.77 + 6.78 + 24, 25, 26, 27, 29, 30, 31, 32, 6.79 + 33, 34, 35, 36, 37, 38, 39, 40, 6.80 + 6.81 + /* lid 1 */ 6.82 + 96, 96, 96, 96, 97, 98, 99, 100, 6.83 + 101, 101, 101, 101, 0, 1, 2, 3, 6.84 + 6.85 + 96, 96, 96, 96, 97, 98, 99, 100, 6.86 + 101, 101, 101, 101, 0, 1, 2, 3, 6.87 + 6.88 + 96, 96, 96, 96, 97, 98, 99, 100, 6.89 + 101, 101, 101, 101, 0, 1, 2, 3, 6.90 + 6.91 + 96, 96, 96, 96, 97, 98, 99, 100, 6.92 + 101, 101, 101, 101, 0, 1, 2, 3, 6.93 + 6.94 + /* lid 2 */ 6.95 + 0, 1, 2, 3, 106, 107, 108, 109, 6.96 + 110, 111, 112, 113, 114, 115, 116, 117, 6.97 + 6.98 + 0, 1, 2, 3, 106, 107, 108, 109, 6.99 + 110, 111, 112, 113, 114, 115, 116, 117, 6.100 + 6.101 + 0, 1, 2, 3, 106, 107, 108, 109, 6.102 + 110, 111, 112, 113, 114, 115, 116, 117, 6.103 + 6.104 + 0, 1, 2, 3, 106, 107, 108, 109, 6.105 + 110, 111, 112, 113, 114, 115, 116, 117, 6.106 + 6.107 + /* handle 1 */ 6.108 + 41, 42, 43, 44, 45, 46, 47, 48, 6.109 + 49, 50, 51, 52, 53, 54, 55, 56, 6.110 + 6.111 + 41, 42, 43, 44, 45, 46, 47, 48, 6.112 + 49, 50, 51, 52, 53, 54, 55, 56, 6.113 + 6.114 + /* handle 2 */ 6.115 + 53, 54, 55, 56, 57, 58, 59, 60, 6.116 + 61, 62, 63, 64, 28, 65, 66, 67, 6.117 + 6.118 + 53, 54, 55, 56, 57, 58, 59, 60, 6.119 + 61, 62, 63, 64, 28, 65, 66, 67, 6.120 + 6.121 + /* spout 1 */ 6.122 + 68, 69, 70, 71, 72, 73, 74, 75, 6.123 + 76, 77, 78, 79, 80, 81, 82, 83, 6.124 + 6.125 + 68, 69, 70, 71, 72, 73, 74, 75, 6.126 + 76, 77, 78, 79, 80, 81, 82, 83, 6.127 + 6.128 + /* spout 2 */ 6.129 + 80, 81, 82, 83, 84, 85, 86, 87, 6.130 + 88, 89, 90, 91, 92, 93, 94, 95, 6.131 + 6.132 + 80, 81, 82, 83, 84, 85, 86, 87, 6.133 + 88, 89, 90, 91, 92, 93, 94, 95, 6.134 + 6.135 + /* bottom */ 6.136 + 118, 118, 118, 118, 124, 122, 119, 121, 6.137 + 123, 126, 125, 120, 40, 39, 38, 37, 6.138 + 6.139 + 118, 118, 118, 118, 124, 122, 119, 121, 6.140 + 123, 126, 125, 120, 40, 39, 38, 37, 6.141 + 6.142 + 118, 118, 118, 118, 124, 122, 119, 121, 6.143 + 123, 126, 125, 120, 40, 39, 38, 37, 6.144 + 6.145 + 118, 118, 118, 118, 124, 122, 119, 121, 6.146 + 123, 126, 125, 120, 40, 39, 38, 37 6.147 +}; 6.148 + 6.149 + 6.150 +static struct vec3 teapot_verts[] = { 6.151 + { 0.2000, 0.0000, 2.70000 }, { 0.2000, -0.1120, 2.70000 }, 6.152 + { 0.1120, -0.2000, 2.70000 }, { 0.0000, -0.2000, 2.70000 }, 6.153 + { 1.3375, 0.0000, 2.53125 }, { 1.3375, -0.7490, 2.53125 }, 6.154 + { 0.7490, -1.3375, 2.53125 }, { 0.0000, -1.3375, 2.53125 }, 6.155 + { 1.4375, 0.0000, 2.53125 }, { 1.4375, -0.8050, 2.53125 }, 6.156 + { 0.8050, -1.4375, 2.53125 }, { 0.0000, -1.4375, 2.53125 }, 6.157 + { 1.5000, 0.0000, 2.40000 }, { 1.5000, -0.8400, 2.40000 }, 6.158 + { 0.8400, -1.5000, 2.40000 }, { 0.0000, -1.5000, 2.40000 }, 6.159 + { 1.7500, 0.0000, 1.87500 }, { 1.7500, -0.9800, 1.87500 }, 6.160 + { 0.9800, -1.7500, 1.87500 }, { 0.0000, -1.7500, 1.87500 }, 6.161 + { 2.0000, 0.0000, 1.35000 }, { 2.0000, -1.1200, 1.35000 }, 6.162 + { 1.1200, -2.0000, 1.35000 }, { 0.0000, -2.0000, 1.35000 }, 6.163 + { 2.0000, 0.0000, 0.90000 }, { 2.0000, -1.1200, 0.90000 }, 6.164 + { 1.1200, -2.0000, 0.90000 }, { 0.0000, -2.0000, 0.90000 }, 6.165 + { -2.0000, 0.0000, 0.90000 }, { 2.0000, 0.0000, 0.45000 }, 6.166 + { 2.0000, -1.1200, 0.45000 }, { 1.1200, -2.0000, 0.45000 }, 6.167 + { 0.0000, -2.0000, 0.45000 }, { 1.5000, 0.0000, 0.22500 }, 6.168 + { 1.5000, -0.8400, 0.22500 }, { 0.8400, -1.5000, 0.22500 }, 6.169 + { 0.0000, -1.5000, 0.22500 }, { 1.5000, 0.0000, 0.15000 }, 6.170 + { 1.5000, -0.8400, 0.15000 }, { 0.8400, -1.5000, 0.15000 }, 6.171 + { 0.0000, -1.5000, 0.15000 }, { -1.6000, 0.0000, 2.02500 }, 6.172 + { -1.6000, -0.3000, 2.02500 }, { -1.5000, -0.3000, 2.25000 }, 6.173 + { -1.5000, 0.0000, 2.25000 }, { -2.3000, 0.0000, 2.02500 }, 6.174 + { -2.3000, -0.3000, 2.02500 }, { -2.5000, -0.3000, 2.25000 }, 6.175 + { -2.5000, 0.0000, 2.25000 }, { -2.7000, 0.0000, 2.02500 }, 6.176 + { -2.7000, -0.3000, 2.02500 }, { -3.0000, -0.3000, 2.25000 }, 6.177 + { -3.0000, 0.0000, 2.25000 }, { -2.7000, 0.0000, 1.80000 }, 6.178 + { -2.7000, -0.3000, 1.80000 }, { -3.0000, -0.3000, 1.80000 }, 6.179 + { -3.0000, 0.0000, 1.80000 }, { -2.7000, 0.0000, 1.57500 }, 6.180 + { -2.7000, -0.3000, 1.57500 }, { -3.0000, -0.3000, 1.35000 }, 6.181 + { -3.0000, 0.0000, 1.35000 }, { -2.5000, 0.0000, 1.12500 }, 6.182 + { -2.5000, -0.3000, 1.12500 }, { -2.6500, -0.3000, 0.93750 }, 6.183 + { -2.6500, 0.0000, 0.93750 }, { -2.0000, -0.3000, 0.90000 }, 6.184 + { -1.9000, -0.3000, 0.60000 }, { -1.9000, 0.0000, 0.60000 }, 6.185 + { 1.7000, 0.0000, 1.42500 }, { 1.7000, -0.6600, 1.42500 }, 6.186 + { 1.7000, -0.6600, 0.60000 }, { 1.7000, 0.0000, 0.60000 }, 6.187 + { 2.6000, 0.0000, 1.42500 }, { 2.6000, -0.6600, 1.42500 }, 6.188 + { 3.1000, -0.6600, 0.82500 }, { 3.1000, 0.0000, 0.82500 }, 6.189 + { 2.3000, 0.0000, 2.10000 }, { 2.3000, -0.2500, 2.10000 }, 6.190 + { 2.4000, -0.2500, 2.02500 }, { 2.4000, 0.0000, 2.02500 }, 6.191 + { 2.7000, 0.0000, 2.40000 }, { 2.7000, -0.2500, 2.40000 }, 6.192 + { 3.3000, -0.2500, 2.40000 }, { 3.3000, 0.0000, 2.40000 }, 6.193 + { 2.8000, 0.0000, 2.47500 }, { 2.8000, -0.2500, 2.47500 }, 6.194 + { 3.5250, -0.2500, 2.49375 }, { 3.5250, 0.0000, 2.49375 }, 6.195 + { 2.9000, 0.0000, 2.47500 }, { 2.9000, -0.1500, 2.47500 }, 6.196 + { 3.4500, -0.1500, 2.51250 }, { 3.4500, 0.0000, 2.51250 }, 6.197 + { 2.8000, 0.0000, 2.40000 }, { 2.8000, -0.1500, 2.40000 }, 6.198 + { 3.2000, -0.1500, 2.40000 }, { 3.2000, 0.0000, 2.40000 }, 6.199 + { 0.0000, 0.0000, 3.15000 }, { 0.8000, 0.0000, 3.15000 }, 6.200 + { 0.8000, -0.4500, 3.15000 }, { 0.4500, -0.8000, 3.15000 }, 6.201 + { 0.0000, -0.8000, 3.15000 }, { 0.0000, 0.0000, 2.85000 }, 6.202 + { 1.4000, 0.0000, 2.40000 }, { 1.4000, -0.7840, 2.40000 }, 6.203 + { 0.7840, -1.4000, 2.40000 }, { 0.0000, -1.4000, 2.40000 }, 6.204 + { 0.4000, 0.0000, 2.55000 }, { 0.4000, -0.2240, 2.55000 }, 6.205 + { 0.2240, -0.4000, 2.55000 }, { 0.0000, -0.4000, 2.55000 }, 6.206 + { 1.3000, 0.0000, 2.55000 }, { 1.3000, -0.7280, 2.55000 }, 6.207 + { 0.7280, -1.3000, 2.55000 }, { 0.0000, -1.3000, 2.55000 }, 6.208 + { 1.3000, 0.0000, 2.40000 }, { 1.3000, -0.7280, 2.40000 }, 6.209 + { 0.7280, -1.3000, 2.40000 }, { 0.0000, -1.3000, 2.40000 }, 6.210 + { 0.0000, 0.0000, 0.00000 }, { 1.4250, -0.7980, 0.00000 }, 6.211 + { 1.5000, 0.0000, 0.07500 }, { 1.4250, 0.0000, 0.00000 }, 6.212 + { 0.7980, -1.4250, 0.00000 }, { 0.0000, -1.5000, 0.07500 }, 6.213 + { 0.0000, -1.4250, 0.00000 }, { 1.5000, -0.8400, 0.07500 }, 6.214 + { 0.8400, -1.5000, 0.07500 } 6.215 +}; 6.216 + 6.217 +#endif /* TEAPOT_DATA_H_ */