├── monkey.mtl ├── package.json ├── cube.mtl ├── .gitignore ├── main.py ├── cube.obj ├── README.md ├── main.ts ├── paper.md └── monkey.obj /monkey.mtl: -------------------------------------------------------------------------------- 1 | # Blender 4.2.0 MTL File: 'None' 2 | # www.blender.org 3 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "@types/node": "^22.13.10" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /cube.mtl: -------------------------------------------------------------------------------- 1 | # Blender 4.2.0 MTL File: 'None' 2 | # www.blender.org 3 | 4 | newmtl Material 5 | Ns 250.000000 6 | Ka 1.000000 1.000000 1.000000 7 | Kd 0.800000 0.800000 0.800000 8 | Ks 0.500000 0.500000 0.500000 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.450000 11 | d 1.000000 12 | illum 2 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import matplotlib.pyplot as plt 3 | import networkx as nx 4 | import trimesh 5 | from scipy.sparse.csgraph import shortest_path 6 | 7 | # 读取 monkey.obj 文件 8 | mesh = trimesh.load_mesh('monkey.obj') 9 | 10 | # 获取顶点和面片数据 11 | vertices = mesh.vertices 12 | faces = mesh.faces 13 | 14 | # 创建一个新的 3D 图形 15 | fig = plt.figure(figsize=(10, 10)) 16 | ax = fig.add_subplot(111, projection='3d') 17 | 18 | # 绘制网格模型 19 | # 使用三角形面片绘制模型 20 | for face in faces: 21 | x = vertices[face, 0] 22 | y = vertices[face, 1] 23 | z = vertices[face, 2] 24 | # 绘制每个三角形面片的边 25 | ax.plot([x[0], x[1]], [y[0], y[1]], [z[0], z[1]], 'b-', alpha=0.5) 26 | ax.plot([x[1], x[2]], [y[1], y[2]], [z[1], z[2]], 'b-', alpha=0.5) 27 | ax.plot([x[2], x[0]], [y[2], y[0]], [z[2], z[0]], 'b-', alpha=0.5) 28 | 29 | # 设置坐标轴标签 30 | ax.set_xlabel('X') 31 | ax.set_ylabel('Y') 32 | ax.set_zlabel('Z') 33 | 34 | # 调整视角 35 | ax.view_init(elev=20, azim=45) 36 | 37 | # 显示图形 38 | plt.show() 39 | 40 | 41 | -------------------------------------------------------------------------------- /cube.obj: -------------------------------------------------------------------------------- 1 | # Blender 4.2.0 2 | # www.blender.org 3 | mtllib cube.mtl 4 | o Cube 5 | v 1.000000 1.000000 -1.000000 6 | v 1.000000 -1.000000 -1.000000 7 | v 1.000000 1.000000 1.000000 8 | v 1.000000 -1.000000 1.000000 9 | v -1.000000 1.000000 -1.000000 10 | v -1.000000 -1.000000 -1.000000 11 | v -1.000000 1.000000 1.000000 12 | v -1.000000 -1.000000 1.000000 13 | vn -0.0000 1.0000 -0.0000 14 | vn -0.0000 -0.0000 1.0000 15 | vn -1.0000 -0.0000 -0.0000 16 | vn -0.0000 -1.0000 -0.0000 17 | vn 1.0000 -0.0000 -0.0000 18 | vn -0.0000 -0.0000 -1.0000 19 | vt 0.625000 0.500000 20 | vt 0.875000 0.500000 21 | vt 0.875000 0.750000 22 | vt 0.625000 0.750000 23 | vt 0.375000 0.750000 24 | vt 0.625000 1.000000 25 | vt 0.375000 1.000000 26 | vt 0.375000 0.000000 27 | vt 0.625000 0.000000 28 | vt 0.625000 0.250000 29 | vt 0.375000 0.250000 30 | vt 0.125000 0.500000 31 | vt 0.375000 0.500000 32 | vt 0.125000 0.750000 33 | s 0 34 | usemtl Material 35 | f 1/1/1 5/2/1 7/3/1 3/4/1 36 | f 4/5/2 3/4/2 7/6/2 8/7/2 37 | f 8/8/3 7/9/3 5/10/3 6/11/3 38 | f 6/12/4 2/13/4 4/5/4 8/14/4 39 | f 2/13/5 1/1/5 3/4/5 4/5/5 40 | f 6/11/6 5/10/6 1/1/6 2/13/6 41 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OBJ 模型转钩织图解工具 2 | 3 | 这个工具可以将 3D 模型(OBJ 格式)转换为钩织图解语言,帮助手工艺爱好者根据 3D 模型创建钩织作品。 4 | 5 | ## 工作流程 6 | 7 | ```mermaid 8 | flowchart TD 9 | A[OBJ文件] --> B[解析OBJ文件] 10 | B --> C[顶点分层] 11 | C --> D[距离计算与归一化] 12 | D --> E[转换为钩织图解] 13 | E --> F1[JSON格式输出] 14 | E --> F2[可读文本输出] 15 | ``` 16 | 17 | ## 工作原理 18 | 19 | 该工具通过以下步骤将 OBJ 文件转换为钩织图解: 20 | 21 | ### 1. 解析 OBJ 文件 22 | 23 | - **提取对象名称**:从 OBJ 文件中读取对象名称(以 "o" 开头的行) 24 | - **解析顶点**:读取所有顶点坐标(以 "v" 开头的行) 25 | - **解析面**:读取所有面信息(以 "f" 开头的行),并将其转换为边的集合 26 | - **构建图结构**:使用邻接表表示顶点之间的连接关系 27 | 28 | ### 2. 顶点分层 29 | 30 | - **几何分层**:根据顶点的 y 坐标将顶点分成不同的层 31 | - **BFS 分层**:可选择使用广度优先搜索算法进行分层,从指定起始顶点开始 32 | 33 | ### 3. 距离计算与归一化 34 | 35 | - **计算边距离**:计算每条边(相邻顶点对)之间的欧几里得距离 36 | - **归一化距离**:将距离归一化到 1-4 范围内 37 | - **整数化距离**:将归一化后的距离转换为 0-4 的整数值 38 | 39 | ### 4. 转换为钩织图解 40 | 41 | - **生成指令**:根据整数化的距离生成不同类型的钩织指令 42 | - 0 → SL(引拔针) 43 | - 1 → CH(锁针)| X(短针) 44 | - 2 → T(中长针) 45 | - 3 → F(长针) 46 | - 4 → E(长长针) 47 | - **合并指令**:合并相同类型的指令,累加其数量 48 | - **构建轮次**:每一层对应一个钩织轮次 49 | - **构建部件**:每个 OBJ 对象对应一个钩织部件 50 | 51 | ### 5. 输出图解 52 | 53 | - **JSON 格式**:输出结构化的 JSON 格式图解 54 | - **可读文本**:输出人类可读的文本格式图解(如 "P1: Cube\nR1: 4CH\nR2: 4X") 55 | 56 | ## 数据结构 57 | 58 | ```mermaid 59 | classDiagram 60 | class Vertex { 61 | +number x 62 | +number y 63 | +number z 64 | } 65 | 66 | class Edge { 67 | +number vertex1 68 | +number vertex2 69 | } 70 | 71 | class Graph { 72 | +Map~number, number[]~ adjacencyList 73 | } 74 | 75 | class Instruction { 76 | +string type 77 | +number count 78 | } 79 | 80 | class StitchRound { 81 | +number roundNumber 82 | +Instruction[] instructions 83 | } 84 | 85 | class StitchPart { 86 | +string id 87 | +string description 88 | +StitchRound[] rounds 89 | } 90 | 91 | StitchPart "1" *-- "many" StitchRound 92 | StitchRound "1" *-- "many" Instruction 93 | ``` 94 | 95 | - **Vertex**: `[number, number, number]` - 表示 3D 空间中的一个点 96 | - **Edge**: `[number, number]` - 表示连接两个顶点的边 97 | - **Graph**: `Map` - 邻接表表示的图结构 98 | - **Instruction**: 表示一个钩织指令,包含类型和数量 99 | - **StitchRound**: 表示一个钩织轮次,包含轮次编号和指令列表 100 | - **StitchPart**: 表示一个钩织部件,包含 ID、描述和轮次列表 101 | 102 | ## 处理流程详解 103 | 104 | ```mermaid 105 | sequenceDiagram 106 | participant OBJ as OBJ文件 107 | participant Parser as 解析器 108 | participant Layering as 分层处理 109 | participant Distance as 距离计算 110 | participant Converter as 转换器 111 | participant Output as 输出格式化 112 | 113 | OBJ->>Parser: 读取文件内容 114 | Parser->>Parser: 提取对象名称 115 | Parser->>Parser: 解析顶点坐标 116 | Parser->>Parser: 解析面信息 117 | Parser->>Parser: 构建图结构 118 | Parser->>Layering: 传递图和顶点 119 | Layering->>Layering: 按Y坐标分层 120 | Layering->>Distance: 传递分层结果 121 | Distance->>Distance: 计算边距离 122 | Distance->>Distance: 归一化距离(1-4) 123 | Distance->>Distance: 整数化距离(0-4) 124 | Distance->>Converter: 传递距离结果 125 | Converter->>Converter: 生成钩织指令 126 | Converter->>Converter: 合并相同指令 127 | Converter->>Converter: 构建轮次 128 | Converter->>Converter: 构建部件 129 | Converter->>Output: 传递图解结构 130 | Output->>Output: 格式化为JSON 131 | Output->>Output: 格式化为可读文本 132 | ``` 133 | 134 | ## 使用方法 135 | 136 | 1. 准备一个 OBJ 格式的 3D 模型文件 137 | 2. 运行程序,指定 OBJ 文件路径 138 | 3. 程序将生成并显示钩织图解 139 | 140 | ## 示例输出 141 | 142 | 对于一个简单的立方体模型,输出的图解可能如下: 143 | 144 | ``` 145 | P1: Cube 146 | R1: 4CH 147 | R2: 4X 148 | ``` 149 | 150 | ## 距离映射示意图 151 | 152 | ```mermaid 153 | graph LR 154 | A[原始距离] --> B[归一化距离] 155 | B --> C[整数化距离] 156 | C --> D[钩织指令] 157 | 158 | subgraph 整数化映射 159 | C1[0] --- D1[SL/引拔针] 160 | C2[1] --- D2[CH/锁针 或 X/短针] 161 | C3[2] --- D3[T/中长针] 162 | C4[3] --- D4[F/长针] 163 | C5[4] --- D5[E/长长针] 164 | end 165 | ``` 166 | 167 | ## 技术细节 168 | 169 | 该工具使用 TypeScript 实现,主要利用了图论和几何计算的概念。关键算法包括: 170 | 171 | - 欧几里得距离计算 172 | - 图的分层算法 173 | - 距离归一化和离散化 174 | - 指令合并和格式化 175 | 176 | 通过这些步骤,工具能够将复杂的 3D 模型转换为简单易懂的钩织图解,使手工艺爱好者能够创建出与 3D 模型相似的钩织作品。 -------------------------------------------------------------------------------- /main.ts: -------------------------------------------------------------------------------- 1 | import fs from 'fs'; 2 | 3 | type Vertex = [number, number, number]; // 顶点坐标 (x, y, z) 4 | type Edge = [number, number]; // 边的两个顶点索引 5 | type Graph = Map; // 邻接表(顶点索引 → 相邻顶点索引) 6 | 7 | export interface Instruction { 8 | type: string; 9 | count: number; 10 | } 11 | 12 | export interface StitchRound { 13 | roundNumber: number; 14 | instructions: Instruction[]; 15 | } 16 | 17 | export interface StitchPart { 18 | id: string; 19 | description: string; 20 | rounds: StitchRound[]; 21 | } 22 | 23 | /** 24 | * 从OBJ文件内容中解析对象名称 25 | * @param objContent OBJ文件内容 26 | * @returns 对象名称数组 27 | */ 28 | function parseObjNames(objContent: string): string[] { 29 | const objectNames: string[] = []; 30 | const lines = objContent.split('\n'); 31 | 32 | lines.forEach(line => { 33 | const tokens = line.trim().split(/\s+/); 34 | if (tokens.length >= 2 && tokens[0] === 'o') { 35 | objectNames.push(tokens[1]); 36 | } 37 | }); 38 | 39 | // 如果没有找到对象名称,使用默认名称 40 | if (objectNames.length === 0) { 41 | objectNames.push('Object'); 42 | } 43 | 44 | return objectNames; 45 | } 46 | 47 | function parseObjToGraph(objContent: string): { graph: Graph, vertices: Vertex[], objectNames: string[] } { 48 | const vertices: Vertex[] = []; 49 | const edges: Edge[] = []; 50 | const objectNames = parseObjNames(objContent); 51 | 52 | // 按行解析.obj内容 53 | const lines = objContent.split('\n'); 54 | lines.forEach(line => { 55 | const tokens = line.trim().split(/\s+/); 56 | if (tokens.length === 0) return; 57 | 58 | // 解析顶点(v 开头行) 59 | if (tokens[0] === 'v') { 60 | const [, x, y, z] = tokens.map(parseFloat); 61 | vertices.push([x, y, z]); 62 | } 63 | 64 | // 解析面(f 开头行) 65 | if (tokens[0] === 'f') { 66 | const faceVertices = tokens 67 | .slice(1) 68 | .map(token => { 69 | // 提取顶点索引(格式可能为 "1", "1/2", "1//3" 等) 70 | const index = parseInt(token.split('/')[0], 10); 71 | return index > 0 ? index - 1 : vertices.length + index; // 处理负索引 72 | }); 73 | 74 | // 将面转换为边(多边形闭合边) 75 | for (let i = 0; i < faceVertices.length; i++) { 76 | const u = faceVertices[i]; 77 | const v = faceVertices[(i + 1) % faceVertices.length]; 78 | edges.push([Math.min(u, v), Math.max(u, v)]); // 去重边 79 | } 80 | } 81 | }); 82 | 83 | // 去重边(Set → Array → 排序) 84 | const uniqueEdges = Array.from( 85 | new Set( 86 | edges.map(edge => JSON.stringify(edge)) 87 | ) 88 | ).map(str => JSON.parse(str) as Edge); 89 | 90 | // 构建邻接表 91 | const graph: Graph = new Map(); 92 | vertices.forEach((_, index) => graph.set(index, [])); // 初始化所有顶点 93 | 94 | uniqueEdges.forEach(([u, v]) => { 95 | graph.get(u)?.push(v); // 添加 u → v 96 | graph.get(v)?.push(u); // 添加 v → u(无向图) 97 | }); 98 | 99 | return { graph, vertices, objectNames }; 100 | } 101 | 102 | /** 103 | * 计算两个顶点之间的欧几里得距离 104 | * @param v1 第一个顶点坐标 105 | * @param v2 第二个顶点坐标 106 | * @returns 两点之间的距离 107 | */ 108 | function calculateDistance(v1: Vertex, v2: Vertex): number { 109 | const dx = v2[0] - v1[0]; 110 | const dy = v2[1] - v1[1]; 111 | const dz = v2[2] - v1[2]; 112 | return Math.sqrt(dx * dx + dy * dy + dz * dz); 113 | } 114 | 115 | /** 116 | * 计算图中所有相邻顶点之间的距离 117 | * @param graph 邻接表表示的图 118 | * @param vertices 顶点坐标数组 119 | * @returns 边到距离的映射 120 | */ 121 | function calculateEdgeDistances(graph: Graph, vertices: Vertex[]): Map { 122 | const distances = new Map(); 123 | 124 | // 遍历所有边 125 | graph.forEach((neighbors, vertex) => { 126 | neighbors.forEach(neighbor => { 127 | // 确保每条边只计算一次(使用较小的顶点索引作为键的第一部分) 128 | const edgeKey = vertex < neighbor 129 | ? `${vertex}-${neighbor}` 130 | : `${neighbor}-${vertex}`; 131 | 132 | if (!distances.has(edgeKey)) { 133 | const distance = calculateDistance(vertices[vertex], vertices[neighbor]); 134 | distances.set(edgeKey, distance); 135 | } 136 | }); 137 | }); 138 | 139 | return distances; 140 | } 141 | 142 | /** 143 | * 归一化距离,使最短距离为1,最长距离为4 144 | * @param distances 原始距离映射 145 | * @returns 归一化后的距离映射 146 | */ 147 | function normalizeDistances(distances: Map): Map { 148 | // 找出最小和最大距离 149 | let minDistance = Infinity; 150 | let maxDistance = -Infinity; 151 | 152 | distances.forEach(distance => { 153 | minDistance = Math.min(minDistance, distance); 154 | maxDistance = Math.max(maxDistance, distance); 155 | }); 156 | 157 | // 创建新的归一化距离映射 158 | const normalizedDistances = new Map(); 159 | 160 | // 如果最小距离等于最大距离,所有归一化距离都设为1 161 | if (maxDistance === minDistance) { 162 | distances.forEach((_, edge) => { 163 | normalizedDistances.set(edge, 1); 164 | }); 165 | return normalizedDistances; 166 | } 167 | 168 | // 归一化公式: newValue = 1 + 3 * (value - min) / (max - min) 169 | // 这样可以确保最小值映射到1,最大值映射到4 170 | distances.forEach((distance, edge) => { 171 | const normalizedDistance = 1 + 3 * (distance - minDistance) / (maxDistance - minDistance); 172 | normalizedDistances.set(edge, normalizedDistance); 173 | }); 174 | 175 | return normalizedDistances; 176 | } 177 | 178 | /** 179 | * 将归一化的距离(1-4范围)转换为整数值(0-4范围) 180 | * @param normalizedDistances 归一化后的距离映射(1-4范围) 181 | * @returns 整数化后的距离映射(0-4范围) 182 | */ 183 | function discretizeDistances(normalizedDistances: Map): Map { 184 | const discretizedDistances = new Map(); 185 | 186 | normalizedDistances.forEach((distance, edge) => { 187 | // 将1-4范围的值映射到0-4的整数 188 | // 0: [0, 0.5) 189 | // 1: [0.5, 1.5) 190 | // 2: [1.5, 2.5) 191 | // 3: [2.5, 3.5) 192 | // 4: [3.5, 4] 193 | let discreteValue: number; 194 | 195 | if (distance < 0.5) { 196 | discreteValue = 0; 197 | } else if (distance < 1.5) { 198 | discreteValue = 1; 199 | } else if (distance < 2.5) { 200 | discreteValue = 2; 201 | } else if (distance < 3.5) { 202 | discreteValue = 3; 203 | } else { 204 | discreteValue = 4; 205 | } 206 | 207 | discretizedDistances.set(edge, discreteValue); 208 | }); 209 | 210 | return discretizedDistances; 211 | } 212 | 213 | /** 214 | * 计算所有顶点对之间的距离 215 | * @param vertices 顶点坐标数组 216 | * @returns 顶点对到距离的映射 217 | */ 218 | function calculateAllVertexPairDistances(vertices: Vertex[]): Map { 219 | const distances = new Map(); 220 | 221 | // 计算所有顶点对之间的距离 222 | for (let i = 0; i < vertices.length; i++) { 223 | for (let j = i + 1; j < vertices.length; j++) { 224 | const distance = calculateDistance(vertices[i], vertices[j]); 225 | const key = `${i}-${j}`; 226 | distances.set(key, distance); 227 | } 228 | } 229 | 230 | return distances; 231 | } 232 | 233 | /** 234 | * 将图的顶点分层 235 | * @param graph 邻接表表示的图 236 | * @param vertices 顶点坐标数组 237 | * @returns 分层后的顶点索引数组 238 | */ 239 | function layerGraph(graph: Graph, vertices: Vertex[]): number[][] { 240 | // 按照y坐标对顶点进行排序 241 | const verticesWithIndices = vertices.map((vertex, index) => ({ vertex, index })); 242 | 243 | // 按照y坐标排序(或者可以选择其他坐标轴) 244 | verticesWithIndices.sort((a, b) => a.vertex[1] - b.vertex[1]); 245 | 246 | // 找出不同的y坐标值 247 | const yValues = Array.from(new Set(vertices.map(v => v[1]))); 248 | yValues.sort((a, b) => a - b); 249 | 250 | // 按照y坐标值分层 251 | const layers: number[][] = []; 252 | 253 | for (const y of yValues) { 254 | const layer = verticesWithIndices 255 | .filter(item => Math.abs(item.vertex[1] - y) < 0.0001) // 使用小阈值处理浮点数比较 256 | .map(item => item.index); 257 | 258 | if (layer.length > 0) { 259 | layers.push(layer); 260 | } 261 | } 262 | 263 | return layers; 264 | } 265 | 266 | /** 267 | * 使用BFS算法对图进行分层 268 | * @param graph 邻接表表示的图 269 | * @param startVertex 起始顶点 270 | * @returns 分层后的顶点索引数组 271 | */ 272 | function layerGraphBFS(graph: Graph, startVertex: number = 0): number[][] { 273 | const visited = new Set(); 274 | const layers: number[][] = []; 275 | 276 | // 初始层 277 | let currentLayer = [startVertex]; 278 | visited.add(startVertex); 279 | 280 | // BFS遍历 281 | while (currentLayer.length > 0) { 282 | layers.push([...currentLayer]); 283 | 284 | const nextLayer: number[] = []; 285 | 286 | // 遍历当前层的所有顶点 287 | for (const vertex of currentLayer) { 288 | // 获取相邻顶点 289 | const neighbors = graph.get(vertex) || []; 290 | 291 | // 将未访问的相邻顶点加入下一层 292 | for (const neighbor of neighbors) { 293 | if (!visited.has(neighbor)) { 294 | visited.add(neighbor); 295 | nextLayer.push(neighbor); 296 | } 297 | } 298 | } 299 | 300 | currentLayer = nextLayer; 301 | } 302 | 303 | return layers; 304 | } 305 | 306 | /** 307 | * 将每层内边的整数化距离转换为图解语言 308 | * @param layers 分层后的顶点索引数组 309 | * @param graph 邻接表表示的图 310 | * @param vertices 顶点坐标数组 311 | * @param objectNames 对象名称数组 312 | * @returns 图解语言表示的对象数组 313 | */ 314 | function convertToStitchPattern( 315 | layers: number[][], 316 | graph: Graph, 317 | vertices: Vertex[], 318 | objectNames: string[] 319 | ): StitchPart[] { 320 | const stitchParts: StitchPart[] = []; 321 | 322 | // 为每个对象创建一个StitchPart 323 | objectNames.forEach((objectName, objectIndex) => { 324 | const rounds: StitchRound[] = []; 325 | 326 | // 每一层对应一个Round 327 | layers.forEach((layer, layerIndex) => { 328 | const instructions: Instruction[] = []; 329 | 330 | // 收集该层内的所有边 331 | const layerEdges = new Map(); 332 | 333 | // 遍历该层的所有顶点 334 | for (const vertex of layer) { 335 | // 获取该顶点的所有邻居 336 | const neighbors = graph.get(vertex) || []; 337 | 338 | // 只考虑同一层内的边 339 | for (const neighbor of neighbors) { 340 | if (layer.includes(neighbor) && vertex < neighbor) { // 确保每条边只处理一次 341 | const distance = calculateDistance(vertices[vertex], vertices[neighbor]); 342 | const edgeKey = `${vertex}-${neighbor}`; 343 | layerEdges.set(edgeKey, distance); 344 | } 345 | } 346 | } 347 | 348 | // 如果该层没有边,跳过 349 | if (layerEdges.size === 0) { 350 | return; 351 | } 352 | 353 | // 归一化该层内的边距离 354 | const normalizedLayerEdges = normalizeDistances(layerEdges); 355 | 356 | // 整数化该层内的边距离 357 | const discretizedLayerEdges = discretizeDistances(normalizedLayerEdges); 358 | 359 | // 将边的整数化距离转换为指令 360 | const instructionCounts = new Map(); 361 | 362 | // 统计每种类型指令的数量 363 | discretizedLayerEdges.forEach((distance, edge) => { 364 | const type = ["SL", layerIndex == 0 ? "CH" : "X", "T", "F", "E"][distance]; 365 | instructionCounts.set(type, (instructionCounts.get(type) || 0) + 1); 366 | }); 367 | 368 | // 将统计结果转换为指令数组 369 | instructionCounts.forEach((count, type) => { 370 | instructions.push({ 371 | type, 372 | count 373 | }); 374 | }); 375 | 376 | // 如果有指令,添加到rounds中 377 | if (instructions.length > 0) { 378 | rounds.push({ 379 | roundNumber: layerIndex + 1, 380 | instructions 381 | }); 382 | } 383 | }); 384 | 385 | // 创建StitchPart 386 | stitchParts.push({ 387 | id: (objectIndex + 1).toString(), 388 | description: objectName, 389 | rounds 390 | }); 391 | }); 392 | 393 | return stitchParts; 394 | } 395 | 396 | /** 397 | * 将图解结构体转换为可读的图解文字 398 | * @param stitchParts 图解结构体数组 399 | * @returns 可读的图解文字 400 | */ 401 | function convertToReadablePattern(stitchParts: StitchPart[]): string { 402 | let result = ''; 403 | 404 | stitchParts.forEach(part => { 405 | // 添加部件标题 406 | result += `P${part.id}: ${part.description}\n`; 407 | 408 | // 添加每一轮的指令 409 | part.rounds.forEach(round => { 410 | // 开始一个新的轮次 411 | result += `R${round.roundNumber}: `; 412 | 413 | // 添加该轮的所有指令 414 | const instructionTexts = round.instructions.map(instruction => { 415 | return `${instruction.count}${instruction.type}`; 416 | }); 417 | 418 | // 将指令连接起来 419 | result += instructionTexts.join(', '); 420 | result += '\n'; 421 | }); 422 | 423 | // 在不同部件之间添加空行 424 | result += '\n'; 425 | }); 426 | 427 | return result.trim(); 428 | } 429 | 430 | // 示例使用 431 | const objContent = fs.readFileSync('cube.obj', 'utf-8'); 432 | const { graph, vertices, objectNames } = parseObjToGraph(objContent); 433 | 434 | // 打印对象名称 435 | console.log("对象名称:"); 436 | objectNames.forEach((name, index) => { 437 | console.log(`对象 ${index + 1}: ${name}`); 438 | }); 439 | 440 | // 打印邻接表 441 | console.log("\n邻接表:"); 442 | graph.forEach((neighbors, vertex) => { 443 | console.log(`顶点 ${vertex}: [${neighbors.join(', ')}]`); 444 | }); 445 | 446 | // 计算并打印边的距离 447 | console.log("\n边的距离:"); 448 | const edgeDistances = calculateEdgeDistances(graph, vertices); 449 | edgeDistances.forEach((distance, edge) => { 450 | console.log(`边 ${edge}: ${distance.toFixed(4)}`); 451 | }); 452 | 453 | // 归一化并打印边的距离 454 | console.log("\n归一化后的边距离 (1-4):"); 455 | const normalizedEdgeDistances = normalizeDistances(edgeDistances); 456 | normalizedEdgeDistances.forEach((distance, edge) => { 457 | console.log(`边 ${edge}: ${distance.toFixed(4)}`); 458 | }); 459 | 460 | // 整数化并打印边的距离 461 | console.log("\n整数化后的边距离 (0-4):"); 462 | const discretizedEdgeDistances = discretizeDistances(normalizedEdgeDistances); 463 | discretizedEdgeDistances.forEach((distance, edge) => { 464 | console.log(`边 ${edge}: ${distance}`); 465 | }); 466 | 467 | // 按照几何坐标分层 468 | console.log("\n按照几何坐标分层:"); 469 | const geometricLayers = layerGraph(graph, vertices); 470 | geometricLayers.forEach((layer, index) => { 471 | console.log(`层 ${index}: [${layer.join(', ')}]`); 472 | }); 473 | 474 | // 按照BFS分层 475 | console.log("\n按照BFS分层:"); 476 | const bfsLayers = layerGraphBFS(graph, 0); 477 | bfsLayers.forEach((layer, index) => { 478 | console.log(`层 ${index}: [${layer.join(', ')}]`); 479 | }); 480 | 481 | const layers = geometricLayers; 482 | 483 | // 打印每层内的边距离 484 | console.log("\n每层内的边距离:"); 485 | layers.forEach((layer, layerIndex) => { 486 | console.log(`层 ${layerIndex}:`); 487 | 488 | // 收集该层内的所有边 489 | const layerEdges = new Map(); 490 | 491 | // 遍历该层的所有顶点 492 | for (const vertex of layer) { 493 | // 获取该顶点的所有邻居 494 | const neighbors = graph.get(vertex) || []; 495 | 496 | // 只考虑同一层内的边 497 | for (const neighbor of neighbors) { 498 | if (layer.includes(neighbor) && vertex < neighbor) { // 确保每条边只处理一次 499 | const distance = calculateDistance(vertices[vertex], vertices[neighbor]); 500 | const edgeKey = `${vertex}-${neighbor}`; 501 | layerEdges.set(edgeKey, distance); 502 | console.log(` 边 ${edgeKey}: ${distance.toFixed(4)}`); 503 | } 504 | } 505 | } 506 | 507 | // 如果该层没有边 508 | if (layerEdges.size === 0) { 509 | console.log(" 该层内没有边"); 510 | } 511 | }); 512 | 513 | // 打印每层内边的归一化距离 514 | console.log("\n每层内边的归一化距离 (1-4):"); 515 | layers.forEach((layer, layerIndex) => { 516 | console.log(`层 ${layerIndex}:`); 517 | 518 | // 收集该层内的所有边 519 | const layerEdges = new Map(); 520 | 521 | // 遍历该层的所有顶点 522 | for (const vertex of layer) { 523 | // 获取该顶点的所有邻居 524 | const neighbors = graph.get(vertex) || []; 525 | 526 | // 只考虑同一层内的边 527 | for (const neighbor of neighbors) { 528 | if (layer.includes(neighbor) && vertex < neighbor) { // 确保每条边只处理一次 529 | const distance = calculateDistance(vertices[vertex], vertices[neighbor]); 530 | const edgeKey = `${vertex}-${neighbor}`; 531 | layerEdges.set(edgeKey, distance); 532 | } 533 | } 534 | } 535 | 536 | // 如果该层没有边 537 | if (layerEdges.size === 0) { 538 | console.log(" 该层内没有边"); 539 | return; 540 | } 541 | 542 | // 归一化该层内的边距离 543 | const normalizedLayerEdges = normalizeDistances(layerEdges); 544 | normalizedLayerEdges.forEach((distance, edge) => { 545 | console.log(` 边 ${edge}: ${distance.toFixed(4)}`); 546 | }); 547 | }); 548 | 549 | // 打印每层内边的整数化距离 550 | console.log("\n每层内边的整数化距离 (0-4):"); 551 | layers.forEach((layer, layerIndex) => { 552 | console.log(`层 ${layerIndex}:`); 553 | 554 | // 收集该层内的所有边 555 | const layerEdges = new Map(); 556 | 557 | // 遍历该层的所有顶点 558 | for (const vertex of layer) { 559 | // 获取该顶点的所有邻居 560 | const neighbors = graph.get(vertex) || []; 561 | 562 | // 只考虑同一层内的边 563 | for (const neighbor of neighbors) { 564 | if (layer.includes(neighbor) && vertex < neighbor) { // 确保每条边只处理一次 565 | const distance = calculateDistance(vertices[vertex], vertices[neighbor]); 566 | const edgeKey = `${vertex}-${neighbor}`; 567 | layerEdges.set(edgeKey, distance); 568 | } 569 | } 570 | } 571 | 572 | // 如果该层没有边 573 | if (layerEdges.size === 0) { 574 | console.log(" 该层内没有边"); 575 | return; 576 | } 577 | 578 | // 归一化该层内的边距离 579 | const normalizedLayerEdges = normalizeDistances(layerEdges); 580 | 581 | // 整数化该层内的边距离 582 | const discretizedLayerEdges = discretizeDistances(normalizedLayerEdges); 583 | discretizedLayerEdges.forEach((distance, edge) => { 584 | console.log(` 边 ${edge}: ${distance}`); 585 | }); 586 | }); 587 | 588 | // 转换为图解语言 589 | const stitchPattern = convertToStitchPattern(layers, graph, vertices, objectNames); 590 | 591 | // 打印图解语言 592 | console.log("\n图解语言 (JSON格式):"); 593 | console.log(JSON.stringify(stitchPattern, null, 2)); 594 | 595 | // 转换为可读的图解文字 596 | const readablePattern = convertToReadablePattern(stitchPattern); 597 | 598 | // 打印可读的图解文字 599 | console.log("\n图解语言 (可读文本格式):"); 600 | console.log(readablePattern); 601 | 602 | // 将可读的图解文字保存到文件 603 | // fs.writeFileSync('pattern.txt', readablePattern); 604 | // console.log("\n图解语言已保存到 pattern.txt 文件"); -------------------------------------------------------------------------------- /paper.md: -------------------------------------------------------------------------------- 1 | **AmiGo: Computational Design of Amigurumi Crochet Patterns** 2 | 3 | Michal Edelstein, Hila Peleg, Shachar Itzhaky, and Mirela Ben-Chen 4 | Technion - Israel Institute of Technology, Haifa, Israel 5 | 6 | **Abstract** 7 | We propose an approach for generating crochet instructions (patterns) from an input 3D model. We focus on Amigurumi, which are knitted stuffed toys. Given a closed triangle mesh, and a single point specified by the user, we generate crochet instructions, which when knitted and stuffed result in a toy similar to the input geometry. Our approach relies on constructing the geometry and connectivity of a Crochet Graph, which is then translated into a crochet pattern. We segment the shape automatically into crochetable components, which are connected using the join-as-you-go method, requiring no additional sewing. We demonstrate that our method is applicable to a large variety of shapes and geometries, and yields easily crochetable patterns. 8 | 9 | **Keywords:** computational knitting, crochet, geometry processing 10 | 11 | **1 Introduction** 12 | Hand making toys is a popular and ancient craft. Knitting toys and stuffing them is one of the most popular approaches, as it allows for great flexibility in the color and texture of the final product, does not require sophisticated tools, and the technique can be easily taught, even to small children. Knitting approaches are mostly divided into methods which use a single hook or needle, usually classified as Crochet, and techniques which use two needles, which are generally called Knitting. Despite some superficial similarities, crochet and knitting yield very different fabrics, and the knitting patterns are different as well. Computational knitting has been recently investigated in the graphics and fabrication communities [Yuksel et al. 2012], as knitting machines became available and popular. Crochet, on the other hand, cannot be as easily automated, and to-date there is no existing crochet-machine [Seitz et al. 2021]. Furthermore, the research on computational methods for generating crochet patterns is similarly lacking. On the other hand, the crochet community has increased dramatically in recent years [Burns and Van Der Meer 2021], and Amigurumi, or crochet stuffed toys, became very popular. As the availability of computational techniques for pattern generation is quite limited, most designers rely on trial and error methods which are tedious and time consuming. Furthermore, novice crocheters are limited to producing existing patterns, and cannot easily express their creativity by generating patterns themselves. Our goal in this paper is to address this gap, and suggest a computational method for generating a crochet pattern from an input 3D model. Given a single point on the model chosen by the user, denoted as the seed, and a user-selected stitch size, we automatically generate a crochet graph. The graph is then used for generating a crochet pattern, which after crocheting and stuffing, resembles the input model. We additionally provide a visualization of the expected crocheted shape, and thus the user can experiment with different seeds and different yarn sizes. We demonstrate that our algorithm is applicable to a large variety of shapes, and compares favorably to prior work. 13 | 14 | **1.1 Related Work** 15 | Knitting. The literature on computational knitting (as opposed to crochet) is quite large, and we mention some of it here for completeness. Note that, in general, crochet and knitting are two related, but very different, methods of fabric generation, and converting knitting patterns to crochet and vice versa is very challenging, even for human experts. Thus, a computational knitting pipeline cannot be used "as-is" for crochet. The Stitch Meshes line of work [Yuksel et al. 2012] deals with representing 3D models at the yarn level using polygonal meshes whose faces represent different types of stitches, and on top of that considering knitability [Wu et al. 2019] and wearability [Wu et al. 2021]. Our crochet graph representation, on the other hand, is more abstract, representing only stitch heads/bases and stems, instead of the full yarn-level representation. However, for crochet this is sufficient. Specifically, the crochetability constraint of coupled rows, which directly translates into an algorithm for creating the instructions, can be easily enforced on our crochet graph. Our representation has some resemblance to the representation of AutoKnit [2018], where the nodes represent two stacked stitches and the edges represent the connectivity and stitch size. They build the graph using a user specified time function and a set of constraints that guarantee machine knittability. They additionally propose tracing and scheduling algorithms to produce the machine knitting instructions. Popescu et al. [2018] build a similar graph by manually dividing the shape into patches and covering them with contours, which are later sampled to produce the instructions. Kaspaer at al. [2021] also generate machine-knitting instructions based on a stitch graph. The graph is computed by sampling 2D garment patterns according to a specified time function designed by the user. Other approaches focus on knitting compilers [McCann et al. 2016], interactive design of knit templates [Jones et al. 2021], and complex knit structures and multi-yarn [Nader et al. 2021]. When compared to machine knitting algorithms our approach is better tailored to hand-crocheting. First, the crocheted models are in many cases very low resolution (e.g., if they are aimed for beginners), and therefore we need to adapt our sampling rate accordingly (see Section 7.1.2). Furthermore, short rows are much less common in crochet, and we avoid them to generate patterns which appeal to beginner crocheters. The user only needs to supply an input seed point, instead of constraints on the time function as in AutoKnit, (e.g., two or more seed points), or a manual segmentation as in Popescu et al. [2018]. Finally, our simpler approach and the low resolution needed for crochet also leads to shorter processing times, where generating the instructions takes a few minutes, when compared to tens of minutes for AutoKnit. Hence opening the door to interactive editing and design of patterns in future work. 16 | 17 | Crochet. A recent technical report [Seitz et al. 2021] provides an excellent background about the concept of computational crochet. The authors discuss pattern representation, as well as differences between crochet and knitting, and the lack of crochet machines. One of the first approaches to computational crochet was presented by Igarashi et al. [2008b], which provided an interactive tool for sketching a model and producing crochet instructions. Later, Nakjan et al. [2018] suggested a method that allows the user to design dolls using 2D sketches and generated from them crochet instructions. Beyond sketching, Igarashi et al. [2008a] also allow the user to start from a 3D model. There, the mesh is covered with evenly spaced winding strips, which are then sampled at constant distances to compute the pattern. Their method requires a manual segmentation of the input, and the resulting knitted models are often very different visually from the input. More recently, Çapunaman et al. [2017] suggested a method that infers the stitch directions and connectivity from the (𝐴?, 𝐴?) parameterization of a given surface. Thus, this approach requires a parameterized surface, whose parameter directions align with the required stitch directions. It is unclear how to achieve such a parameterization for a general surface. Finally, Guo et al. [2020] extended the Stitch Mesh framework to crochet by defining new faces that represent crochet stitches and new edge types that represent the current loop. They produce crochet instructions for 3D models and simulate the expected geometry. However, the crocheted item can differ greatly from the original model. There are a few publicly available software projects that allow users to generate instructions from very simple geometries. The Crochet Sphere Calculator [Avtanski 2012b] generates instructions for crocheting spheres with a given number of rows. The Crochet Lathe [Avtanski 2012a] generates crochet instructions for surfaces of revolution, by allowing the user to design the profile curve. These are very basic, and do not allow the user to input a general 3D model. 18 | 19 | **1.2 Contribution** 20 | We propose an automatic method for generating crochet instructions (patterns) from a closed input 3D model, a seed point, and a stitch size. The generated instructions are crochetable, use only simple crochet stitches, and are based on the "join-as-you-go" method, and thus do not require any sewing. When crocheted and stuffed the models are similar to the input 3D shape, much more so than any previous approach for crochet instructions generation. 21 | 22 | **2 Representation** 23 | Given a closed manifold triangle mesh 𝐴? = (V, E), a seed vertex 𝐴? ∈ 𝐴? , and a stitch width 𝐴? ∈ R, our goal is to generate human-readable instructions 𝐴?(𝐴?,𝐴?,𝐴?) for crocheting 𝐴? from the point 𝐴?, with the given stitch width 𝐴?. Crochet has a wide variety of stitches, and we focus here on the simple stitch used for Amigurumi, named single crochet (sc). This is an approximately square stitch, thus covering 𝐴? with 24 | sc stitches is equivalent to constructing a quad re-mesh of 𝐴?, where each quad is a square, and all the edge lengths are constant. This is of course not possible unless the surface is developable, i.e. has zero Gaussian curvature. In practice, curved geometry is accommodated in crochet by introducing stitches which locally increase (inc(x)) or decrease (dec(x)) the amount of stitches by 𝐴?. Figure 3 (left) shows an example of the inc and dec stitches on a crocheted patch. Crochet instructions for Amigurumi typically include rows, where each row is a series of sc, inc, dec stitches. Figure 2 (middle) shows the instructions (pattern) for crocheting the sphere in Figure 2 (right). 25 | 26 | **2.2 The Crochet Graph** 27 | A crochet stitch is composed of a top, a base and a stem, where the inc,dec stitches have multiple stems, see Figure 3 (right). The top of one stitch is always the base of some stitch on the next row, and similarly, each stitch has a base on the previous row. Therefore, a natural abstraction of the stitch pattern is to consider the stitches and their interconnections as a graph. Specifically, we define the Crochet Graph G = (S, R ∪ C), whose vertices S are tops/bases of stitches, where a vertex (𝐴?, 𝐴?) ∈S is the base of the 𝐴?-th stitch in row 𝐴?, and the vertices in each row are consecutively ordered. The column edges C are stems of stitches, and the connectivity between the bases in each row is represented by the row edges R. We denote the total number of rows by 𝐴?. Figure 2 (left) shows the crochet graph corresponding to the crocheted sphere in Figure 2 (right). A crochet graph is an intermediate representation between the input triangle mesh 𝐴?, and the output instructions 𝐴?. Our goal is to generate a graph such that it is (1) translatable to valid crochet instructions 𝐴?, and (2) when 𝐴? is crocheted and stuffed, the result resembles the input mesh. Note that there exist multiple instructions 𝐴? for the same graph G, and within this space we aim for instructions which are human-readable. We base our algorithm on the following observations. 28 | 29 | **Definition 2.1.** A coupling [Gold and Sharir 2018]𝐴? = (𝐴?1, ..,𝐴?𝐴?) between two sequences 𝐴 = (𝐴?1, .., 𝐴?𝐴?) and 𝐴? = (𝐴?1, ..,𝐴?𝐴?) is an ordered sequence of distinct pairs of points from 𝐴 × 𝐴?, such that 𝐴?1 = (𝐴?1,𝐴?1),𝐴?𝐴? = (𝐴?𝐴?,𝐴?𝐴?) and 𝐴?𝐴? = (𝐴?𝐴?,𝐴?𝐴?) ⇒ 𝐴?𝐴?+1 ∈ � (𝐴?𝐴?+1,𝐴?𝐴?), (𝐴?𝐴?,𝐴?𝐴?+1), (𝐴?𝐴?+1,𝐴?𝐴?+1) � , ∀𝐴? < 𝐴?. (1) 30 | 31 | **Definition 2.2.** Let S𝐴?, S𝐴?+1, 1 ≤ 𝐴? < 𝐴?, be the vertices of two consecutive rows of G = (S, R ∪ C), where S𝐴? = �(𝐴?, 1), .., (𝐴?,𝐴?𝐴?)�, where (𝐴?, 𝐴?) ∈S, and 𝐴?𝐴? is the number of vertices in row 𝐴?. If there exists a coupling 𝐴? between S𝐴? and S𝐴?+1 such that for all 𝐴?𝐴? ∈S𝐴?,𝐴?𝐴? ∈S𝐴?+1 we have that (𝐴?𝐴?,𝐴?𝐴?) ∈𝐴? if and only if (𝐴?𝐴?,𝐴?𝐴?) ∈ C, then the two rows are coupled. 32 | 33 | **Observation 2.3.** If all the pairs of consecutive rows of G are coupled, then there exist valid crochet instructions 𝐴?(G) that use only the instructions sc, inc(x) and dec(x). 34 | 35 | **Definition 2.4.** Let 𝐴?G : S → 𝐴? be an embedding of the vertices of G on 𝐴?. An embedded edge of G is a shortest geodesic between the embedding of two vertices of G which share an edge, or between the embedding of the first and last vertices on the same row. 36 | 37 | **Definition 2.5.** Let (𝐴?,𝐴?) ∈ 𝐴? be two points whose geodesic distance is larger than some constant that depends on the stitch width 𝐴?, and let𝛹?𝐴?,𝐴? be the shortest geodesic between them. If𝛹?𝐴?,𝐴? intersects some embedded edge of an embedding 𝐴?G, for any two such points, then we say that 𝐴?G covers 𝐴?. 38 | 39 | **Observation 2.6.** Let 𝐴?G : S → 𝐴? be an embedding of the vertices of G which covers 𝐴?, and 𝐴?(G) valid crochet instructions for G. If all the edge lengths induced by 𝐴?G are equal to 𝐴?, then when 𝐴?(G) will be crocheted and stuffed the result will be "similar" to 𝐴?. 40 | 41 | **2.3 Crochetable Models** 42 | Curvature. Crocheting the patterns yields an empty flexible shell of fabric, which obtains its final shape by stuffing. Whether the stuffed model obtains the intended shape depends on how the model is stuffed (lightly, firmly, uniformly), as the yarn has some flexibility and will extend to accommodate if the model is overstuffed. We will assume that the model is stuffed enough to attain maximal volume, but not too much to cause the yarn to stretch and generate gaps. Thus, we expect the resulting stitch size to be similar to the edge lengths induced by the embedding of the crochet graph. If for a given graph G its embedding in 3D with edge lengths 𝐴? is unique, we expect the crocheted and stuffed shape to be similar to the input surface. Importantly, unless the shape is convex, the edge lengths alone (i.e., the metric) do not contain enough information to uniquely determine the shape of a non-stuffed model. For example, a surface that has a "crater" leads to edge lengths which can be realized either as a crater or as a "hill". However, if we add the maximal volume assumption, only the hill is possible. This in fact implies that surfaces which have "craters", or more formally, regions of negative mean curvature with positive Gaussian curvature, cannot be realized by crocheting and stuffing alone. This is similar to the observation made by Konakovich et al. [2018], that surfaces which have negative mean curvature cannot be realized by maximizing the volume with a given conformal metric (i.e., only isotropic scaling is allowed relative to the flat configuration). We handle this case similarly, by preprocessing the model so that it does not contain "craters" (Section 7.1.1). Furthermore, in our case, since we allow anisotropic scaling, negative mean curvature with negative Gaussian curvature is in fact possible, but requires a modified sampling rate, which we discuss in Section 7.1.2. To conclude, in terms of geometric obstructions to crochetability, the four possible curvature situations are summarized in Table 1. Note that, as with any sampling-dependent method, if the sampling rate (namely, the number of rows 𝐴?) is too small compared to the feature size of the model, the crocheted output will lose some of the geometric detail. 43 | 44 | Branching. Observation 2.6 requires that the crochet graph embedding 𝐴?G covers the input surface 𝐴?. Because of the special structure of this graph, this induces additional constraints on the possible geometries. Intuitively, models that branch (see Figure 7) cannot be covered in this way. Mathematically, this means that the geodesic distance function on 𝐴? from the embedding of the seed vertex 𝐴? cannot have saddles. This is solved by segmenting the shape, and crocheting the segments in an iterative manner. We explain this in detail in Section 7.2. 45 | 46 | **3 Overview** 47 | Given a 3D mesh 𝐴?, a seed point 𝐴? and a stitch width 𝐴?, we first compute a crochet graph G and its embedding 𝐴?G such that they adhere to Observations 2.3 and 2.6 (Section 4). Then we compute the crochet pattern 𝐴?(G) (Section 5). To generate G and 𝐴?G, we first compute the embedding of the vertices S on 𝐴? (Section 4.1), and then derive from that the connectivity of G, i.e. the row edges R and column edges C (Section 4.2). To compute the pattern 𝐴?(G), we first translate the graph into a program using standard code synthesis tools (Section 5.1), and then apply loop unrolling to make the pattern human 48 | -readable (Section 5.2). See Algorithm 1. 49 | 50 | **4 Mesh to Crochet Graph** 51 | **4.1 Geometry** 52 | Observation 2.3 implies that the vertices S should be grouped into ordered rows, where in each row the vertices have a well defined order. We address this requirement by computing two non-negative monotonically increasing, constant speed functions 𝐴? ,𝐴? : 𝐴? → R which define the row-order and column-order of every point on 𝐴?. Furthermore, Observation 2.6 implies that the distance between embedded rows, and between embedded vertices in the same row should be 𝐴?. We address this by sampling 𝐴? ,𝐴? appropriately. 53 | 54 | Row order 𝐴? . Our models are closed (so they can be stuffed), and therefore the first and last rows in the graph G contain a single vertex. The first row contains only the seed 𝐴?, and its function value is 𝐴? (𝐴?) = 0. We take 𝐴? (𝐴?), 𝐴? ∈V to be 𝐴? (𝐴?) = 𝐴?(𝐴?,𝐴?), where 𝐴? is the geodesic distance. Thus, the isolines of 𝐴? are rows, and two points 𝐴?,𝐴? ∈ 𝐴? are on the same row if 𝐴? (𝐴?) = 𝐴? (𝐴?). If 𝐴? has more than one maximum, then we need to handle branching (see Section 7.2). Otherwise, the vertex that attains the maximum of 𝐴? , denoted as 𝐴?𝐴? will be the single vertex on the last row. 55 | 56 | Column order 𝐴?. We first cut 𝐴? along a geodesic from 𝐴? to 𝐴?𝐴?, so that our model and the graph that we compute have the same topology, and denote the cut model by 𝐴?𝐴?. The requirements are that within each row the vertices of G have a well defined order. A row is an isoline of 𝐴? , and therefore the rate of change along the isoline is given by the directional derivative of 𝐴? in the direction of the tangent to the isoline. Specifically, the tangent to the isoline of 𝐴? at a point 𝐴? ∈𝐴? is given by 𝐴?∇𝐴? , where 𝐴? is the rotation by 𝜋/2 in the tangent plane of 𝐴?. Thus to find 𝐴?, we solve an optimization problem whose objective is to minimize ∫𝐴?𝐴? |⟨𝐴?∇𝐴? , ∇𝐴?⟩ − 12, s.t. 𝐴?(B) = 0. Here, B ⊂ V is the longest connected path of boundary vertices of 𝐴?𝐴? along which 𝐴? is strictly monotone. 57 | 58 | Sampling. The functions 𝐴? ,𝐴? define a parameterization of 𝐴?𝐴? to the plane. We conjecture that this parameterization is bijective (as it was in all of our experiments), but leave the proof to future work. The parameterization may have a large metric distortion, however, if 𝐴? (𝐴?) = 𝐴? (𝐴?) = 𝐴?0 for some two points 𝐴?,𝐴? ∈ 𝐴?, then |𝐴?(𝐴?) − 𝐴?(𝐴?)| is equal to the length of the isoline of 𝐴?0 between 𝐴? and 𝐴?. Therefore, we uniformly sample 𝐴? ,𝐴? on a 2𝐴? grid of width 𝐴?, yielding the vertices of S with indices (𝐴? /𝐴?,𝐴?/𝐴?). Pushing forward the sampled points to the mesh 𝐴?𝐴? yields the embedding of S on 𝐴?𝐴? (and therefore 𝐴?), namely 𝐴?G. 59 | 60 | **4.2 Connectivity** 61 | Row edges R. Each two consecutive vertices of S on the same row are connected by a row edge. Namely, R = �𝐴? 𝐴?=1 R𝐴?, and R𝐴? = ��(𝐴?, 𝐴?), (𝐴?, 𝐴? +1)� | 𝐴? ∈ {1, ..,𝐴?𝐴? −1} �. Here 𝐴?𝐴? = ��S𝐴? �� = ��{(𝐴?, 𝐴?) ∈ S} ��, namely the number of vertices in the 𝐴?-th row. 62 | 63 | Let 𝐴?,𝑦 ∈ S be two consecutive vertices on the 𝐴?-th row. Then we have that 𝐴? (𝐴?) = 𝐴? (𝑦) = 𝐴?0 and |𝐴?(𝐴?) − 𝐴?(𝑦)| = 𝐴?. Therefore, 𝐴?𝛹? (𝐴?0) �𝐴?G(𝐴?),𝐴?G(𝑦)� = 𝐴?, where 𝛹?(𝐴?0) is the isoline of 𝐴?0 on 𝐴?, and 𝐴?𝛹? (𝐴?0) is the distance along the isoline. Hence, the Euclidean distance between the embedded vertices ||𝐴?G(𝐴?) − 𝐴?G(𝑦)|| ≤ 𝐴?, and the distance tends to 𝐴? for a "small enough" stitch size. Here, "small enough", means on the order of the square root of the radius of curvature of 𝛹?(𝐴?0), which is given in terms of the normal curvature in direction 𝐴?∇𝐴?. 64 | 65 | Column edges C. First, Observation 2.3 requires that all pairs of consecutive rows are coupled. Let 𝐴?𝐴? be the coupling corresponding to rows S𝐴?, S𝐴?+1, and let (𝐴?𝐴?,𝐴?𝐴?) ∈ 𝐴?𝐴?. Since 𝐴?𝐴? and 𝐴?𝐴? are on consecutive rows, and therefore embedded on isolines of 𝐴? which differ by 𝐴?, the minimal distance ||𝐴?G(𝐴?𝐴?) − 𝐴?G(𝐴?𝐴?)|| is close to 𝐴?. Therefore, if among all couplings we seek the minimizer of: 66 | min 𝐴?𝐴?𝐴?𝐴?𝐴?𝐴?𝐴?𝐴?𝐴?𝐴? 67 | ∑︁ 68 | (𝐴?𝐴?,𝐴?𝐴? ) ∈𝐴?𝐴? ||𝐴?G(𝐴?𝐴?) − 𝐴?G(𝐴?𝐴?)||, (2) 69 | then the length of the column edges will be close to 𝐴?. A minimal coupling between every pair of consecutive rows is found by Dynamic Time Warping (DTW) [Gold and Sharir 2018; Sakoe and Chiba 1978]. 70 | 71 | **5 Crochet Graph to Instructions** 72 | **5.1 Graph to Program** 73 | In order to turn the crochet graph into instructions, we rely on the following observation: crochet instructions (patterns) constitute an instruction set, and as such, crocheting is an execution and the finished object is an execution result. Moreover, because of the nature of a crocheted object, it is not only a result but a step-bystep execution trace. Therefore, given a crochet object, or in this case its graph representation G, deriving instructions constitutes a form of execution reconstruction [Zuo et al. 2021], a method for reconstructing the set of instructions that lead to an execution trace. While reconstructing an execution trace generally requires searching an exponential space of possible instruction sequences, the crochet instruction set is limited enough that reconstituting a trace is done in linear time using a transducer. In order to reconstruct the trace, the degree of the graph vertices in both the current row S𝐴? and next row S𝐴?+1 must be considered. Therefore, an execution reconstruction transducer accepts two consecutive rows and their connecting edges, and advances on the rows based on the vertex degrees in either row. For example, if at S𝐴?+1, the transducer is at a vertex with one edge connecting it to the previous row S𝐴?, and at the current head of S𝐴? there is only a connection to the current head of S𝐴?+1, the transducer will yield a sc. If there are 𝐴? > 1 connected vertices in S𝐴? to the head of S𝐴?+1, the transducer will advance on S𝐴? to consume them all, advance on a single vertex on S𝐴?+1, and produce a dec(x). Analogously, for 𝐴? > 1 connected vertices in S𝐴?+1 to the head of S𝐴?, the transducer will advance on S𝐴?+1 to consume them, advance on a single vertex on S𝐴? and then produce a inc(x). Figure 5 (left, middle) shows an illustration of the different situations. This is entirely analogous to the way crocheting the row is done. Because the transducer chooses its transition based on which vertex at the current heads of the rows has a degree larger than 1, it is not technically deterministic. However, for a non-deterministic choice to exist, both the head of S𝐴? should be connected to 74 | multiple vertices in S𝐴?+1 and vice versa. This is impossible, since all the pairs of consecutive rows of G are coupled (see Figure 5(right)). Thus, under the constraints of the input, i.e. a valid crochet graph G, all the transitions are mutually exclusive, rendering the transducer’s behavior essentially deterministic. 75 | 76 | **5.2 Program to Human-readable Pattern** 77 | The instructions in a reconstituted trace can get quite repetitive. The raw output can contain the following rows: 78 | row 2: sc, inc, sc, sc, sc, inc, sc, sc, sc, inc, sc, sc 79 | row 3: sc, inc, sc, sc, sc, inc, sc, sc, sc, inc, sc, sc 80 | indicating that row 2 is constructed via an sc instruction followed by an inc then another two sc, repeating three times, then row 3 is constructed the same way. To make the instructions both succinct and more human-readable, it is customary to convert this code to: 81 | rows 2-3: (sc, inc, 2sc)*3 82 | In order to do this, we employ a disassembly technique called loop folding [Lee et al. 1994], which finds maximal repetitions of instructions and turns them into loops. Loop folding of crochet instructions occurs at three different levels: repeating rows, repeating sequences of stitches, and repeating stitches. In order to find maximal repeating sequences, the order in which loops are folded must be: sequences first, and then repeating stitches. In the above example, if repeating stitches were folded first, row 2 after this initial folding would be sc, inc, 3sc, inc, 3sc, inc, 2sc, which means the repetition that can be identified within the row would have been smaller. Instead it is first folded to find the repeating sequence (sc, inc, sc, sc)*3, which is maximal, and then the internal sequence is re-folded to identify the 2sc. Finally, identical rows are folded together. 83 | 84 | **6 Crochet Graph to 3D Embedding** 85 | We generate a 3D embedding 𝐴?G of the crochet graph G using ShapeUp [Bouaziz et al. 2012], in order to obtain a visualization of the expected result. Interestingly, using purely geometric conditions the expected result is quite similar to the crocheted model in practice. We use the following constraints for ShapeUp: (1) The column edges which represent sc stitches, as well as the row edges are constrained to have length 𝐴?, (2) the embedding of the seed point 𝐴? is fixed to the position of the seed vertex, and (3) smoothness. We initialize 𝐴?G using the sampled points 𝐴?G. Some of the figures (see for example Figure 6) show in addition to the embedded crochet graph 𝐴?G the ShapeUp result 𝐴?G. 86 | 87 | **7 Obstructions to Crochetability** 88 | **7.1 Negative mean curvature** 89 | As curvature computations are not scale invariant, all the models are normalized to have surface area equal to 1, so that we can use the same parameters across all the models. 90 | 91 | **7.1.1 Positive Gaussian curvature.** Crocheting and stuffing a model which has "craters", i.e. regions of positive Gaussian curvature and negative mean curvature, will not yield a geometry that is similar to the input mesh. Thus, we apply a pre-processing step (similarly to Konakovic et al. [2018]) to smooth out the craters. Specifically, we apply Conformal Mean Curvature Flow [Kazhdan et al. 2012] localized to these areas until the mean curvature is positive everywhere. 92 | 93 | **7.1.2 Negative Gaussian curvature.** The sampling rate of the isolines of 𝐴? is determined by the directional derivative of 𝐴? w.r.t. the tangent to the isoline, namely by ⟨∇𝐴?, 𝐴?∇𝐴? ⟩. If the curvature in the direction of the isoline 𝐴?𝐴? ∇𝐴? is large compared to the stitch width 𝐴?, a uniform sampling rate is inadequate, and does not result in a similar geometry. We therefore adjust the sampling rate in these regions by setting ⟨∇𝐴?, 𝐴?∇𝐴? ⟩ = ℎ(𝐴?𝐴? ∇𝐴? ). We take ℎ(𝐴?) = tanh(−𝐴?/𝛹?)/2+1, to avoid degenerate sampling rates, with 𝛹? = 10. Figure 6 shows an example of such a model. In the central region, the model has negative mean and Gaussian curvature (a,b). Using a uniform sampling rate does not fully reconstruct the negative curvature (d,f), whereas a curvature adapted sampling does (c,e). 94 | 95 | **7.2 Branching** 96 | If for a given seed 𝐴?, the geodesic function 𝐴? (𝐴?) = 𝐴?(𝐴?,𝐴?) has multiply-connected isolines, the graph G cannot cover the model. In these cases, the model is automatically decomposed into multiple segments, each of which can be crocheted using the approach described in Sections 4 and 5. The segments are attached by a method called "join-as-you-go" [Bennett 2020], meaning each segment is crocheted onto the last row of the previous segment, and therefore no additional sewing is required. Furthermore, the segment boundaries are not visible in the crocheted object. The more common method, in contrast, involves sewing together closed segments, which requires accuracy to achieve geometric details such as symmetry. In this section we describe the modifications required to accommodate such objects. 97 | 98 | **7.2.1 Mesh to Graph.** Given a seed 𝐴? let 𝐴? (𝐴?) = 𝐴?(𝐴?,𝐴?). Let Π = (𝜋?1, .., 𝜋?𝐴?) be the saddle points of 𝐴? , sorted by 𝐴?𝐴? = 𝐴? (𝜋?𝐴?). Namely 𝐴?1 ≤ 𝐴?2 ≤ ... ≤ 𝐴?𝐴?. For each 𝜋?𝐴? in order, we compute the isoline of 𝐴?𝐴?, denoted by 𝛹?𝐴?, and slice a new segment for each connected component of 𝛹?𝐴?. Meaning, the segments are obtained by slicing along the isolines of the saddle points, ordered by increasing geodesic distance to the seed. Figure 7(a) shows the isolines of 𝐴? for the seed point 𝐴? marked in red, as well as the saddles (cyan), and maxima (blue). In addition to the segmentation, we generate a directed graph 𝐴?𝜋?, whose vertices are the segments, and where an edge (𝐴?,𝐴?) exists if the segments 𝐴?𝐴? and 𝐴?𝐴? share a boundary, and 𝐴? values on 𝐴?𝐴? are smaller than 𝐴? values on 𝐴?𝐴?. The crocheting order of the segments is determined by a topological sort of 𝐴?𝜋?. Figure 7(b) shows the resulting segments. Very thin segments might not be sampled (marked in black in Figure 7(b) and other figures), and are skipped and not crocheted. 99 | 100 | Geometry. Any resulting segment 𝐴?𝐴? is either a half sphere or a cylinder, and thus can be covered by a crochet graph G𝐴?. While 𝐴? is computed for the whole model before segmentation, 𝐴? is computed for each segment separately. The cut for 𝐴? is made from the maxima of 𝐴? in the segment to the closest point on the segment’s boundary. If 𝐴? attains its maximum on one of the boundaries of the segment (there are at most two boundaries), then cut is computed to the closest point on the other boundary. Figure 8 shows an example of the location of the cut, where we show the front and the back of the model. We show the location of the cut in brown on the segmented model (a), as well as the location of the cut in the crocheted model (b). To mark the location of the cut during crocheting a piece of yarn was used to mark the beginning/end of the row. 101 | 102 | Connectivity. For every two segments 𝐴?𝐴?, 𝐴?𝐴? which share an edge (𝐴?,𝐴?) in 𝐴?𝜋?, we add an additional condition that the last row of 𝐴?𝐴? is coupled to the first row of 𝐴?𝐴?. Figure 7(c) shows the crochet graph for all the segments of the Homer model. Finally, (e) shows the crocheted model, where each segment was crocheted with a different color for better visualization. 103 | 104 | **7.2.2 Graph to instructions.** The same simulation of the crochet operations is applied to the first row of a new segment, but the sequence of stitches that is used as its previous row is no longer a full row. Instead, the last rows of all attached segments are arranged and filtered to include only vertices that have a connecting edge to the new segment’s row, constituting a “joint” previous row. The transducer then takes stock of when its consumption of the previous row skips stitches 105 | , splits segments, skips segments, or spans multiple parent segments, and includes this information in the row instructions. 106 | 107 | **8 Limitations** 108 | Our method only handles closed surfaces, since we aim for Amigurumi models, which are stuffed. The segmentation approach may generate thin segments, which are harder to crochet. While we filter out very thin segments, we believe that small modifications to the singularity locations can yield a better segmentation without considerably affecting the shape. Our approach does not take the symmetry of the model into account, and thus discretization errors for low resolution patterns may lead to non-symmetric crocheted models. Our current setup also has limited design freedom. While using a single seed is simple, it does not give the user control of the knitting direction throughout the shape. 109 | 110 | **9 Results** 111 | **9.1 Implementation Details** 112 | We implemented our algorithm in Matlab and C++. We use Heat Geodesics [Crane et al. 2017] for computing geodesic distances, where we took the recommended time parameter 𝐴?, namely the average edge length squared. In some cases, the mesh has too many geometric details, leading to neighboring saddles/extrema of the distance function. In this case, we take advantage of the tunability of heat geodesics, and repeated multiply 𝐴? by an increasing power of 2 until there are no more neighboring saddles/extrema. For computing geodesic paths we use [Sharp and Crane 2020]. Table 2 provides the statistics for all the models. Algorithm running times were measured on a desktop machine with an Intel Core i7. 113 | 114 | **Table 2: Statistics for the crocheted models.** 115 | Model | Rows | Segments | Stitches | Time (min) 116 | ---|---|---|---|--- 117 | Teddy, Fig 1, Fig 10 | 60 | 6 | 3670 | 2.5 118 | Teddy, Fig 10 | 30 | 6 | 880 | 2.1 119 | Homer, Fig 7 | 50 | 6 | 1605 | 2.0 120 | Mushroom, Fig 9 | 30 | 1 | 365 | 0.2 121 | Man, Fig 8 | 45 | 6 | 1643 | 1.5 122 | C, Fig 10 | 40 | 1 | 1118 | 0.3 123 | Fish, Fig 10 | 40 | 1 | 1020 | 0.3 124 | Bob, Fig 10 | 30 | 4 | 854 | 1.0 125 | Bunny, Fig 10 | 45 | 5 | 2470 | 0.8 126 | Moomoo, Fig 10 | 60 | 8 | 2491 | 6.9 127 | Pretzel, Fig 10 | 30 | 7 | 586 | 1.5 128 | 129 | **9.2 Gallery** 130 | Figures 1, 7, 6 demonstrate our results. Figure 10 shows additional models, where we show the (a) segmented shape and seed, (b) the crochet graph G and its embedding 𝐴?G on the input mesh, (c) the embedding 𝐴?G generated from the edge lengths, and (d) the final crocheted object. The sixth row of Figure 10 shows an example of a pretzel model, which cannot be scheduled for machine-knitting as discussed at AutoKnit [Narayanan et al. 2018] (see Figure 25 there). Our method, on the other hand, generates crochetable instructions. The last two rows of Figure 10 show the results for the same model, seed point, yarn type and hook but using different stitch width 𝐴?. Note that while manually adapting the pattern to different sizes is a difficult task, our algorithm performs it automatically. Note that the shapes are similar to the input, and the segment boundaries are not visible in the output crocheted models. Therefore, we can achieve varied geometries without visibly segmenting the shape, leading to more visually pleasing results than the approach by Igarashi et al. [2008a] (see Figure 11 there). Furthermore, our results have a closer resemblance to the input, compared to the method by Guo et al. [2020] (see Figure 12 there). 131 | 132 | **9.3 Creases** 133 | Since stuffed items tend to be smooth, there exist crochet shaping techniques that allow the generation of creases. Specifically, instead of inserting the hook under both loops of the stitch, the hook is inserted only in the front loop (denoted Front Loop Only FLO), or only in the back loop (denoted Back Loop Only BLO). The BLO (resp. FLO) stitch allows creases which are positively (resp. negatively) curved with respect to the columns direction (i.e. orthogonal to the knitting direction). We define crease vertices as vertices that have large maximum absolute curvature, and their maximum absolute curvature direction is orthogonal to the knitting direction. For any two consecutive crease vertices on the same row, we mark all the stitches based on these vertices as BLO or FLO, depending on the sign of the curvature. We allow the user to choose whether to enable this option or not. Figure 9 shows an example of a model where this shaping technique was used. The BLO (resp. FLO) edges are marked in green (resp. cyan) in (b). Note the corresponding sharp crease in the knitted object (c). We note that creases have also been used in knitting. For example, [Wu et al. 2019] allow for creases, but they use a different technique. 134 | 135 | **10 Conclusions and Future Work** 136 | We presented a novel automatic approach for generating crochet knitting instructions for Amigurumi from an input triangle mesh. Given a single seed point and a stitch size, we generate human-readable instructions that use only simple crochet stitches (sc, inc, dec). Our method is applicable to a variety of geometries, and leads to crocheted models which are visually similar to the input shape. In the future we plan to incorporate our method within an interactive framework that allows the user to move the seed point, change the yarn and the gauge and see the expected shape of the output. Furthermore, we plan to add colors and texture, as well as support for additional types of stitches. With the wide popularity of Amigurumi, and crochet in general, in recent years, we believe that tools that allow novice users, as well as pattern designers, to generate crochet instructions from 3D models would be quickly adopted and built upon by the crocheters and makers communities. Our approach provides an important stepping stone in this direction, and we expect that it will sow the seeds for further research in computational crochet. 137 | 138 | **Acknowledgments** 139 | M. Edelstein acknowledges funding from the Jacobs Qualcomm Excellence Scholarship and the Zeff, Fine and Daniel Scholarship. M. Ben Chen acknowledges the support of the Israel Science Foundation (grant No. 1073/21), and the European Research Council (ERC starting grant no. 714776 OPREP). We also thank SHREC’07 and Josh Holinaty for providing models. -------------------------------------------------------------------------------- /monkey.obj: -------------------------------------------------------------------------------- 1 | # Blender 4.2.0 2 | # www.blender.org 3 | mtllib monkey.mtl 4 | o Suzanne 5 | v 0.437500 0.164062 0.765625 6 | v -0.437500 0.164062 0.765625 7 | v 0.500000 0.093750 0.687500 8 | v -0.500000 0.093750 0.687500 9 | v 0.546875 0.054688 0.578125 10 | v -0.546875 0.054688 0.578125 11 | v 0.351562 -0.023438 0.617188 12 | v -0.351562 -0.023438 0.617188 13 | v 0.351562 0.031250 0.718750 14 | v -0.351562 0.031250 0.718750 15 | v 0.351562 0.132812 0.781250 16 | v -0.351562 0.132812 0.781250 17 | v 0.273438 0.164062 0.796875 18 | v -0.273438 0.164062 0.796875 19 | v 0.203125 0.093750 0.742188 20 | v -0.203125 0.093750 0.742188 21 | v 0.156250 0.054688 0.648438 22 | v -0.156250 0.054688 0.648438 23 | v 0.078125 0.242188 0.656250 24 | v -0.078125 0.242188 0.656250 25 | v 0.140625 0.242188 0.742188 26 | v -0.140625 0.242188 0.742188 27 | v 0.242188 0.242188 0.796875 28 | v -0.242188 0.242188 0.796875 29 | v 0.273438 0.328125 0.796875 30 | v -0.273438 0.328125 0.796875 31 | v 0.203125 0.390625 0.742188 32 | v -0.203125 0.390625 0.742188 33 | v 0.156250 0.437500 0.648438 34 | v -0.156250 0.437500 0.648438 35 | v 0.351562 0.515625 0.617188 36 | v -0.351562 0.515625 0.617188 37 | v 0.351562 0.453125 0.718750 38 | v -0.351562 0.453125 0.718750 39 | v 0.351562 0.359375 0.781250 40 | v -0.351562 0.359375 0.781250 41 | v 0.437500 0.328125 0.765625 42 | v -0.437500 0.328125 0.765625 43 | v 0.500000 0.390625 0.687500 44 | v -0.500000 0.390625 0.687500 45 | v 0.546875 0.437500 0.578125 46 | v -0.546875 0.437500 0.578125 47 | v 0.625000 0.242188 0.562500 48 | v -0.625000 0.242188 0.562500 49 | v 0.562500 0.242188 0.671875 50 | v -0.562500 0.242188 0.671875 51 | v 0.468750 0.242188 0.757812 52 | v -0.468750 0.242188 0.757812 53 | v 0.476562 0.242188 0.773438 54 | v -0.476562 0.242188 0.773438 55 | v 0.445312 0.335938 0.781250 56 | v -0.445312 0.335938 0.781250 57 | v 0.351562 0.375000 0.804688 58 | v -0.351562 0.375000 0.804688 59 | v 0.265625 0.335938 0.820312 60 | v -0.265625 0.335938 0.820312 61 | v 0.226562 0.242188 0.820312 62 | v -0.226562 0.242188 0.820312 63 | v 0.265625 0.156250 0.820312 64 | v -0.265625 0.156250 0.820312 65 | v 0.351562 0.242188 0.828125 66 | v -0.351562 0.242188 0.828125 67 | v 0.351562 0.117188 0.804688 68 | v -0.351562 0.117188 0.804688 69 | v 0.445312 0.156250 0.781250 70 | v -0.445312 0.156250 0.781250 71 | v 0.000000 0.429688 0.742188 72 | v 0.000000 0.351562 0.820312 73 | v 0.000000 -0.679688 0.734375 74 | v 0.000000 -0.320312 0.781250 75 | v 0.000000 -0.187500 0.796875 76 | v 0.000000 -0.773438 0.718750 77 | v 0.000000 0.406250 0.601562 78 | v 0.000000 0.570312 0.570312 79 | v 0.000000 0.898438 -0.546875 80 | v 0.000000 0.562500 -0.851562 81 | v 0.000000 0.070312 -0.828125 82 | v 0.000000 -0.382812 -0.351562 83 | v 0.203125 -0.187500 0.562500 84 | v -0.203125 -0.187500 0.562500 85 | v 0.312500 -0.437500 0.570312 86 | v -0.312500 -0.437500 0.570312 87 | v 0.351562 -0.695312 0.570312 88 | v -0.351562 -0.695312 0.570312 89 | v 0.367188 -0.890625 0.531250 90 | v -0.367188 -0.890625 0.531250 91 | v 0.328125 -0.945312 0.523438 92 | v -0.328125 -0.945312 0.523438 93 | v 0.179688 -0.968750 0.554688 94 | v -0.179688 -0.968750 0.554688 95 | v 0.000000 -0.984375 0.578125 96 | v 0.437500 -0.140625 0.531250 97 | v -0.437500 -0.140625 0.531250 98 | v 0.632812 -0.039062 0.539062 99 | v -0.632812 -0.039062 0.539062 100 | v 0.828125 0.148438 0.445312 101 | v -0.828125 0.148438 0.445312 102 | v 0.859375 0.429688 0.593750 103 | v -0.859375 0.429688 0.593750 104 | v 0.710938 0.484375 0.625000 105 | v -0.710938 0.484375 0.625000 106 | v 0.492188 0.601562 0.687500 107 | v -0.492188 0.601562 0.687500 108 | v 0.320312 0.757812 0.734375 109 | v -0.320312 0.757812 0.734375 110 | v 0.156250 0.718750 0.757812 111 | v -0.156250 0.718750 0.757812 112 | v 0.062500 0.492188 0.750000 113 | v -0.062500 0.492188 0.750000 114 | v 0.164062 0.414062 0.773438 115 | v -0.164062 0.414062 0.773438 116 | v 0.125000 0.304688 0.765625 117 | v -0.125000 0.304688 0.765625 118 | v 0.203125 0.093750 0.742188 119 | v -0.203125 0.093750 0.742188 120 | v 0.375000 0.015625 0.703125 121 | v -0.375000 0.015625 0.703125 122 | v 0.492188 0.062500 0.671875 123 | v -0.492188 0.062500 0.671875 124 | v 0.625000 0.187500 0.648438 125 | v -0.625000 0.187500 0.648438 126 | v 0.640625 0.296875 0.648438 127 | v -0.640625 0.296875 0.648438 128 | v 0.601562 0.375000 0.664062 129 | v -0.601562 0.375000 0.664062 130 | v 0.429688 0.437500 0.718750 131 | v -0.429688 0.437500 0.718750 132 | v 0.250000 0.468750 0.757812 133 | v -0.250000 0.468750 0.757812 134 | v 0.000000 -0.765625 0.734375 135 | v 0.109375 -0.718750 0.734375 136 | v -0.109375 -0.718750 0.734375 137 | v 0.117188 -0.835938 0.710938 138 | v -0.117188 -0.835938 0.710938 139 | v 0.062500 -0.882812 0.695312 140 | v -0.062500 -0.882812 0.695312 141 | v 0.000000 -0.890625 0.687500 142 | v 0.000000 -0.195312 0.750000 143 | v 0.000000 -0.140625 0.742188 144 | v 0.101562 -0.148438 0.742188 145 | v -0.101562 -0.148438 0.742188 146 | v 0.125000 -0.226562 0.750000 147 | v -0.125000 -0.226562 0.750000 148 | v 0.085938 -0.289062 0.742188 149 | v -0.085938 -0.289062 0.742188 150 | v 0.398438 -0.046875 0.671875 151 | v -0.398438 -0.046875 0.671875 152 | v 0.617188 0.054688 0.625000 153 | v -0.617188 0.054688 0.625000 154 | v 0.726562 0.203125 0.601562 155 | v -0.726562 0.203125 0.601562 156 | v 0.742188 0.375000 0.656250 157 | v -0.742188 0.375000 0.656250 158 | v 0.687500 0.414062 0.726562 159 | v -0.687500 0.414062 0.726562 160 | v 0.437500 0.546875 0.796875 161 | v -0.437500 0.546875 0.796875 162 | v 0.312500 0.640625 0.835938 163 | v -0.312500 0.640625 0.835938 164 | v 0.203125 0.617188 0.851562 165 | v -0.203125 0.617188 0.851562 166 | v 0.101562 0.429688 0.843750 167 | v -0.101562 0.429688 0.843750 168 | v 0.125000 -0.101562 0.812500 169 | v -0.125000 -0.101562 0.812500 170 | v 0.210938 -0.445312 0.710938 171 | v -0.210938 -0.445312 0.710938 172 | v 0.250000 -0.703125 0.687500 173 | v -0.250000 -0.703125 0.687500 174 | v 0.265625 -0.820312 0.664062 175 | v -0.265625 -0.820312 0.664062 176 | v 0.234375 -0.914062 0.632812 177 | v -0.234375 -0.914062 0.632812 178 | v 0.164062 -0.929688 0.632812 179 | v -0.164062 -0.929688 0.632812 180 | v 0.000000 -0.945312 0.640625 181 | v 0.000000 0.046875 0.726562 182 | v 0.000000 0.210938 0.765625 183 | v 0.328125 0.476562 0.742188 184 | v -0.328125 0.476562 0.742188 185 | v 0.164062 0.140625 0.750000 186 | v -0.164062 0.140625 0.750000 187 | v 0.132812 0.210938 0.757812 188 | v -0.132812 0.210938 0.757812 189 | v 0.117188 -0.687500 0.734375 190 | v -0.117188 -0.687500 0.734375 191 | v 0.078125 -0.445312 0.750000 192 | v -0.078125 -0.445312 0.750000 193 | v 0.000000 -0.445312 0.750000 194 | v 0.000000 -0.328125 0.742188 195 | v 0.093750 -0.273438 0.781250 196 | v -0.093750 -0.273438 0.781250 197 | v 0.132812 -0.226562 0.796875 198 | v -0.132812 -0.226562 0.796875 199 | v 0.109375 -0.132812 0.781250 200 | v -0.109375 -0.132812 0.781250 201 | v 0.039062 -0.125000 0.781250 202 | v -0.039062 -0.125000 0.781250 203 | v 0.000000 -0.203125 0.828125 204 | v 0.046875 -0.148438 0.812500 205 | v -0.046875 -0.148438 0.812500 206 | v 0.093750 -0.156250 0.812500 207 | v -0.093750 -0.156250 0.812500 208 | v 0.109375 -0.226562 0.828125 209 | v -0.109375 -0.226562 0.828125 210 | v 0.078125 -0.250000 0.804688 211 | v -0.078125 -0.250000 0.804688 212 | v 0.000000 -0.289062 0.804688 213 | v 0.257812 -0.312500 0.554688 214 | v -0.257812 -0.312500 0.554688 215 | v 0.164062 -0.242188 0.710938 216 | v -0.164062 -0.242188 0.710938 217 | v 0.179688 -0.312500 0.710938 218 | v -0.179688 -0.312500 0.710938 219 | v 0.234375 -0.250000 0.554688 220 | v -0.234375 -0.250000 0.554688 221 | v 0.000000 -0.875000 0.687500 222 | v 0.046875 -0.867188 0.687500 223 | v -0.046875 -0.867188 0.687500 224 | v 0.093750 -0.820312 0.710938 225 | v -0.093750 -0.820312 0.710938 226 | v 0.093750 -0.742188 0.726562 227 | v -0.093750 -0.742188 0.726562 228 | v 0.000000 -0.781250 0.656250 229 | v 0.093750 -0.750000 0.664062 230 | v -0.093750 -0.750000 0.664062 231 | v 0.093750 -0.812500 0.640625 232 | v -0.093750 -0.812500 0.640625 233 | v 0.046875 -0.851562 0.632812 234 | v -0.046875 -0.851562 0.632812 235 | v 0.000000 -0.859375 0.632812 236 | v 0.171875 0.218750 0.781250 237 | v -0.171875 0.218750 0.781250 238 | v 0.187500 0.156250 0.773438 239 | v -0.187500 0.156250 0.773438 240 | v 0.335938 0.429688 0.757812 241 | v -0.335938 0.429688 0.757812 242 | v 0.273438 0.421875 0.773438 243 | v -0.273438 0.421875 0.773438 244 | v 0.421875 0.398438 0.773438 245 | v -0.421875 0.398438 0.773438 246 | v 0.562500 0.351562 0.695312 247 | v -0.562500 0.351562 0.695312 248 | v 0.585938 0.289062 0.687500 249 | v -0.585938 0.289062 0.687500 250 | v 0.578125 0.195312 0.679688 251 | v -0.578125 0.195312 0.679688 252 | v 0.476562 0.101562 0.718750 253 | v -0.476562 0.101562 0.718750 254 | v 0.375000 0.062500 0.742188 255 | v -0.375000 0.062500 0.742188 256 | v 0.226562 0.109375 0.781250 257 | v -0.226562 0.109375 0.781250 258 | v 0.179688 0.296875 0.781250 259 | v -0.179688 0.296875 0.781250 260 | v 0.210938 0.375000 0.781250 261 | v -0.210938 0.375000 0.781250 262 | v 0.234375 0.359375 0.757812 263 | v -0.234375 0.359375 0.757812 264 | v 0.195312 0.296875 0.757812 265 | v -0.195312 0.296875 0.757812 266 | v 0.242188 0.125000 0.757812 267 | v -0.242188 0.125000 0.757812 268 | v 0.375000 0.085938 0.726562 269 | v -0.375000 0.085938 0.726562 270 | v 0.460938 0.117188 0.703125 271 | v -0.460938 0.117188 0.703125 272 | v 0.546875 0.210938 0.671875 273 | v -0.546875 0.210938 0.671875 274 | v 0.554688 0.281250 0.671875 275 | v -0.554688 0.281250 0.671875 276 | v 0.531250 0.335938 0.679688 277 | v -0.531250 0.335938 0.679688 278 | v 0.414062 0.390625 0.750000 279 | v -0.414062 0.390625 0.750000 280 | v 0.281250 0.398438 0.765625 281 | v -0.281250 0.398438 0.765625 282 | v 0.335938 0.406250 0.750000 283 | v -0.335938 0.406250 0.750000 284 | v 0.203125 0.171875 0.750000 285 | v -0.203125 0.171875 0.750000 286 | v 0.195312 0.226562 0.750000 287 | v -0.195312 0.226562 0.750000 288 | v 0.109375 0.460938 0.609375 289 | v -0.109375 0.460938 0.609375 290 | v 0.195312 0.664062 0.617188 291 | v -0.195312 0.664062 0.617188 292 | v 0.335938 0.687500 0.593750 293 | v -0.335938 0.687500 0.593750 294 | v 0.484375 0.554688 0.554688 295 | v -0.484375 0.554688 0.554688 296 | v 0.679688 0.453125 0.492188 297 | v -0.679688 0.453125 0.492188 298 | v 0.796875 0.406250 0.460938 299 | v -0.796875 0.406250 0.460938 300 | v 0.773438 0.164062 0.375000 301 | v -0.773438 0.164062 0.375000 302 | v 0.601562 0.000000 0.414062 303 | v -0.601562 0.000000 0.414062 304 | v 0.437500 -0.093750 0.468750 305 | v -0.437500 -0.093750 0.468750 306 | v 0.000000 0.898438 0.289062 307 | v 0.000000 0.984375 -0.078125 308 | v 0.000000 -0.195312 -0.671875 309 | v 0.000000 -0.460938 0.187500 310 | v 0.000000 -0.976562 0.460938 311 | v 0.000000 -0.804688 0.343750 312 | v 0.000000 -0.570312 0.320312 313 | v 0.000000 -0.484375 0.281250 314 | v 0.851562 0.234375 0.054688 315 | v -0.851562 0.234375 0.054688 316 | v 0.859375 0.320312 -0.046875 317 | v -0.859375 0.320312 -0.046875 318 | v 0.773438 0.265625 -0.437500 319 | v -0.773438 0.265625 -0.437500 320 | v 0.460938 0.437500 -0.703125 321 | v -0.460938 0.437500 -0.703125 322 | v 0.734375 -0.046875 0.070312 323 | v -0.734375 -0.046875 0.070312 324 | v 0.593750 -0.125000 -0.164062 325 | v -0.593750 -0.125000 -0.164062 326 | v 0.640625 -0.007812 -0.429688 327 | v -0.640625 -0.007812 -0.429688 328 | v 0.335938 0.054688 -0.664062 329 | v -0.335938 0.054688 -0.664062 330 | v 0.234375 -0.351562 0.406250 331 | v -0.234375 -0.351562 0.406250 332 | v 0.179688 -0.414062 0.257812 333 | v -0.179688 -0.414062 0.257812 334 | v 0.289062 -0.710938 0.382812 335 | v -0.289062 -0.710938 0.382812 336 | v 0.250000 -0.500000 0.390625 337 | v -0.250000 -0.500000 0.390625 338 | v 0.328125 -0.914062 0.398438 339 | v -0.328125 -0.914062 0.398438 340 | v 0.140625 -0.757812 0.367188 341 | v -0.140625 -0.757812 0.367188 342 | v 0.125000 -0.539062 0.359375 343 | v -0.125000 -0.539062 0.359375 344 | v 0.164062 -0.945312 0.437500 345 | v -0.164062 -0.945312 0.437500 346 | v 0.218750 -0.281250 0.429688 347 | v -0.218750 -0.281250 0.429688 348 | v 0.210938 -0.226562 0.468750 349 | v -0.210938 -0.226562 0.468750 350 | v 0.203125 -0.171875 0.500000 351 | v -0.203125 -0.171875 0.500000 352 | v 0.210938 -0.390625 0.164062 353 | v -0.210938 -0.390625 0.164062 354 | v 0.296875 -0.312500 -0.265625 355 | v -0.296875 -0.312500 -0.265625 356 | v 0.343750 -0.148438 -0.539062 357 | v -0.343750 -0.148438 -0.539062 358 | v 0.453125 0.867188 -0.382812 359 | v -0.453125 0.867188 -0.382812 360 | v 0.453125 0.929688 -0.070312 361 | v -0.453125 0.929688 -0.070312 362 | v 0.453125 0.851562 0.234375 363 | v -0.453125 0.851562 0.234375 364 | v 0.460938 0.523438 0.429688 365 | v -0.460938 0.523438 0.429688 366 | v 0.726562 0.406250 0.335938 367 | v -0.726562 0.406250 0.335938 368 | v 0.632812 0.453125 0.281250 369 | v -0.632812 0.453125 0.281250 370 | v 0.640625 0.703125 0.054688 371 | v -0.640625 0.703125 0.054688 372 | v 0.796875 0.562500 0.125000 373 | v -0.796875 0.562500 0.125000 374 | v 0.796875 0.617188 -0.117188 375 | v -0.796875 0.617188 -0.117188 376 | v 0.640625 0.750000 -0.195312 377 | v -0.640625 0.750000 -0.195312 378 | v 0.640625 0.679688 -0.445312 379 | v -0.640625 0.679688 -0.445312 380 | v 0.796875 0.539062 -0.359375 381 | v -0.796875 0.539062 -0.359375 382 | v 0.617188 0.328125 -0.585938 383 | v -0.617188 0.328125 -0.585938 384 | v 0.484375 0.023438 -0.546875 385 | v -0.484375 0.023438 -0.546875 386 | v 0.820312 0.328125 -0.203125 387 | v -0.820312 0.328125 -0.203125 388 | v 0.406250 -0.171875 0.148438 389 | v -0.406250 -0.171875 0.148438 390 | v 0.429688 -0.195312 -0.210938 391 | v -0.429688 -0.195312 -0.210938 392 | v 0.890625 0.406250 -0.234375 393 | v -0.890625 0.406250 -0.234375 394 | v 0.773438 -0.140625 -0.125000 395 | v -0.773438 -0.140625 -0.125000 396 | v 1.039062 -0.101562 -0.328125 397 | v -1.039062 -0.101562 -0.328125 398 | v 1.281250 0.054688 -0.429688 399 | v -1.281250 0.054688 -0.429688 400 | v 1.351562 0.320312 -0.421875 401 | v -1.351562 0.320312 -0.421875 402 | v 1.234375 0.507812 -0.421875 403 | v -1.234375 0.507812 -0.421875 404 | v 1.023438 0.476562 -0.312500 405 | v -1.023438 0.476562 -0.312500 406 | v 1.015625 0.414062 -0.289062 407 | v -1.015625 0.414062 -0.289062 408 | v 1.187500 0.437500 -0.390625 409 | v -1.187500 0.437500 -0.390625 410 | v 1.265625 0.289062 -0.406250 411 | v -1.265625 0.289062 -0.406250 412 | v 1.210938 0.078125 -0.406250 413 | v -1.210938 0.078125 -0.406250 414 | v 1.031250 -0.039062 -0.304688 415 | v -1.031250 -0.039062 -0.304688 416 | v 0.828125 -0.070312 -0.132812 417 | v -0.828125 -0.070312 -0.132812 418 | v 0.921875 0.359375 -0.218750 419 | v -0.921875 0.359375 -0.218750 420 | v 0.945312 0.304688 -0.289062 421 | v -0.945312 0.304688 -0.289062 422 | v 0.882812 -0.023438 -0.210938 423 | v -0.882812 -0.023438 -0.210938 424 | v 1.039062 0.000000 -0.367188 425 | v -1.039062 0.000000 -0.367188 426 | v 1.187500 0.093750 -0.445312 427 | v -1.187500 0.093750 -0.445312 428 | v 1.234375 0.250000 -0.445312 429 | v -1.234375 0.250000 -0.445312 430 | v 1.171875 0.359375 -0.437500 431 | v -1.171875 0.359375 -0.437500 432 | v 1.023438 0.343750 -0.359375 433 | v -1.023438 0.343750 -0.359375 434 | v 0.843750 0.289062 -0.210938 435 | v -0.843750 0.289062 -0.210938 436 | v 0.835938 0.171875 -0.273438 437 | v -0.835938 0.171875 -0.273438 438 | v 0.757812 0.093750 -0.273438 439 | v -0.757812 0.093750 -0.273438 440 | v 0.820312 0.085938 -0.273438 441 | v -0.820312 0.085938 -0.273438 442 | v 0.843750 0.015625 -0.273438 443 | v -0.843750 0.015625 -0.273438 444 | v 0.812500 -0.015625 -0.273438 445 | v -0.812500 -0.015625 -0.273438 446 | v 0.726562 0.000000 -0.070312 447 | v -0.726562 0.000000 -0.070312 448 | v 0.718750 -0.023438 -0.171875 449 | v -0.718750 -0.023438 -0.171875 450 | v 0.718750 0.039062 -0.187500 451 | v -0.718750 0.039062 -0.187500 452 | v 0.796875 0.203125 -0.210938 453 | v -0.796875 0.203125 -0.210938 454 | v 0.890625 0.242188 -0.265625 455 | v -0.890625 0.242188 -0.265625 456 | v 0.890625 0.234375 -0.320312 457 | v -0.890625 0.234375 -0.320312 458 | v 0.812500 -0.015625 -0.320312 459 | v -0.812500 -0.015625 -0.320312 460 | v 0.851562 0.015625 -0.320312 461 | v -0.851562 0.015625 -0.320312 462 | v 0.828125 0.078125 -0.320312 463 | v -0.828125 0.078125 -0.320312 464 | v 0.765625 0.093750 -0.320312 465 | v -0.765625 0.093750 -0.320312 466 | v 0.843750 0.171875 -0.320312 467 | v -0.843750 0.171875 -0.320312 468 | v 1.039062 0.328125 -0.414062 469 | v -1.039062 0.328125 -0.414062 470 | v 1.187500 0.343750 -0.484375 471 | v -1.187500 0.343750 -0.484375 472 | v 1.257812 0.242188 -0.492188 473 | v -1.257812 0.242188 -0.492188 474 | v 1.210938 0.085938 -0.484375 475 | v -1.210938 0.085938 -0.484375 476 | v 1.046875 0.000000 -0.421875 477 | v -1.046875 0.000000 -0.421875 478 | v 0.882812 -0.015625 -0.265625 479 | v -0.882812 -0.015625 -0.265625 480 | v 0.953125 0.289062 -0.343750 481 | v -0.953125 0.289062 -0.343750 482 | v 0.890625 0.109375 -0.328125 483 | v -0.890625 0.109375 -0.328125 484 | v 0.937500 0.062500 -0.335938 485 | v -0.937500 0.062500 -0.335938 486 | v 1.000000 0.125000 -0.367188 487 | v -1.000000 0.125000 -0.367188 488 | v 0.960938 0.171875 -0.351562 489 | v -0.960938 0.171875 -0.351562 490 | v 1.015625 0.234375 -0.375000 491 | v -1.015625 0.234375 -0.375000 492 | v 1.054688 0.187500 -0.382812 493 | v -1.054688 0.187500 -0.382812 494 | v 1.109375 0.210938 -0.390625 495 | v -1.109375 0.210938 -0.390625 496 | v 1.085938 0.273438 -0.390625 497 | v -1.085938 0.273438 -0.390625 498 | v 1.023438 0.437500 -0.484375 499 | v -1.023438 0.437500 -0.484375 500 | v 1.250000 0.468750 -0.546875 501 | v -1.250000 0.468750 -0.546875 502 | v 1.367188 0.296875 -0.500000 503 | v -1.367188 0.296875 -0.500000 504 | v 1.312500 0.054688 -0.531250 505 | v -1.312500 0.054688 -0.531250 506 | v 1.039062 -0.085938 -0.492188 507 | v -1.039062 -0.085938 -0.492188 508 | v 0.789062 -0.125000 -0.328125 509 | v -0.789062 -0.125000 -0.328125 510 | v 0.859375 0.382812 -0.382812 511 | v -0.859375 0.382812 -0.382812 512 | vn 0.6650 -0.2008 0.7194 513 | vn -0.6650 -0.2008 0.7194 514 | vn 0.8294 -0.3036 0.4689 515 | vn -0.8294 -0.3036 0.4689 516 | vn 0.4155 -0.7933 0.4449 517 | vn -0.4155 -0.7933 0.4449 518 | vn 0.3600 -0.5089 0.7820 519 | vn -0.3600 -0.5089 0.7820 520 | vn -0.0787 -0.5394 0.8384 521 | vn 0.0787 -0.5394 0.8384 522 | vn -0.2696 -0.8413 0.4685 523 | vn 0.2696 -0.8413 0.4685 524 | vn -0.7707 -0.3352 0.5420 525 | vn 0.7707 -0.3352 0.5420 526 | vn -0.4689 -0.1940 0.8617 527 | vn 0.4689 -0.1940 0.8617 528 | vn -0.4767 0.1907 0.8581 529 | vn 0.4767 0.1907 0.8581 530 | vn -0.7672 0.3264 0.5521 531 | vn 0.7672 0.3264 0.5521 532 | vn -0.2519 0.8173 0.5182 533 | vn 0.2519 0.8173 0.5182 534 | vn -0.0949 0.5696 0.8164 535 | vn 0.0949 0.5696 0.8164 536 | vn 0.3667 0.5370 0.7597 537 | vn -0.3667 0.5370 0.7597 538 | vn 0.4141 0.7672 0.4898 539 | vn -0.4141 0.7672 0.4898 540 | vn 0.8277 0.2952 0.4771 541 | vn -0.8277 0.2952 0.4771 542 | vn 0.6713 0.1971 0.7145 543 | vn -0.6713 0.1971 0.7145 544 | vn 0.8111 0.3244 -0.4867 545 | vn -0.8111 0.3244 -0.4867 546 | vn 0.2052 0.8206 -0.5334 547 | vn -0.2052 0.8206 -0.5334 548 | vn -0.4223 0.7806 -0.4607 549 | vn 0.4223 0.7806 -0.4607 550 | vn -0.8241 0.3225 -0.4658 551 | vn 0.8241 0.3225 -0.4658 552 | vn -0.8137 -0.3487 -0.4650 553 | vn 0.8137 -0.3487 -0.4650 554 | vn -0.4223 -0.7806 -0.4607 555 | vn 0.4223 -0.7806 -0.4607 556 | vn 0.2052 -0.8206 -0.5334 557 | vn -0.2052 -0.8206 -0.5334 558 | vn 0.7995 -0.3510 -0.4875 559 | vn -0.7995 -0.3510 -0.4875 560 | vn 0.4000 -0.0623 0.9144 561 | vn -0.4000 -0.0623 0.9144 562 | vn 0.3069 -0.1754 0.9354 563 | vn -0.3069 -0.1754 0.9354 564 | vn 0.0945 -0.1835 0.9785 565 | vn -0.0945 -0.1835 0.9785 566 | vn -0.0624 -0.0283 0.9977 567 | vn 0.0624 -0.0283 0.9977 568 | vn -0.0624 0.0260 0.9977 569 | vn 0.0624 0.0260 0.9977 570 | vn 0.0996 0.1729 0.9799 571 | vn -0.0996 0.1729 0.9799 572 | vn 0.3036 0.1656 0.9383 573 | vn -0.3036 0.1656 0.9383 574 | vn 0.4002 0.0572 0.9147 575 | vn -0.4002 0.0572 0.9147 576 | vn 0.1231 -0.8616 0.4924 577 | vn -0.1231 -0.8616 0.4924 578 | vn 0.2190 -0.8647 0.4520 579 | vn -0.2190 -0.8647 0.4520 580 | vn 0.5902 -0.4550 0.6668 581 | vn -0.5902 -0.4550 0.6668 582 | vn 0.7689 -0.0506 0.6374 583 | vn -0.7689 -0.0506 0.6374 584 | vn 0.7796 0.0900 0.6197 585 | vn -0.7796 0.0900 0.6197 586 | vn 0.3241 -0.8188 0.4739 587 | vn -0.3241 -0.8188 0.4739 588 | vn 0.3857 -0.6629 0.6417 589 | vn -0.3857 -0.6629 0.6417 590 | vn 0.6895 -0.4193 0.5906 591 | vn -0.6895 -0.4193 0.5906 592 | vn 0.6588 -0.3634 0.6588 593 | vn -0.6588 -0.3634 0.6588 594 | vn 0.5465 0.3707 0.7509 595 | vn -0.5465 0.3707 0.7509 596 | vn 0.5064 0.6464 0.5706 597 | vn -0.5064 0.6464 0.5706 598 | vn 0.6092 0.5167 0.6015 599 | vn -0.6092 0.5167 0.6015 600 | vn -0.0441 0.6610 0.7491 601 | vn 0.0441 0.6610 0.7491 602 | vn -0.7246 0.3187 0.6110 603 | vn 0.7246 0.3187 0.6110 604 | vn -0.5880 0.5554 0.5880 605 | vn 0.5880 0.5554 0.5880 606 | vn 0.5361 -0.3909 0.7482 607 | vn -0.5361 -0.3909 0.7482 608 | vn 0.2207 -0.4690 0.8552 609 | vn -0.2207 -0.4690 0.8552 610 | vn -0.0794 -0.5321 0.8429 611 | vn 0.0794 -0.5321 0.8429 612 | vn -0.0825 -0.6575 0.7490 613 | vn 0.0825 -0.6575 0.7490 614 | vn 0.0457 -0.5667 0.8226 615 | vn -0.0457 -0.5667 0.8226 616 | vn 0.2784 -0.2130 0.9365 617 | vn -0.2784 -0.2130 0.9365 618 | vn 0.3813 -0.1824 0.9063 619 | vn -0.3813 -0.1824 0.9063 620 | vn 0.3357 -0.2878 0.8969 621 | vn -0.3357 -0.2878 0.8969 622 | vn 0.3762 0.0603 0.9246 623 | vn -0.3762 0.0603 0.9246 624 | vn -0.1352 0.2680 0.9539 625 | vn 0.1352 0.2680 0.9539 626 | vn 0.3961 -0.4321 0.8102 627 | vn -0.3961 -0.4321 0.8102 628 | vn 0.1856 -0.2474 0.9510 629 | vn -0.1856 -0.2474 0.9510 630 | vn 0.0099 -0.1948 0.9808 631 | vn -0.0099 -0.1948 0.9808 632 | vn 0.0721 -0.6966 0.7138 633 | vn -0.0721 -0.6966 0.7138 634 | vn 0.1863 -0.5723 0.7986 635 | vn -0.1863 -0.5723 0.7986 636 | vn 0.3157 -0.2708 0.9094 637 | vn -0.3157 -0.2708 0.9094 638 | vn 0.3063 -0.0265 0.9516 639 | vn -0.3063 -0.0265 0.9516 640 | vn 0.3266 -0.1306 0.9361 641 | vn -0.3266 -0.1306 0.9361 642 | vn -0.0137 0.0574 0.9983 643 | vn 0.0137 0.0574 0.9983 644 | vn -0.0026 -0.0656 0.9978 645 | vn 0.0026 -0.0656 0.9978 646 | vn -0.0000 -0.0000 1.0000 647 | vn 0.8174 -0.5744 -0.0442 648 | vn -0.8174 -0.5744 -0.0442 649 | vn 0.9494 0.2297 -0.2144 650 | vn -0.9494 0.2297 -0.2144 651 | vn 0.0825 0.9073 -0.4124 652 | vn -0.0825 0.9073 -0.4124 653 | vn -0.8836 0.3555 0.3047 654 | vn 0.8836 0.3555 0.3047 655 | vn 0.4207 -0.8797 0.2218 656 | vn -0.4207 -0.8797 0.2218 657 | vn 0.2873 -0.5747 0.7663 658 | vn -0.2873 -0.5747 0.7663 659 | vn -0.6542 0.6019 0.4580 660 | vn 0.6542 0.6019 0.4580 661 | vn 0.1052 0.7892 0.6051 662 | vn -0.1052 0.7892 0.6051 663 | vn 0.7582 0.2916 0.5832 664 | vn -0.7582 0.2916 0.5832 665 | vn 0.3889 -0.7130 0.5834 666 | vn -0.3889 -0.7130 0.5834 667 | vn 0.0463 0.2314 0.9718 668 | vn -0.0463 0.2314 0.9718 669 | vn 0.0335 -0.4018 0.9151 670 | vn -0.0335 -0.4018 0.9151 671 | vn -0.4452 -0.1610 0.8809 672 | vn 0.4452 -0.1610 0.8809 673 | vn -0.2182 -0.4364 0.8729 674 | vn 0.2182 -0.4364 0.8729 675 | vn 0.4341 -0.1290 0.8916 676 | vn -0.4341 -0.1290 0.8916 677 | vn 0.3008 0.0501 0.9524 678 | vn -0.3008 0.0501 0.9524 679 | vn 0.8123 0.3010 0.4996 680 | vn -0.8123 0.3010 0.4996 681 | vn 0.8753 0.2574 0.4093 682 | vn -0.8753 0.2574 0.4093 683 | vn 0.9385 0.1601 0.3060 684 | vn -0.9385 0.1601 0.3060 685 | vn 0.2237 -0.6539 0.7227 686 | vn -0.2237 -0.6539 0.7227 687 | vn -0.1536 -0.1997 0.9677 688 | vn 0.1536 -0.1997 0.9677 689 | vn -0.2733 -0.1025 0.9565 690 | vn 0.2733 -0.1025 0.9565 691 | vn -0.0976 0.1952 0.9759 692 | vn 0.0976 0.1952 0.9759 693 | vn -0.1582 0.9494 0.2713 694 | vn 0.1582 0.9494 0.2713 695 | vn -0.6934 0.7082 0.1328 696 | vn 0.6934 0.7082 0.1328 697 | vn -1.0000 -0.0000 -0.0000 698 | vn 1.0000 -0.0000 -0.0000 699 | vn 0.3051 -0.9450 0.1181 700 | vn -0.3051 -0.9450 0.1181 701 | vn 0.0298 -0.2981 0.9541 702 | vn -0.0298 -0.2981 0.9541 703 | vn 0.1353 -0.3479 0.9277 704 | vn -0.1353 -0.3479 0.9277 705 | vn -0.5085 -0.2755 0.8158 706 | vn 0.5085 -0.2755 0.8158 707 | vn -0.3843 -0.0419 0.9223 708 | vn 0.3843 -0.0419 0.9223 709 | vn -0.2083 0.0374 0.9774 710 | vn 0.2083 0.0374 0.9774 711 | vn -0.5721 -0.4767 0.6674 712 | vn 0.5721 -0.4767 0.6674 713 | vn -0.1369 -0.7531 0.6435 714 | vn 0.1369 -0.7531 0.6435 715 | vn 0.4088 -0.6071 0.6814 716 | vn -0.4088 -0.6071 0.6814 717 | vn 0.5740 -0.4130 0.7070 718 | vn -0.5740 -0.4130 0.7070 719 | vn 0.5665 -0.0968 0.8183 720 | vn -0.5665 -0.0968 0.8183 721 | vn 0.5703 0.1180 0.8129 722 | vn -0.5703 0.1180 0.8129 723 | vn 0.4823 0.5621 0.6719 724 | vn -0.4823 0.5621 0.6719 725 | vn 0.2604 0.6114 0.7473 726 | vn -0.2604 0.6114 0.7473 727 | vn 0.1640 0.3607 0.9182 728 | vn -0.1640 0.3607 0.9182 729 | vn -0.0178 0.2495 0.9682 730 | vn 0.0178 0.2495 0.9682 731 | vn 0.3273 -0.4166 0.8481 732 | vn -0.3273 -0.4166 0.8481 733 | vn 0.2811 -0.2610 0.9235 734 | vn -0.2811 -0.2610 0.9235 735 | vn -0.2542 -0.6514 0.7149 736 | vn 0.2542 -0.6514 0.7149 737 | vn -0.0260 -0.8455 0.5333 738 | vn 0.0260 -0.8455 0.5333 739 | vn -0.3518 -0.2606 0.8991 740 | vn 0.3518 -0.2606 0.8991 741 | vn -0.3523 -0.0110 0.9358 742 | vn 0.3523 -0.0110 0.9358 743 | vn -0.1317 0.4608 0.8777 744 | vn 0.1317 0.4608 0.8777 745 | vn -0.0342 0.6159 0.7870 746 | vn 0.0342 0.6159 0.7870 747 | vn 0.3603 0.5836 0.7277 748 | vn -0.3603 0.5836 0.7277 749 | vn 0.4988 0.5300 0.6858 750 | vn -0.4988 0.5300 0.6858 751 | vn 0.6667 -0.3333 0.6667 752 | vn -0.6667 -0.3333 0.6667 753 | vn 0.8165 -0.0731 0.5727 754 | vn -0.8165 -0.0731 0.5727 755 | vn 0.7840 0.1161 0.6098 756 | vn -0.7840 0.1161 0.6098 757 | vn -0.5306 0.8111 -0.2461 758 | vn 0.5306 0.8111 -0.2461 759 | vn -0.8511 0.3695 -0.3730 760 | vn 0.8511 0.3695 -0.3730 761 | vn -0.2446 0.8675 -0.4331 762 | vn 0.2446 0.8675 -0.4331 763 | vn 0.5924 0.7465 -0.3030 764 | vn -0.5924 0.7465 -0.3030 765 | vn 0.3685 0.8758 -0.3118 766 | vn -0.3685 0.8758 -0.3118 767 | vn 0.2821 0.9151 -0.2880 768 | vn -0.2821 0.9151 -0.2880 769 | vn 0.8561 0.1340 -0.4991 770 | vn -0.8561 0.1340 -0.4991 771 | vn 0.5342 -0.7233 -0.4376 772 | vn -0.5342 -0.7233 -0.4376 773 | vn 0.3849 -0.8131 -0.4368 774 | vn -0.3849 -0.8131 -0.4368 775 | vn 0.2335 -0.5806 -0.7800 776 | vn -0.2335 -0.5806 -0.7800 777 | vn 0.2449 -0.0583 -0.9678 778 | vn -0.2449 -0.0583 -0.9678 779 | vn 0.1163 -0.4535 -0.8837 780 | vn -0.1163 -0.4535 -0.8837 781 | vn 0.1152 -0.9836 -0.1388 782 | vn -0.1152 -0.9836 -0.1388 783 | vn 0.1184 -0.9669 -0.2260 784 | vn -0.1184 -0.9669 -0.2260 785 | vn 0.9597 -0.0085 -0.2808 786 | vn -0.9597 -0.0085 -0.2808 787 | vn 0.9319 0.1629 -0.3242 788 | vn -0.9319 0.1629 -0.3242 789 | vn 0.1626 0.0207 -0.9865 790 | vn -0.1626 0.0207 -0.9865 791 | vn -0.0188 -0.2177 -0.9758 792 | vn 0.0188 -0.2177 -0.9758 793 | vn 0.7538 -0.2926 -0.5884 794 | vn -0.7538 -0.2926 -0.5884 795 | vn 0.9196 0.1379 -0.3678 796 | vn -0.9196 0.1379 -0.3678 797 | vn 0.9297 0.3127 -0.1944 798 | vn -0.9297 0.3127 -0.1944 799 | vn 0.9120 0.3376 -0.2329 800 | vn -0.9120 0.3376 -0.2329 801 | vn 0.9407 0.3338 -0.0607 802 | vn -0.9407 0.3338 -0.0607 803 | vn 0.1761 -0.8805 -0.4402 804 | vn -0.1761 -0.8805 -0.4402 805 | vn 0.3708 -0.4733 -0.7991 806 | vn -0.3708 -0.4733 -0.7991 807 | vn 0.3107 -0.8284 -0.4660 808 | vn -0.3107 -0.8284 -0.4660 809 | vn 0.2793 -0.9515 -0.1287 810 | vn -0.2793 -0.9515 -0.1287 811 | vn 0.3139 -0.9321 -0.1807 812 | vn -0.3139 -0.9321 -0.1807 813 | vn 0.9762 -0.2083 -0.0609 814 | vn -0.9762 -0.2083 -0.0609 815 | vn 0.8267 -0.5066 0.2447 816 | vn -0.8267 -0.5066 0.2447 817 | vn 0.3449 -0.1158 -0.9315 818 | vn -0.3449 -0.1158 -0.9315 819 | vn 0.1203 0.9644 0.2355 820 | vn -0.1203 0.9644 0.2355 821 | vn 0.1275 0.9744 -0.1851 822 | vn -0.1275 0.9744 -0.1851 823 | vn 0.3492 0.5947 -0.7241 824 | vn -0.3492 0.5947 -0.7241 825 | vn 0.4153 0.8981 -0.1449 826 | vn -0.4153 0.8981 -0.1449 827 | vn 0.1845 0.7036 0.6863 828 | vn -0.1845 0.7036 0.6863 829 | vn 0.6056 0.7794 0.1608 830 | vn -0.6056 0.7794 0.1608 831 | vn 0.7033 0.6806 -0.2053 832 | vn -0.7033 0.6806 -0.2053 833 | vn 0.6679 0.2007 -0.7166 834 | vn -0.6679 0.2007 -0.7166 835 | vn 0.4948 0.4342 -0.7528 836 | vn -0.4948 0.4342 -0.7528 837 | vn 0.6423 0.7459 -0.1761 838 | vn -0.6423 0.7459 -0.1761 839 | vn 0.7182 0.6788 0.1530 840 | vn -0.7182 0.6788 0.1530 841 | vn 0.7388 0.3972 0.5444 842 | vn -0.7388 0.3972 0.5444 843 | vn 0.3428 0.9261 -0.1579 844 | vn -0.3428 0.9261 -0.1579 845 | vn 0.2270 0.5740 0.7867 846 | vn -0.2270 0.5740 0.7867 847 | vn -0.1722 0.1046 -0.9795 848 | vn 0.1722 0.1046 -0.9795 849 | vn 0.0425 0.9150 0.4013 850 | vn -0.0425 0.9150 0.4013 851 | vn -0.1616 0.1847 0.9694 852 | vn 0.1616 0.1847 0.9694 853 | vn 0.9791 0.1973 0.0483 854 | vn -0.9791 0.1973 0.0483 855 | vn 0.9470 0.0918 0.3079 856 | vn -0.9470 0.0918 0.3079 857 | vn 0.9794 0.1905 -0.0661 858 | vn -0.9794 0.1905 -0.0661 859 | vn 0.9938 0.0312 -0.1070 860 | vn -0.9938 0.0312 -0.1070 861 | vn 0.7116 -0.7008 0.0501 862 | vn -0.7116 -0.7008 0.0501 863 | vn 0.3722 -0.9243 0.0847 864 | vn -0.3722 -0.9243 0.0847 865 | vn 0.4465 -0.8644 0.2310 866 | vn -0.4465 -0.8644 0.2310 867 | vn 0.6066 -0.7578 0.2405 868 | vn -0.6066 -0.7578 0.2405 869 | vn 0.7325 -0.6368 0.2407 870 | vn -0.7325 -0.6368 0.2407 871 | vn 0.2637 -0.4499 0.8533 872 | vn -0.2637 -0.4499 0.8533 873 | vn 0.5568 -0.3181 -0.7673 874 | vn -0.5568 -0.3181 -0.7673 875 | vn 0.5004 -0.2807 -0.8190 876 | vn -0.5004 -0.2807 -0.8190 877 | vn 0.3190 -0.8494 -0.4205 878 | vn -0.3190 -0.8494 -0.4205 879 | vn 0.7198 -0.6356 -0.2793 880 | vn -0.7198 -0.6356 -0.2793 881 | vn 0.4972 -0.4408 -0.7473 882 | vn -0.4972 -0.4408 -0.7473 883 | vn 0.3506 0.3807 0.8557 884 | vn -0.3506 0.3807 0.8557 885 | vn 0.4566 0.1715 0.8730 886 | vn -0.4566 0.1715 0.8730 887 | vn 0.2583 0.1055 0.9603 888 | vn -0.2583 0.1055 0.9603 889 | vn 0.2455 -0.0802 0.9661 890 | vn -0.2455 -0.0802 0.9661 891 | vn 0.4643 -0.0599 0.8837 892 | vn -0.4643 -0.0599 0.8837 893 | vn 0.6225 -0.3045 0.7210 894 | vn -0.6225 -0.3045 0.7210 895 | vn 0.4500 0.6590 0.6027 896 | vn -0.4500 0.6590 0.6027 897 | vn -0.2667 0.8309 0.4884 898 | vn 0.2667 0.8309 0.4884 899 | vn -0.8284 0.2291 0.5111 900 | vn 0.8284 0.2291 0.5111 901 | vn -0.5251 -0.3566 0.7727 902 | vn 0.5251 -0.3566 0.7727 903 | vn 0.4546 -0.5665 0.6873 904 | vn -0.4546 -0.5665 0.6873 905 | vn 0.6996 -0.4497 0.5552 906 | vn -0.6996 -0.4497 0.5552 907 | vn 0.7220 -0.6827 -0.1126 908 | vn -0.7220 -0.6827 -0.1126 909 | vn -0.1919 0.2860 0.9388 910 | vn 0.1919 0.2860 0.9388 911 | vn 0.9048 -0.3734 -0.2047 912 | vn -0.9048 -0.3734 -0.2047 913 | vn 0.1034 0.1551 0.9825 914 | vn -0.1034 0.1551 0.9825 915 | vn 0.0841 0.9318 0.3530 916 | vn -0.0841 0.9318 0.3530 917 | vn 0.6446 -0.0883 0.7594 918 | vn -0.6446 -0.0883 0.7594 919 | vn 0.4309 0.4740 0.7678 920 | vn -0.4309 0.4740 0.7678 921 | vn 0.8032 -0.4847 0.3462 922 | vn -0.8032 -0.4847 0.3462 923 | vn 0.5811 -0.4128 0.7014 924 | vn -0.5811 -0.4128 0.7014 925 | vn 0.5910 -0.4305 0.6822 926 | vn -0.5910 -0.4305 0.6822 927 | vn 0.9818 -0.1804 -0.0591 928 | vn -0.9818 -0.1804 -0.0591 929 | vn 0.9105 -0.3965 -0.1175 930 | vn -0.9105 -0.3965 -0.1175 931 | vn 0.9972 -0.0181 -0.0725 932 | vn -0.9972 -0.0181 -0.0725 933 | vn 0.7313 -0.6543 0.1925 934 | vn -0.7313 -0.6543 0.1925 935 | vn 0.7867 -0.6079 0.1073 936 | vn -0.7867 -0.6079 0.1073 937 | vn 0.7022 -0.7022 0.1170 938 | vn -0.7022 -0.7022 0.1170 939 | vn 0.1840 0.9816 -0.0511 940 | vn -0.1840 0.9816 -0.0511 941 | vn 0.9352 0.3301 0.1284 942 | vn -0.9352 0.3301 0.1284 943 | vn 0.6633 -0.7463 0.0553 944 | vn -0.6633 -0.7463 0.0553 945 | vn -0.0085 0.9970 0.0767 946 | vn 0.0085 0.9970 0.0767 947 | vn 0.6237 -0.7061 0.3354 948 | vn -0.6237 -0.7061 0.3354 949 | vn 0.2733 -0.8925 0.3587 950 | vn -0.2733 -0.8925 0.3587 951 | vn -0.8328 -0.5080 -0.2200 952 | vn 0.8328 -0.5080 -0.2200 953 | vn -0.8339 0.2377 -0.4981 954 | vn 0.8339 0.2377 -0.4981 955 | vn -0.5655 0.7847 -0.2539 956 | vn 0.5655 0.7847 -0.2539 957 | vn -0.0560 0.9962 0.0672 958 | vn 0.0560 0.9962 0.0672 959 | vn 0.1445 0.0222 0.9893 960 | vn -0.1445 0.0222 0.9893 961 | vn 0.3275 0.0645 0.9427 962 | vn -0.3275 0.0645 0.9427 963 | vn 0.3127 0.0232 0.9496 964 | vn -0.3127 0.0232 0.9496 965 | vn 0.1710 0.0274 0.9849 966 | vn -0.1710 0.0274 0.9849 967 | vn 0.3487 0.2849 0.8929 968 | vn -0.3487 0.2849 0.8929 969 | vn 0.4006 -0.0343 0.9156 970 | vn -0.4006 -0.0343 0.9156 971 | vn 0.2572 -0.0603 0.9645 972 | vn -0.2572 -0.0603 0.9645 973 | vn 0.0637 -0.0106 0.9979 974 | vn -0.0637 -0.0106 0.9979 975 | vn -0.3637 0.7039 0.6101 976 | vn 0.3637 0.7039 0.6101 977 | vn 0.6299 0.0355 0.7759 978 | vn -0.6299 0.0355 0.7759 979 | vn 0.4472 -0.2002 0.8717 980 | vn -0.4472 -0.2002 0.8717 981 | vn 0.5072 -0.2141 0.8348 982 | vn -0.5072 -0.2141 0.8348 983 | vn 0.5258 0.2619 0.8093 984 | vn -0.5258 0.2619 0.8093 985 | vn 0.2980 0.5802 0.7580 986 | vn -0.2980 0.5802 0.7580 987 | vn 0.0930 -0.9924 -0.0805 988 | vn -0.0930 -0.9924 -0.0805 989 | vn 0.5006 -0.8657 0.0080 990 | vn -0.5006 -0.8657 0.0080 991 | vn 0.9285 -0.2497 0.2748 992 | vn -0.9285 -0.2497 0.2748 993 | vn 0.8393 0.5424 -0.0378 994 | vn -0.8393 0.5424 -0.0378 995 | vn -0.2355 0.9367 -0.2589 996 | vn 0.2355 0.9367 -0.2589 997 | vn -0.4499 0.8838 -0.1285 998 | vn 0.4499 0.8838 -0.1285 999 | vn -0.5384 -0.0098 -0.8427 1000 | vn 0.5384 -0.0098 -0.8427 1001 | vn -0.1910 -0.0241 -0.9813 1002 | vn 0.1910 -0.0241 -0.9813 1003 | vn 0.4046 0.0266 -0.9141 1004 | vn -0.4046 0.0266 -0.9141 1005 | vn -0.7819 0.6231 0.0197 1006 | vn 0.7819 0.6231 0.0197 1007 | vn 0.5428 -0.2063 -0.8142 1008 | vn -0.5428 -0.2063 -0.8142 1009 | vn -0.2474 -0.9231 -0.2945 1010 | vn 0.2474 -0.9231 -0.2945 1011 | vt 0.843250 0.588863 1012 | vt 0.833697 0.611927 1013 | vt 0.794218 0.611927 1014 | vt 0.815334 0.560948 1015 | vt 0.866314 0.937441 1016 | vt 0.866314 0.897962 1017 | vt 0.889378 0.888409 1018 | vt 0.917293 0.916324 1019 | vt 0.746541 0.611927 1020 | vt 0.781622 0.527235 1021 | vt 0.866314 0.985118 1022 | vt 0.951006 0.950037 1023 | vt 0.815334 0.662907 1024 | vt 0.781622 0.696619 1025 | vt 0.781622 0.950037 1026 | vt 0.815334 0.916325 1027 | vt 0.843250 0.634991 1028 | vt 0.843250 0.888409 1029 | vt 0.866314 0.644544 1030 | vt 0.866314 0.684023 1031 | vt 0.794218 0.865345 1032 | vt 0.833697 0.865345 1033 | vt 0.866314 0.731700 1034 | vt 0.746541 0.865345 1035 | vt 0.917293 0.662907 1036 | vt 0.951006 0.696619 1037 | vt 0.781622 0.780653 1038 | vt 0.815334 0.814366 1039 | vt 0.889378 0.634991 1040 | vt 0.843250 0.842281 1041 | vt 0.898931 0.611927 1042 | vt 0.938410 0.611927 1043 | vt 0.866314 0.793249 1044 | vt 0.866314 0.832728 1045 | vt 0.986087 0.611927 1046 | vt 0.866314 0.745572 1047 | vt 0.917294 0.560947 1048 | vt 0.951006 0.527235 1049 | vt 0.951006 0.780653 1050 | vt 0.917294 0.814365 1051 | vt 0.889378 0.588863 1052 | vt 0.889378 0.842281 1053 | vt 0.866314 0.579310 1054 | vt 0.866314 0.539831 1055 | vt 0.938410 0.865345 1056 | vt 0.898931 0.865345 1057 | vt 0.866314 0.492154 1058 | vt 0.986087 0.865345 1059 | vt 0.866314 0.585461 1060 | vt 0.847600 0.593213 1061 | vt 0.892780 0.865345 1062 | vt 0.885028 0.884059 1063 | vt 0.885028 0.593213 1064 | vt 0.885028 0.846631 1065 | vt 0.892780 0.611927 1066 | vt 0.866314 0.838879 1067 | vt 0.885028 0.630641 1068 | vt 0.847600 0.846631 1069 | vt 0.866314 0.638393 1070 | vt 0.839848 0.865345 1071 | vt 0.847600 0.630641 1072 | vt 0.847600 0.884059 1073 | vt 0.839848 0.611927 1074 | vt 0.866314 0.891811 1075 | vt 0.866314 0.611927 1076 | vt 0.866314 0.865345 1077 | vt 0.520711 0.060503 1078 | vt 0.517028 0.068490 1079 | vt 0.500000 0.064527 1080 | vt 0.500000 0.054411 1081 | vt 0.482972 0.068490 1082 | vt 0.479289 0.060503 1083 | vt 0.530457 0.065062 1084 | vt 0.522612 0.070678 1085 | vt 0.477388 0.070678 1086 | vt 0.469543 0.065062 1087 | vt 0.532878 0.067822 1088 | vt 0.526301 0.079422 1089 | vt 0.473699 0.079422 1090 | vt 0.467122 0.067822 1091 | vt 0.544695 0.083023 1092 | vt 0.529228 0.091098 1093 | vt 0.470772 0.091098 1094 | vt 0.455305 0.083023 1095 | vt 0.565647 0.115495 1096 | vt 0.537536 0.127779 1097 | vt 0.462464 0.127779 1098 | vt 0.434353 0.115495 1099 | vt 0.586916 0.172042 1100 | vt 0.626605 0.208159 1101 | vt 0.600470 0.238288 1102 | vt 0.535885 0.215568 1103 | vt 0.399530 0.238288 1104 | vt 0.373395 0.208159 1105 | vt 0.413084 0.172042 1106 | vt 0.464115 0.215568 1107 | vt 0.650908 0.240294 1108 | vt 0.636962 0.261221 1109 | vt 0.363038 0.261221 1110 | vt 0.349092 0.240294 1111 | vt 0.689501 0.268805 1112 | vt 0.655896 0.284413 1113 | vt 0.344104 0.284413 1114 | vt 0.310499 0.268805 1115 | vt 0.684517 0.317795 1116 | vt 0.659507 0.313152 1117 | vt 0.340493 0.313152 1118 | vt 0.315483 0.317795 1119 | vt 0.671357 0.334694 1120 | vt 0.649107 0.322437 1121 | vt 0.350893 0.322437 1122 | vt 0.328643 0.334694 1123 | vt 0.636775 0.370732 1124 | vt 0.613636 0.353108 1125 | vt 0.386364 0.353108 1126 | vt 0.363225 0.370732 1127 | vt 0.602261 0.395588 1128 | vt 0.594178 0.371277 1129 | vt 0.405822 0.371277 1130 | vt 0.397739 0.395588 1131 | vt 0.581044 0.398468 1132 | vt 0.577351 0.373341 1133 | vt 0.422649 0.373341 1134 | vt 0.418956 0.398468 1135 | vt 0.532016 0.387365 1136 | vt 0.539817 0.354339 1137 | vt 0.460183 0.354339 1138 | vt 0.467984 0.387365 1139 | vt 0.500000 0.382860 1140 | vt 0.500000 0.340417 1141 | vt 0.559135 0.334326 1142 | vt 0.579057 0.335646 1143 | vt 0.420943 0.335646 1144 | vt 0.440865 0.334326 1145 | vt 0.592090 0.332885 1146 | vt 0.407910 0.332885 1147 | vt 0.606163 0.325516 1148 | vt 0.393837 0.325516 1149 | vt 0.628251 0.311636 1150 | vt 0.371749 0.311636 1151 | vt 0.635551 0.300507 1152 | vt 0.364449 0.300507 1153 | vt 0.631484 0.283889 1154 | vt 0.368516 0.283889 1155 | vt 0.611331 0.264411 1156 | vt 0.388669 0.264411 1157 | vt 0.592372 0.254897 1158 | vt 0.407628 0.254897 1159 | vt 0.559669 0.267717 1160 | vt 0.440331 0.267717 1161 | vt 0.550878 0.277832 1162 | vt 0.500000 0.252445 1163 | vt 0.449122 0.277832 1164 | vt 0.544001 0.314523 1165 | vt 0.455999 0.314523 1166 | vt 0.500000 0.295691 1167 | vt 0.543637 0.293371 1168 | vt 0.456363 0.293371 1169 | vt 0.506819 0.075382 1170 | vt 0.500000 0.073497 1171 | vt 0.493181 0.075382 1172 | vt 0.511782 0.080633 1173 | vt 0.488218 0.080633 1174 | vt 0.512172 0.093457 1175 | vt 0.487828 0.093457 1176 | vt 0.514257 0.133422 1177 | vt 0.513874 0.097191 1178 | vt 0.486126 0.097191 1179 | vt 0.485743 0.133422 1180 | vt 0.520226 0.164615 1181 | vt 0.500000 0.157864 1182 | vt 0.500000 0.134352 1183 | vt 0.479774 0.164615 1184 | vt 0.500000 0.100063 1185 | vt 0.500000 0.091346 1186 | vt 0.530258 0.180239 1187 | vt 0.521901 0.181560 1188 | vt 0.517666 0.172353 1189 | vt 0.482334 0.172353 1190 | vt 0.478099 0.181560 1191 | vt 0.469742 0.180239 1192 | vt 0.523673 0.198817 1193 | vt 0.518957 0.194728 1194 | vt 0.481043 0.194728 1195 | vt 0.476327 0.198817 1196 | vt 0.500000 0.203867 1197 | vt 0.508211 0.197295 1198 | vt 0.491789 0.197295 1199 | vt 0.500000 0.197278 1200 | vt 0.500000 0.192167 1201 | vt 0.500000 0.165170 1202 | vt 0.513538 0.176949 1203 | vt 0.500000 0.171718 1204 | vt 0.486462 0.176949 1205 | vt 0.500000 0.186182 1206 | vt 0.508818 0.192407 1207 | vt 0.491182 0.192407 1208 | vt 0.515232 0.190709 1209 | vt 0.484768 0.190709 1210 | vt 0.516908 0.181873 1211 | vt 0.483092 0.181873 1212 | vt 0.544209 0.172814 1213 | vt 0.455791 0.172814 1214 | vt 0.541327 0.154899 1215 | vt 0.458673 0.154899 1216 | vt 0.578661 0.139176 1217 | vt 0.421339 0.139176 1218 | vt 0.583245 0.154155 1219 | vt 0.416755 0.154155 1220 | vt 0.500000 0.089977 1221 | vt 0.509911 0.090724 1222 | vt 0.490089 0.090724 1223 | vt 0.509713 0.082236 1224 | vt 0.490287 0.082236 1225 | vt 0.505196 0.077083 1226 | vt 0.494804 0.077083 1227 | vt 0.500000 0.075473 1228 | vt 0.503445 0.080840 1229 | vt 0.500000 0.080320 1230 | vt 0.496555 0.080840 1231 | vt 0.506660 0.083289 1232 | vt 0.493340 0.083289 1233 | vt 0.506822 0.086791 1234 | vt 0.493178 0.086791 1235 | vt 0.500000 0.085637 1236 | vt 0.562361 0.284338 1237 | vt 0.559190 0.294882 1238 | vt 0.437639 0.284338 1239 | vt 0.440810 0.294882 1240 | vt 0.563180 0.307151 1241 | vt 0.436820 0.307151 1242 | vt 0.570458 0.318697 1243 | vt 0.429542 0.318697 1244 | vt 0.569243 0.278245 1245 | vt 0.430757 0.278245 1246 | vt 0.589914 0.271772 1247 | vt 0.410086 0.271772 1248 | vt 0.602190 0.277180 1249 | vt 0.397810 0.277180 1250 | vt 0.617110 0.287175 1251 | vt 0.382890 0.287175 1252 | vt 0.618074 0.299197 1253 | vt 0.381926 0.299197 1254 | vt 0.615871 0.307438 1255 | vt 0.384129 0.307438 1256 | vt 0.598424 0.313725 1257 | vt 0.401576 0.313725 1258 | vt 0.590828 0.319797 1259 | vt 0.409172 0.319797 1260 | vt 0.582130 0.320991 1261 | vt 0.417870 0.320991 1262 | vt 0.578615 0.309394 1263 | vt 0.583998 0.312892 1264 | vt 0.421385 0.309394 1265 | vt 0.416002 0.312892 1266 | vt 0.589656 0.312336 1267 | vt 0.410344 0.312336 1268 | vt 0.596347 0.309249 1269 | vt 0.403653 0.309249 1270 | vt 0.606014 0.302517 1271 | vt 0.393986 0.302517 1272 | vt 0.607735 0.297520 1273 | vt 0.392265 0.297520 1274 | vt 0.606985 0.291216 1275 | vt 0.393015 0.291216 1276 | vt 0.598275 0.283083 1277 | vt 0.401725 0.283083 1278 | vt 0.589866 0.280167 1279 | vt 0.410134 0.280167 1280 | vt 0.576352 0.284624 1281 | vt 0.423648 0.284624 1282 | vt 0.572831 0.289915 1283 | vt 0.427169 0.289915 1284 | vt 0.573307 0.303342 1285 | vt 0.426693 0.303342 1286 | vt 0.572447 0.295716 1287 | vt 0.427553 0.295716 1288 | vt 0.529647 0.428636 1289 | vt 0.500000 0.428636 1290 | vt 0.470353 0.428636 1291 | vt 0.584616 0.428636 1292 | vt 0.415384 0.428636 1293 | vt 0.622301 0.417889 1294 | vt 0.377699 0.417889 1295 | vt 0.666214 0.388954 1296 | vt 0.333786 0.388954 1297 | vt 0.701481 0.344467 1298 | vt 0.298519 0.344467 1299 | vt 0.712163 0.315527 1300 | vt 0.287837 0.315527 1301 | vt 0.704305 0.260225 1302 | vt 0.295695 0.260225 1303 | vt 0.672947 0.224880 1304 | vt 0.327053 0.224880 1305 | vt 0.640497 0.198841 1306 | vt 0.359503 0.198841 1307 | vt 0.603553 0.023452 1308 | vt 0.625128 0.029461 1309 | vt 0.635753 0.082198 1310 | vt 0.598617 0.056841 1311 | vt 0.364247 0.082198 1312 | vt 0.374872 0.029461 1313 | vt 0.396447 0.023452 1314 | vt 0.401383 0.056841 1315 | vt 0.546781 0.009442 1316 | vt 0.556354 0.040906 1317 | vt 0.453219 0.009442 1318 | vt 0.443646 0.040906 1319 | vt 0.500000 0.033223 1320 | vt 0.527159 0.049514 1321 | vt 0.472841 0.049514 1322 | vt 0.537222 0.060794 1323 | vt 0.462778 0.060794 1324 | vt 0.558499 0.065137 1325 | vt 0.441501 0.065137 1326 | vt 0.588127 0.085177 1327 | vt 0.411873 0.085177 1328 | vt 0.607239 0.113940 1329 | vt 0.392761 0.113940 1330 | vt 0.612663 0.133675 1331 | vt 0.605467 0.151503 1332 | vt 0.394533 0.151503 1333 | vt 0.387337 0.133675 1334 | vt 0.600708 0.162985 1335 | vt 0.399292 0.162985 1336 | vt 0.922374 0.064228 1337 | vt 0.859647 0.117994 1338 | vt 0.823287 0.101559 1339 | vt 0.861342 0.027230 1340 | vt 0.176713 0.101559 1341 | vt 0.140353 0.117994 1342 | vt 0.077626 0.064228 1343 | vt 0.138658 0.027230 1344 | vt 0.765863 0.087001 1345 | vt 0.774604 0.010837 1346 | vt 0.234137 0.087001 1347 | vt 0.225396 0.010837 1348 | vt 0.661952 0.087561 1349 | vt 0.647010 0.028716 1350 | vt 0.338048 0.087561 1351 | vt 0.352990 0.028716 1352 | vt 0.743592 0.198572 1353 | vt 0.766410 0.233065 1354 | vt 0.256408 0.198572 1355 | vt 0.233590 0.233065 1356 | vt 0.987633 0.154243 1357 | vt 0.889478 0.177602 1358 | vt 0.110522 0.177602 1359 | vt 0.012367 0.154243 1360 | vt 0.899807 0.420886 1361 | vt 0.844317 0.347370 1362 | vt 0.881169 0.309153 1363 | vt 0.958963 0.357385 1364 | vt 0.118831 0.309153 1365 | vt 0.155683 0.347370 1366 | vt 0.100193 0.420886 1367 | vt 0.041037 0.357385 1368 | vt 0.903302 0.261367 1369 | vt 0.999860 0.253531 1370 | vt 0.096698 0.261367 1371 | vt 0.000140 0.253531 1372 | vt 0.724763 0.340212 1373 | vt 0.744725 0.304629 1374 | vt 0.766113 0.319494 1375 | vt 0.255275 0.304629 1376 | vt 0.275237 0.340212 1377 | vt 0.233887 0.319494 1378 | vt 0.793427 0.280495 1379 | vt 0.826663 0.297810 1380 | vt 0.206573 0.280495 1381 | vt 0.173337 0.297810 1382 | vt 0.823620 0.254612 1383 | vt 0.855331 0.267956 1384 | vt 0.176380 0.254612 1385 | vt 0.144669 0.267956 1386 | vt 0.835860 0.225225 1387 | vt 0.868309 0.233525 1388 | vt 0.164140 0.225225 1389 | vt 0.131691 0.233525 1390 | vt 0.813499 0.190705 1391 | vt 0.851288 0.181145 1392 | vt 0.148712 0.181145 1393 | vt 0.186501 0.190705 1394 | vt 0.772263 0.374010 1395 | vt 0.227737 0.374010 1396 | vt 0.744519 0.390057 1397 | vt 0.255481 0.390057 1398 | vt 0.824765 0.470987 1399 | vt 0.175235 0.470987 1400 | vt 0.792141 0.464714 1401 | vt 0.742181 0.461543 1402 | vt 0.726855 0.432574 1403 | vt 0.273145 0.432574 1404 | vt 0.257819 0.461543 1405 | vt 0.207859 0.464714 1406 | vt 0.795638 0.489991 1407 | vt 0.204362 0.489991 1408 | vt 0.786137 0.227788 1409 | vt 0.213863 0.227788 1410 | vt 0.802950 0.203415 1411 | vt 0.197050 0.203415 1412 | vt 0.769334 0.128771 1413 | vt 0.691484 0.146686 1414 | vt 0.230666 0.128771 1415 | vt 0.308516 0.146686 1416 | vt 0.780113 0.169386 1417 | vt 0.219887 0.169386 1418 | vt 0.803789 0.171181 1419 | vt 0.830917 0.139518 1420 | vt 0.169083 0.139518 1421 | vt 0.196211 0.171181 1422 | vt 0.574628 0.959188 1423 | vt 0.464516 0.959188 1424 | vt 0.477326 0.891852 1425 | vt 0.545439 0.884582 1426 | vt 0.272900 0.891852 1427 | vt 0.285710 0.959188 1428 | vt 0.175598 0.959188 1429 | vt 0.204787 0.884582 1430 | vt 0.605134 0.846978 1431 | vt 0.715894 0.897069 1432 | vt 0.145092 0.846978 1433 | vt 0.034332 0.897069 1434 | vt 0.605360 0.784410 1435 | vt 0.683874 0.757011 1436 | vt 0.144866 0.784410 1437 | vt 0.066352 0.757011 1438 | vt 0.574835 0.744212 1439 | vt 0.617867 0.719156 1440 | vt 0.175391 0.744212 1441 | vt 0.132359 0.719156 1442 | vt 0.534996 0.712528 1443 | vt 0.568728 0.682132 1444 | vt 0.215230 0.712528 1445 | vt 0.181498 0.682132 1446 | vt 0.483006 0.686791 1447 | vt 0.508539 0.641024 1448 | vt 0.267220 0.686791 1449 | vt 0.241687 0.641024 1450 | vt 0.513415 0.736977 1451 | vt 0.478880 0.719593 1452 | vt 0.271346 0.719593 1453 | vt 0.236811 0.736977 1454 | vt 0.541117 0.760754 1455 | vt 0.209109 0.760754 1456 | vt 0.557599 0.789442 1457 | vt 0.192627 0.789442 1458 | vt 0.553841 0.821849 1459 | vt 0.196385 0.821849 1460 | vt 0.524671 0.842380 1461 | vt 0.225555 0.842380 1462 | vt 0.485193 0.845321 1463 | vt 0.265033 0.845321 1464 | vt 0.786150 0.181127 1465 | vt 0.770208 0.191225 1466 | vt 0.213850 0.181127 1467 | vt 0.229792 0.191225 1468 | vt 0.408153 0.587507 1469 | vt 0.409610 0.674022 1470 | vt 0.342073 0.587507 1471 | vt 0.340616 0.674022 1472 | vt 0.400301 0.910556 1473 | vt 0.414155 0.878318 1474 | vt 0.336071 0.878318 1475 | vt 0.349925 0.910556 1476 | vt 0.443630 0.713731 1477 | vt 0.306596 0.713731 1478 | vt 0.429725 0.728622 1479 | vt 0.392812 0.710774 1480 | vt 0.357414 0.710774 1481 | vt 0.320501 0.728622 1482 | vt 0.422979 0.754609 1483 | vt 0.432640 0.746527 1484 | vt 0.327247 0.754609 1485 | vt 0.317586 0.746527 1486 | vt 0.427719 0.796173 1487 | vt 0.391578 0.815187 1488 | vt 0.358648 0.815187 1489 | vt 0.322507 0.796173 1490 | vt 0.448277 0.830976 1491 | vt 0.301949 0.830976 1492 | vt 0.797710 0.195652 1493 | vt 0.802580 0.199758 1494 | vt 0.197420 0.199758 1495 | vt 0.202290 0.195652 1496 | vt 0.789609 0.184671 1497 | vt 0.210391 0.184671 1498 | vt 0.466042 0.804091 1499 | vt 0.490498 0.816075 1500 | vt 0.284184 0.804091 1501 | vt 0.259728 0.816075 1502 | vt 0.448042 0.783921 1503 | vt 0.302184 0.783921 1504 | vt 0.438745 0.764960 1505 | vt 0.311481 0.764960 1506 | vt 0.445216 0.756351 1507 | vt 0.305010 0.756351 1508 | vt 0.449819 0.743458 1509 | vt 0.300407 0.743458 1510 | vt 0.456307 0.732687 1511 | vt 0.293919 0.732687 1512 | vt 0.475471 0.740871 1513 | vt 0.274755 0.740871 1514 | vt 0.514211 0.817769 1515 | vt 0.236015 0.817769 1516 | vt 0.527961 0.808598 1517 | vt 0.222265 0.808598 1518 | vt 0.530079 0.790754 1519 | vt 0.220147 0.790754 1520 | vt 0.518620 0.772385 1521 | vt 0.231606 0.772385 1522 | vt 0.498668 0.755033 1523 | vt 0.251558 0.755033 1524 | vt 0.468029 0.756171 1525 | vt 0.459660 0.770459 1526 | vt 0.282197 0.756171 1527 | vt 0.290566 0.770459 1528 | vt 0.487167 0.769899 1529 | vt 0.477354 0.785393 1530 | vt 0.263059 0.769899 1531 | vt 0.272872 0.785393 1532 | vt 0.504617 0.782999 1533 | vt 0.496545 0.797122 1534 | vt 0.245609 0.782999 1535 | vt 0.253681 0.797122 1536 | vt 0.516137 0.792591 1537 | vt 0.513713 0.804019 1538 | vt 0.234089 0.792591 1539 | vt 0.236513 0.804019 1540 | vt 0.574269 0.607668 1541 | vt 0.613510 0.655816 1542 | vt 0.175957 0.607668 1543 | vt 0.136716 0.655816 1544 | vt 0.644031 0.693270 1545 | vt 0.106195 0.693270 1546 | vt 0.668163 0.712097 1547 | vt 0.082063 0.712097 1548 | vt 0.727131 0.698475 1549 | vt 0.676584 0.686010 1550 | vt 0.023095 0.698475 1551 | vt 0.073642 0.686010 1552 | vt 0.729804 0.624370 1553 | vt 0.667013 0.640198 1554 | vt 0.020422 0.624370 1555 | vt 0.083213 0.640198 1556 | vt 0.721292 0.572934 1557 | vt 0.648152 0.594596 1558 | vt 0.028934 0.572934 1559 | vt 0.102074 0.594596 1560 | vt 0.630034 0.557583 1561 | vt 0.717709 0.538143 1562 | vt 0.032517 0.538143 1563 | vt 0.120192 0.557583 1564 | vt 0.526877 0.539235 1565 | vt 0.223349 0.539235 1566 | s 0 1567 | f 47/1/1 1/2/1 3/3/1 45/4/1 1568 | f 4/5/2 2/6/2 48/7/2 46/8/2 1569 | f 45/4/3 3/3/3 5/9/3 43/10/3 1570 | f 6/11/4 4/5/4 46/8/4 44/12/4 1571 | f 3/3/5 9/13/5 7/14/5 5/9/5 1572 | f 8/15/6 10/16/6 4/5/6 6/11/6 1573 | f 1/2/7 11/17/7 9/13/7 3/3/7 1574 | f 10/16/8 12/18/8 2/6/8 4/5/8 1575 | f 11/17/9 13/19/9 15/20/9 9/13/9 1576 | f 16/21/10 14/22/10 12/18/10 10/16/10 1577 | f 9/13/11 15/20/11 17/23/11 7/14/11 1578 | f 18/24/12 16/21/12 10/16/12 8/15/12 1579 | f 15/20/13 21/25/13 19/26/13 17/23/13 1580 | f 20/27/14 22/28/14 16/21/14 18/24/14 1581 | f 13/19/15 23/29/15 21/25/15 15/20/15 1582 | f 22/28/16 24/30/16 14/22/16 16/21/16 1583 | f 23/29/17 25/31/17 27/32/17 21/25/17 1584 | f 28/33/18 26/34/18 24/30/18 22/28/18 1585 | f 21/25/19 27/32/19 29/35/19 19/26/19 1586 | f 30/36/20 28/33/20 22/28/20 20/27/20 1587 | f 27/32/21 33/37/21 31/38/21 29/35/21 1588 | f 32/39/22 34/40/22 28/33/22 30/36/22 1589 | f 25/31/23 35/41/23 33/37/23 27/32/23 1590 | f 34/40/24 36/42/24 26/34/24 28/33/24 1591 | f 35/41/25 37/43/25 39/44/25 33/37/25 1592 | f 40/45/26 38/46/26 36/42/26 34/40/26 1593 | f 33/37/27 39/44/27 41/47/27 31/38/27 1594 | f 42/48/28 40/45/28 34/40/28 32/39/28 1595 | f 39/44/29 45/4/29 43/10/29 41/47/29 1596 | f 44/12/30 46/8/30 40/45/30 42/48/30 1597 | f 37/43/31 47/1/31 45/4/31 39/44/31 1598 | f 46/8/32 48/7/32 38/46/32 40/45/32 1599 | f 47/1/33 37/43/33 51/49/33 49/50/33 1600 | f 52/51/34 38/46/34 48/7/34 50/52/34 1601 | f 37/43/35 35/41/35 53/53/35 51/49/35 1602 | f 54/54/36 36/42/36 38/46/36 52/51/36 1603 | f 35/41/37 25/31/37 55/55/37 53/53/37 1604 | f 56/56/38 26/34/38 36/42/38 54/54/38 1605 | f 25/31/39 23/29/39 57/57/39 55/55/39 1606 | f 58/58/40 24/30/40 26/34/40 56/56/40 1607 | f 23/29/41 13/19/41 59/59/41 57/57/41 1608 | f 60/60/42 14/22/42 24/30/42 58/58/42 1609 | f 13/19/43 11/17/43 63/61/43 59/59/43 1610 | f 64/62/44 12/18/44 14/22/44 60/60/44 1611 | f 11/17/45 1/2/45 65/63/45 63/61/45 1612 | f 66/64/46 2/6/46 12/18/46 64/62/46 1613 | f 1/2/47 47/1/47 49/50/47 65/63/47 1614 | f 50/52/48 48/7/48 2/6/48 66/64/48 1615 | f 61/65/49 65/63/49 49/50/49 1616 | f 50/52/50 66/64/50 62/66/50 1617 | f 63/61/51 65/63/51 61/65/51 1618 | f 62/66/52 66/64/52 64/62/52 1619 | f 61/65/53 59/59/53 63/61/53 1620 | f 64/62/54 60/60/54 62/66/54 1621 | f 61/65/55 57/57/55 59/59/55 1622 | f 60/60/56 58/58/56 62/66/56 1623 | f 61/65/57 55/55/57 57/57/57 1624 | f 58/58/58 56/56/58 62/66/58 1625 | f 61/65/59 53/53/59 55/55/59 1626 | f 56/56/60 54/54/60 62/66/60 1627 | f 61/65/61 51/49/61 53/53/61 1628 | f 54/54/62 52/51/62 62/66/62 1629 | f 61/65/63 49/50/63 51/49/63 1630 | f 52/51/64 50/52/64 62/66/64 1631 | f 89/67/65 174/68/65 176/69/65 91/70/65 1632 | f 176/69/66 175/71/66 90/72/66 91/70/66 1633 | f 87/73/67 172/74/67 174/68/67 89/67/67 1634 | f 175/71/68 173/75/68 88/76/68 90/72/68 1635 | f 85/77/69 170/78/69 172/74/69 87/73/69 1636 | f 173/75/70 171/79/70 86/80/70 88/76/70 1637 | f 83/81/71 168/82/71 170/78/71 85/77/71 1638 | f 171/79/72 169/83/72 84/84/72 86/80/72 1639 | f 81/85/73 166/86/73 168/82/73 83/81/73 1640 | f 169/83/74 167/87/74 82/88/74 84/84/74 1641 | f 79/89/75 92/90/75 146/91/75 164/92/75 1642 | f 147/93/76 93/94/76 80/95/76 165/96/76 1643 | f 92/90/77 94/97/77 148/98/77 146/91/77 1644 | f 149/99/78 95/100/78 93/94/78 147/93/78 1645 | f 94/97/79 96/101/79 150/102/79 148/98/79 1646 | f 151/103/80 97/104/80 95/100/80 149/99/80 1647 | f 96/101/81 98/105/81 152/106/81 150/102/81 1648 | f 153/107/82 99/108/82 97/104/82 151/103/82 1649 | f 98/105/83 100/109/83 154/110/83 152/106/83 1650 | f 155/111/84 101/112/84 99/108/84 153/107/84 1651 | f 100/109/85 102/113/85 156/114/85 154/110/85 1652 | f 157/115/86 103/116/86 101/112/86 155/111/86 1653 | f 102/113/87 104/117/87 158/118/87 156/114/87 1654 | f 159/119/88 105/120/88 103/116/88 157/115/88 1655 | f 104/117/89 106/121/89 160/122/89 158/118/89 1656 | f 161/123/90 107/124/90 105/120/90 159/119/90 1657 | f 106/121/91 108/125/91 162/126/91 160/122/91 1658 | f 163/127/92 109/128/92 107/124/92 161/123/92 1659 | f 108/125/93 67/129/93 68/130/93 162/126/93 1660 | f 68/130/94 67/129/94 109/128/94 163/127/94 1661 | f 110/131/95 128/132/95 160/122/95 162/126/95 1662 | f 161/123/96 129/133/96 111/134/96 163/127/96 1663 | f 128/132/97 179/135/97 158/118/97 160/122/97 1664 | f 159/119/98 180/136/98 129/133/98 161/123/98 1665 | f 126/137/99 156/114/99 158/118/99 179/135/99 1666 | f 159/119/100 157/115/100 127/138/100 180/136/100 1667 | f 124/139/101 154/110/101 156/114/101 126/137/101 1668 | f 157/115/102 155/111/102 125/140/102 127/138/102 1669 | f 122/141/103 152/106/103 154/110/103 124/139/103 1670 | f 155/111/104 153/107/104 123/142/104 125/140/104 1671 | f 120/143/105 150/102/105 152/106/105 122/141/105 1672 | f 153/107/106 151/103/106 121/144/106 123/142/106 1673 | f 118/145/107 148/98/107 150/102/107 120/143/107 1674 | f 151/103/108 149/99/108 119/146/108 121/144/108 1675 | f 116/147/109 146/91/109 148/98/109 118/145/109 1676 | f 149/99/110 147/93/110 117/148/110 119/146/110 1677 | f 114/149/111 164/92/111 146/91/111 116/147/111 1678 | f 147/93/112 165/96/112 115/150/112 117/148/112 1679 | f 114/149/113 181/151/113 177/152/113 164/92/113 1680 | f 177/152/114 182/153/114 115/150/114 165/96/114 1681 | f 110/131/115 162/126/115 68/130/115 112/154/115 1682 | f 68/130/116 163/127/116 111/134/116 113/155/116 1683 | f 112/154/117 68/130/117 178/156/117 183/157/117 1684 | f 178/156/118 68/130/118 113/155/118 184/158/118 1685 | f 177/152/119 181/151/119 183/157/119 178/156/119 1686 | f 184/158/120 182/153/120 177/152/120 178/156/120 1687 | f 135/159/121 137/160/121 176/69/121 174/68/121 1688 | f 176/69/122 137/160/122 136/161/122 175/71/122 1689 | f 133/162/123 135/159/123 174/68/123 172/74/123 1690 | f 175/71/124 136/161/124 134/163/124 173/75/124 1691 | f 131/164/125 133/162/125 172/74/125 170/78/125 1692 | f 173/75/126 134/163/126 132/165/126 171/79/126 1693 | f 166/86/127 187/166/127 185/167/127 168/82/127 1694 | f 186/168/128 188/169/128 167/87/128 169/83/128 1695 | f 131/164/129 170/78/129 168/82/129 185/167/129 1696 | f 169/83/130 171/79/130 132/165/130 186/168/130 1697 | f 144/170/131 190/171/131 189/172/131 187/166/131 1698 | f 189/172/132 190/171/132 145/173/132 188/169/132 1699 | f 185/167/133 187/166/133 189/172/133 69/174/133 1700 | f 189/172/134 188/169/134 186/168/134 69/174/134 1701 | f 130/175/135 131/164/135 185/167/135 69/174/135 1702 | f 186/168/135 132/165/135 130/175/135 69/174/135 1703 | f 142/176/136 193/177/136 191/178/136 144/170/136 1704 | f 192/179/137 194/180/137 143/181/137 145/173/137 1705 | f 140/182/138 195/183/138 193/177/138 142/176/138 1706 | f 194/180/139 196/184/139 141/185/139 143/181/139 1707 | f 139/186/140 197/187/140 195/183/140 140/182/140 1708 | f 196/184/141 198/188/141 139/186/141 141/185/141 1709 | f 138/189/142 71/190/142 197/187/142 139/186/142 1710 | f 198/188/143 71/190/143 138/189/143 139/186/143 1711 | f 190/171/144 144/170/144 191/178/144 70/191/144 1712 | f 192/179/145 145/173/145 190/171/145 70/191/145 1713 | f 70/191/146 191/178/146 206/192/146 208/193/146 1714 | f 207/194/147 192/179/147 70/191/147 208/193/147 1715 | f 71/190/148 199/195/148 200/196/148 197/187/148 1716 | f 201/197/149 199/195/149 71/190/149 198/188/149 1717 | f 197/187/150 200/196/150 202/198/150 195/183/150 1718 | f 203/199/151 201/197/151 198/188/151 196/184/151 1719 | f 195/183/152 202/198/152 204/200/152 193/177/152 1720 | f 205/201/153 203/199/153 196/184/153 194/180/153 1721 | f 193/177/154 204/200/154 206/192/154 191/178/154 1722 | f 207/194/155 205/201/155 194/180/155 192/179/155 1723 | f 199/195/156 204/200/156 202/198/156 200/196/156 1724 | f 203/199/157 205/201/157 199/195/157 201/197/157 1725 | f 199/195/158 208/193/158 206/192/158 204/200/158 1726 | f 207/194/159 208/193/159 199/195/159 205/201/159 1727 | f 139/186/160 140/182/160 164/92/160 177/152/160 1728 | f 165/96/161 141/185/161 139/186/161 177/152/161 1729 | f 140/182/162 142/176/162 211/202/162 164/92/162 1730 | f 212/203/163 143/181/163 141/185/163 165/96/163 1731 | f 142/176/164 144/170/164 213/204/164 211/202/164 1732 | f 214/205/165 145/173/165 143/181/165 212/203/165 1733 | f 144/170/166 187/166/166 166/86/166 213/204/166 1734 | f 167/87/167 188/169/167 145/173/167 214/205/167 1735 | f 81/85/168 209/206/168 213/204/168 166/86/168 1736 | f 214/205/169 210/207/169 82/88/169 167/87/169 1737 | f 209/206/170 215/208/170 211/202/170 213/204/170 1738 | f 212/203/171 216/209/171 210/207/171 214/205/171 1739 | f 79/89/172 164/92/172 211/202/172 215/208/172 1740 | f 212/203/173 165/96/173 80/95/173 216/209/173 1741 | f 131/164/174 130/175/174 72/210/174 222/211/174 1742 | f 72/210/175 130/175/175 132/165/175 223/212/175 1743 | f 133/162/176 131/164/176 222/211/176 220/213/176 1744 | f 223/212/177 132/165/177 134/163/177 221/214/177 1745 | f 135/159/178 133/162/178 220/213/178 218/215/178 1746 | f 221/214/179 134/163/179 136/161/179 219/216/179 1747 | f 137/160/180 135/159/180 218/215/180 217/217/180 1748 | f 219/216/181 136/161/181 137/160/181 217/217/181 1749 | f 217/217/182 218/215/182 229/218/182 231/219/182 1750 | f 230/220/183 219/216/183 217/217/183 231/219/183 1751 | f 218/215/184 220/213/184 227/221/184 229/218/184 1752 | f 228/222/185 221/214/185 219/216/185 230/220/185 1753 | f 220/213/186 222/211/186 225/223/186 227/221/186 1754 | f 226/224/187 223/212/187 221/214/187 228/222/187 1755 | f 222/211/188 72/210/188 224/225/188 225/223/188 1756 | f 224/225/189 72/210/189 223/212/189 226/224/189 1757 | f 224/225/190 231/219/190 229/218/190 225/223/190 1758 | f 230/220/191 231/219/191 224/225/191 226/224/191 1759 | f 225/223/192 229/218/192 227/221/192 1760 | f 228/222/193 230/220/193 226/224/193 1761 | f 183/157/194 181/151/194 234/226/194 232/227/194 1762 | f 235/228/195 182/153/195 184/158/195 233/229/195 1763 | f 112/154/196 183/157/196 232/227/196 254/230/196 1764 | f 233/229/197 184/158/197 113/155/197 255/231/197 1765 | f 110/131/198 112/154/198 254/230/198 256/232/198 1766 | f 255/231/199 113/155/199 111/134/199 257/233/199 1767 | f 181/151/200 114/149/200 252/234/200 234/226/200 1768 | f 253/235/201 115/150/201 182/153/201 235/228/201 1769 | f 114/149/202 116/147/202 250/236/202 252/234/202 1770 | f 251/237/203 117/148/203 115/150/203 253/235/203 1771 | f 116/147/204 118/145/204 248/238/204 250/236/204 1772 | f 249/239/205 119/146/205 117/148/205 251/237/205 1773 | f 118/145/206 120/143/206 246/240/206 248/238/206 1774 | f 247/241/207 121/144/207 119/146/207 249/239/207 1775 | f 120/143/208 122/141/208 244/242/208 246/240/208 1776 | f 245/243/209 123/142/209 121/144/209 247/241/209 1777 | f 122/141/210 124/139/210 242/244/210 244/242/210 1778 | f 243/245/211 125/140/211 123/142/211 245/243/211 1779 | f 124/139/212 126/137/212 240/246/212 242/244/212 1780 | f 241/247/213 127/138/213 125/140/213 243/245/213 1781 | f 126/137/214 179/135/214 236/248/214 240/246/214 1782 | f 237/249/215 180/136/215 127/138/215 241/247/215 1783 | f 179/135/216 128/132/216 238/250/216 236/248/216 1784 | f 239/251/217 129/133/217 180/136/217 237/249/217 1785 | f 128/132/218 110/131/218 256/232/218 238/250/218 1786 | f 257/233/219 111/134/219 129/133/219 239/251/219 1787 | f 238/250/220 256/232/220 258/252/220 276/253/220 1788 | f 259/254/221 257/233/221 239/251/221 277/255/221 1789 | f 236/248/222 238/250/222 276/253/222 278/256/222 1790 | f 277/255/223 239/251/223 237/249/223 279/257/223 1791 | f 240/246/224 236/248/224 278/256/224 274/258/224 1792 | f 279/257/225 237/249/225 241/247/225 275/259/225 1793 | f 242/244/226 240/246/226 274/258/226 272/260/226 1794 | f 275/259/227 241/247/227 243/245/227 273/261/227 1795 | f 244/242/228 242/244/228 272/260/228 270/262/228 1796 | f 273/261/229 243/245/229 245/243/229 271/263/229 1797 | f 246/240/230 244/242/230 270/262/230 268/264/230 1798 | f 271/263/231 245/243/231 247/241/231 269/265/231 1799 | f 248/238/232 246/240/232 268/264/232 266/266/232 1800 | f 269/265/233 247/241/233 249/239/233 267/267/233 1801 | f 250/236/234 248/238/234 266/266/234 264/268/234 1802 | f 267/267/235 249/239/235 251/237/235 265/269/235 1803 | f 252/234/236 250/236/236 264/268/236 262/270/236 1804 | f 265/269/237 251/237/237 253/235/237 263/271/237 1805 | f 234/226/238 252/234/238 262/270/238 280/272/238 1806 | f 263/271/239 253/235/239 235/228/239 281/273/239 1807 | f 256/232/240 254/230/240 260/274/240 258/252/240 1808 | f 261/275/241 255/231/241 257/233/241 259/254/241 1809 | f 254/230/242 232/227/242 282/276/242 260/274/242 1810 | f 283/277/243 233/229/243 255/231/243 261/275/243 1811 | f 232/227/244 234/226/244 280/272/244 282/276/244 1812 | f 281/273/245 235/228/245 233/229/245 283/277/245 1813 | f 67/129/246 108/125/246 284/278/246 73/279/246 1814 | f 285/280/247 109/128/247 67/129/247 73/279/247 1815 | f 108/125/248 106/121/248 286/281/248 284/278/248 1816 | f 287/282/249 107/124/249 109/128/249 285/280/249 1817 | f 106/121/250 104/117/250 288/283/250 286/281/250 1818 | f 289/284/251 105/120/251 107/124/251 287/282/251 1819 | f 104/117/252 102/113/252 290/285/252 288/283/252 1820 | f 291/286/253 103/116/253 105/120/253 289/284/253 1821 | f 102/113/254 100/109/254 292/287/254 290/285/254 1822 | f 293/288/255 101/112/255 103/116/255 291/286/255 1823 | f 100/109/256 98/105/256 294/289/256 292/287/256 1824 | f 295/290/257 99/108/257 101/112/257 293/288/257 1825 | f 98/105/258 96/101/258 296/291/258 294/289/258 1826 | f 297/292/259 97/104/259 99/108/259 295/290/259 1827 | f 96/101/260 94/97/260 298/293/260 296/291/260 1828 | f 299/294/261 95/100/261 97/104/261 297/292/261 1829 | f 94/97/262 92/90/262 300/295/262 298/293/262 1830 | f 301/296/263 93/94/263 95/100/263 299/294/263 1831 | f 308/297/264 309/298/264 328/299/264 338/300/264 1832 | f 329/301/265 309/302/265 308/303/265 339/304/265 1833 | f 307/305/266 308/297/266 338/300/266 336/306/266 1834 | f 339/304/267 308/303/267 307/307/267 337/308/267 1835 | f 306/309/268 307/305/268 336/306/268 340/310/268 1836 | f 337/308/269 307/307/269 306/309/269 341/311/269 1837 | f 89/67/270 91/70/270 306/309/270 340/310/270 1838 | f 306/309/271 91/70/271 90/72/271 341/311/271 1839 | f 87/73/272 89/67/272 340/310/272 334/312/272 1840 | f 341/311/273 90/72/273 88/76/273 335/313/273 1841 | f 85/77/274 87/73/274 334/312/274 330/314/274 1842 | f 335/313/275 88/76/275 86/80/275 331/315/275 1843 | f 83/81/276 85/77/276 330/314/276 332/316/276 1844 | f 331/315/277 86/80/277 84/84/277 333/317/277 1845 | f 330/314/278 336/306/278 338/300/278 332/316/278 1846 | f 339/304/279 337/308/279 331/315/279 333/317/279 1847 | f 330/314/280 334/312/280 340/310/280 336/306/280 1848 | f 341/311/281 335/313/281 331/315/281 337/308/281 1849 | f 326/318/282 332/316/282 338/300/282 328/299/282 1850 | f 339/304/283 333/317/283 327/319/283 329/301/283 1851 | f 81/85/284 83/81/284 332/316/284 326/318/284 1852 | f 333/317/285 84/84/285 82/88/285 327/319/285 1853 | f 209/206/286 342/320/286 344/321/286 215/208/286 1854 | f 345/322/287 343/323/287 210/207/287 216/209/287 1855 | f 81/85/288 326/318/288 342/320/288 209/206/288 1856 | f 343/323/289 327/319/289 82/88/289 210/207/289 1857 | f 79/89/290 215/208/290 344/321/290 346/324/290 1858 | f 345/322/291 216/209/291 80/95/291 347/325/291 1859 | f 79/89/292 346/324/292 300/295/292 92/90/292 1860 | f 301/296/293 347/325/293 80/95/293 93/94/293 1861 | f 77/326/294 324/327/294 352/328/294 304/329/294 1862 | f 353/330/295 325/331/295 77/332/295 304/333/295 1863 | f 304/329/296 352/328/296 350/334/296 78/335/296 1864 | f 351/336/297 353/330/297 304/333/297 78/337/297 1865 | f 78/335/298 350/334/298 348/338/298 305/339/298 1866 | f 349/340/299 351/336/299 78/337/299 305/341/299 1867 | f 305/339/300 348/338/300 328/299/300 309/298/300 1868 | f 329/301/301 349/340/301 305/341/301 309/302/301 1869 | f 326/318/302 328/299/302 348/338/302 342/320/302 1870 | f 349/340/303 329/301/303 327/319/303 343/323/303 1871 | f 296/291/304 298/293/304 318/342/304 310/343/304 1872 | f 319/344/305 299/294/305 297/292/305 311/345/305 1873 | f 76/346/306 316/347/306 324/327/306 77/326/306 1874 | f 325/331/307 317/348/307 76/349/307 77/332/307 1875 | f 302/350/308 358/351/308 356/352/308 303/353/308 1876 | f 357/354/309 359/355/309 302/356/309 303/357/309 1877 | f 303/353/310 356/352/310 354/358/310 75/359/310 1878 | f 355/360/311 357/354/311 303/357/311 75/361/311 1879 | f 75/359/312 354/358/312 316/347/312 76/346/312 1880 | f 317/348/313 355/360/313 75/361/313 76/349/313 1881 | f 292/362/314 294/289/314 362/363/314 364/364/314 1882 | f 363/365/315 295/290/315 293/366/315 365/367/315 1883 | f 364/364/316 362/363/316 368/368/316 366/369/316 1884 | f 369/370/317 363/365/317 365/367/317 367/371/317 1885 | f 366/369/318 368/368/318 370/372/318 372/373/318 1886 | f 371/374/319 369/370/319 367/371/319 373/375/319 1887 | f 372/373/320 370/372/320 376/376/320 374/377/320 1888 | f 377/378/321 371/374/321 373/375/321 375/379/321 1889 | f 314/380/322 378/381/322 374/377/322 376/376/322 1890 | f 375/379/323 379/382/323 315/383/323 377/378/323 1891 | f 316/347/324 354/358/324 374/377/324 378/381/324 1892 | f 375/379/325 355/360/325 317/348/325 379/382/325 1893 | f 354/358/326 356/352/326 372/373/326 374/377/326 1894 | f 373/375/327 357/354/327 355/360/327 375/379/327 1895 | f 356/352/328 358/351/328 366/369/328 372/373/328 1896 | f 367/371/329 359/355/329 357/354/329 373/375/329 1897 | f 358/351/330 360/384/330 364/364/330 366/369/330 1898 | f 365/367/331 361/385/331 359/355/331 367/371/331 1899 | f 290/386/332 292/362/332 364/364/332 360/384/332 1900 | f 365/367/333 293/366/333 291/387/333 361/385/333 1901 | f 74/388/334 360/384/334 358/351/334 302/350/334 1902 | f 359/355/335 361/385/335 74/389/335 302/356/335 1903 | f 284/390/336 286/391/336 288/392/336 290/386/336 1904 | f 289/393/337 287/394/337 285/395/337 291/387/337 1905 | f 284/390/338 290/386/338 360/384/338 74/388/338 1906 | f 361/385/339 291/387/339 285/395/339 74/389/339 1907 | f 73/396/340 284/390/340 74/388/340 1908 | f 74/389/341 285/395/341 73/397/341 1909 | f 294/289/342 296/291/342 310/343/342 362/363/342 1910 | f 311/345/343 297/292/343 295/290/343 363/365/343 1911 | f 310/343/344 312/398/344 368/368/344 362/363/344 1912 | f 369/370/345 313/399/345 311/345/345 363/365/345 1913 | f 312/398/346 382/400/346 370/372/346 368/368/346 1914 | f 371/374/347 383/401/347 313/399/347 369/370/347 1915 | f 314/380/348 376/376/348 370/372/348 382/400/348 1916 | f 371/374/349 377/378/349 315/383/349 383/401/349 1917 | f 348/338/350 350/334/350 386/402/350 384/403/350 1918 | f 387/404/351 351/336/351 349/340/351 385/405/351 1919 | f 318/342/352 384/403/352 386/402/352 320/406/352 1920 | f 387/404/353 385/405/353 319/344/353 321/407/353 1921 | f 298/293/354 300/295/354 384/403/354 318/342/354 1922 | f 385/405/355 301/296/355 299/294/355 319/344/355 1923 | f 300/295/356 344/321/356 342/320/356 384/403/356 1924 | f 343/323/357 345/322/357 301/296/357 385/405/357 1925 | f 342/320/358 348/338/358 384/403/358 1926 | f 385/405/359 349/340/359 343/323/359 1927 | f 300/295/360 346/324/360 344/321/360 1928 | f 345/322/361 347/325/361 301/296/361 1929 | f 314/380/362 322/408/362 380/409/362 378/381/362 1930 | f 381/410/363 323/411/363 315/383/363 379/382/363 1931 | f 316/347/364 378/381/364 380/409/364 324/327/364 1932 | f 381/410/365 379/382/365 317/348/365 325/331/365 1933 | f 320/406/366 386/402/366 380/409/366 322/408/366 1934 | f 381/410/367 387/404/367 321/407/367 323/411/367 1935 | f 350/334/368 352/328/368 380/409/368 386/402/368 1936 | f 381/410/369 353/330/369 351/336/369 387/404/369 1937 | f 324/327/370 380/409/370 352/328/370 1938 | f 353/330/371 381/410/371 325/331/371 1939 | f 400/412/372 388/413/372 414/414/372 402/415/372 1940 | f 415/416/373 389/417/373 401/418/373 403/419/373 1941 | f 400/412/374 402/415/374 404/420/374 398/421/374 1942 | f 405/422/375 403/419/375 401/418/375 399/423/375 1943 | f 398/421/376 404/420/376 406/424/376 396/425/376 1944 | f 407/426/377 405/422/377 399/423/377 397/427/377 1945 | f 396/425/378 406/424/378 408/428/378 394/429/378 1946 | f 409/430/379 407/426/379 397/427/379 395/431/379 1947 | f 394/429/380 408/428/380 410/432/380 392/433/380 1948 | f 411/434/381 409/430/381 395/431/381 393/435/381 1949 | f 392/433/382 410/432/382 412/436/382 390/437/382 1950 | f 413/438/383 411/434/383 393/435/383 391/439/383 1951 | f 410/432/384 420/440/384 418/441/384 412/436/384 1952 | f 419/442/385 421/443/385 411/434/385 413/438/385 1953 | f 408/428/386 422/444/386 420/440/386 410/432/386 1954 | f 421/443/387 423/445/387 409/430/387 411/434/387 1955 | f 406/424/388 424/446/388 422/444/388 408/428/388 1956 | f 423/445/389 425/447/389 407/426/389 409/430/389 1957 | f 404/420/390 426/448/390 424/446/390 406/424/390 1958 | f 425/447/391 427/449/391 405/422/391 407/426/391 1959 | f 402/415/392 428/450/392 426/448/392 404/420/392 1960 | f 427/449/393 429/451/393 403/419/393 405/422/393 1961 | f 402/415/394 414/414/394 416/452/394 428/450/394 1962 | f 417/453/395 415/416/395 403/419/395 429/451/395 1963 | f 318/342/396 320/406/396 444/454/396 442/455/396 1964 | f 445/456/397 321/407/397 319/344/397 443/457/397 1965 | f 320/458/398 390/437/398 412/436/398 444/459/398 1966 | f 413/438/399 391/439/399 321/460/399 445/461/399 1967 | f 310/343/400 318/342/400 442/455/400 312/398/400 1968 | f 443/457/401 319/344/401 311/345/401 313/399/401 1969 | f 382/462/402 430/463/402 414/414/402 388/413/402 1970 | f 415/416/403 431/464/403 383/465/403 389/417/403 1971 | f 412/436/404 418/441/404 440/466/404 444/459/404 1972 | f 441/467/405 419/442/405 413/438/405 445/461/405 1973 | f 438/468/406 446/469/406 444/459/406 440/466/406 1974 | f 445/461/407 447/470/407 439/471/407 441/467/407 1975 | f 434/472/408 446/469/408 438/468/408 436/473/408 1976 | f 439/471/409 447/470/409 435/474/409 437/475/409 1977 | f 432/476/410 448/477/410 446/469/410 434/472/410 1978 | f 447/470/411 449/478/411 433/479/411 435/474/411 1979 | f 430/463/412 448/477/412 432/476/412 450/480/412 1980 | f 433/479/413 449/478/413 431/464/413 451/481/413 1981 | f 414/414/414 430/463/414 450/480/414 416/452/414 1982 | f 451/481/415 431/464/415 415/416/415 417/453/415 1983 | f 312/398/416 448/482/416 430/483/416 382/400/416 1984 | f 431/484/417 449/485/417 313/399/417 383/401/417 1985 | f 312/398/418 442/455/418 446/486/418 448/482/418 1986 | f 447/487/419 443/457/419 313/399/419 449/485/419 1987 | f 442/455/420 444/454/420 446/486/420 1988 | f 447/487/421 445/456/421 443/457/421 1989 | f 416/452/422 450/480/422 452/488/422 476/489/422 1990 | f 453/490/423 451/481/423 417/453/423 477/491/423 1991 | f 450/480/424 432/476/424 462/492/424 452/488/424 1992 | f 463/493/425 433/479/425 451/481/425 453/490/425 1993 | f 432/476/426 434/472/426 460/494/426 462/492/426 1994 | f 461/495/427 435/474/427 433/479/427 463/493/427 1995 | f 434/472/428 436/473/428 458/496/428 460/494/428 1996 | f 459/497/429 437/475/429 435/474/429 461/495/429 1997 | f 436/473/430 438/468/430 456/498/430 458/496/430 1998 | f 457/499/431 439/471/431 437/475/431 459/497/431 1999 | f 438/468/432 440/466/432 454/500/432 456/498/432 2000 | f 455/501/433 441/467/433 439/471/433 457/499/433 2001 | f 440/466/434 418/441/434 474/502/434 454/500/434 2002 | f 475/503/435 419/442/435 441/467/435 455/501/435 2003 | f 428/450/436 416/452/436 476/489/436 464/504/436 2004 | f 477/491/437 417/453/437 429/451/437 465/505/437 2005 | f 426/448/438 428/450/438 464/504/438 466/506/438 2006 | f 465/505/439 429/451/439 427/449/439 467/507/439 2007 | f 424/446/440 426/448/440 466/506/440 468/508/440 2008 | f 467/507/441 427/449/441 425/447/441 469/509/441 2009 | f 422/444/442 424/446/442 468/508/442 470/510/442 2010 | f 469/509/443 425/447/443 423/445/443 471/511/443 2011 | f 420/440/444 422/444/444 470/510/444 472/512/444 2012 | f 471/511/445 423/445/445 421/443/445 473/513/445 2013 | f 418/441/446 420/440/446 472/512/446 474/502/446 2014 | f 473/513/447 421/443/447 419/442/447 475/503/447 2015 | f 458/496/448 456/498/448 480/514/448 478/515/448 2016 | f 481/516/449 457/499/449 459/497/449 479/517/449 2017 | f 478/515/450 480/514/450 482/518/450 484/519/450 2018 | f 483/520/451 481/516/451 479/517/451 485/521/451 2019 | f 484/519/452 482/518/452 488/522/452 486/523/452 2020 | f 489/524/453 483/520/453 485/521/453 487/525/453 2021 | f 486/523/454 488/522/454 490/526/454 492/527/454 2022 | f 491/528/455 489/524/455 487/525/455 493/529/455 2023 | f 464/504/456 476/489/456 486/523/456 492/527/456 2024 | f 487/525/457 477/491/457 465/505/457 493/529/457 2025 | f 452/488/458 484/519/458 486/523/458 476/489/458 2026 | f 487/525/459 485/521/459 453/490/459 477/491/459 2027 | f 452/488/460 462/492/460 478/515/460 484/519/460 2028 | f 479/517/461 463/493/461 453/490/461 485/521/461 2029 | f 458/496/462 478/515/462 462/492/462 460/494/462 2030 | f 463/493/463 479/517/463 459/497/463 461/495/463 2031 | f 454/500/464 474/502/464 480/514/464 456/498/464 2032 | f 481/516/465 475/503/465 455/501/465 457/499/465 2033 | f 472/512/466 482/518/466 480/514/466 474/502/466 2034 | f 481/516/467 483/520/467 473/513/467 475/503/467 2035 | f 470/510/468 488/522/468 482/518/468 472/512/468 2036 | f 483/520/469 489/524/469 471/511/469 473/513/469 2037 | f 468/508/470 490/526/470 488/522/470 470/510/470 2038 | f 489/524/471 491/528/471 469/509/471 471/511/471 2039 | f 466/506/472 492/527/472 490/526/472 468/508/472 2040 | f 491/528/473 493/529/473 467/507/473 469/509/473 2041 | f 464/504/474 492/527/474 466/506/474 2042 | f 467/507/475 493/529/475 465/505/475 2043 | f 392/433/476 390/437/476 504/530/476 502/531/476 2044 | f 505/532/477 391/439/477 393/435/477 503/533/477 2045 | f 394/429/478 392/433/478 502/531/478 500/534/478 2046 | f 503/533/479 393/435/479 395/431/479 501/535/479 2047 | f 396/425/480 394/429/480 500/534/480 498/536/480 2048 | f 501/535/481 395/431/481 397/427/481 499/537/481 2049 | f 398/538/482 396/425/482 498/536/482 496/539/482 2050 | f 499/537/483 397/427/483 399/540/483 497/541/483 2051 | f 400/542/484 398/538/484 496/539/484 494/543/484 2052 | f 497/541/485 399/540/485 401/544/485 495/545/485 2053 | f 388/546/486 400/542/486 494/543/486 506/547/486 2054 | f 495/545/487 401/544/487 389/548/487 507/549/487 2055 | f 494/543/488 502/531/488 504/530/488 506/547/488 2056 | f 505/532/489 503/533/489 495/545/489 507/549/489 2057 | f 494/543/490 496/539/490 500/534/490 502/531/490 2058 | f 501/535/491 497/541/491 495/545/491 503/533/491 2059 | f 496/539/492 498/536/492 500/534/492 2060 | f 501/535/493 499/537/493 497/541/493 2061 | f 314/550/494 382/551/494 388/546/494 506/547/494 2062 | f 389/548/495 383/552/495 315/553/495 507/549/495 2063 | f 314/550/496 506/547/496 504/530/496 322/554/496 2064 | f 505/532/497 507/549/497 315/553/497 323/555/497 2065 | f 320/458/498 322/554/498 504/530/498 390/437/498 2066 | f 505/532/499 323/555/499 321/460/499 391/439/499 2067 | --------------------------------------------------------------------------------