From be19abcdcfcc561dd6dd099a65701570f7f80fa9 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Mon, 10 Feb 2025 15:07:39 -0600 Subject: [PATCH] example: add modifier_volume_cube --- Makefile | 2 +- example/example.mk | 14 + example/modifier_volume_cube.cpp | 912 +++++++++++ font/terminus/ter_u32n.data | Bin 0 -> 24576 bytes font/terminus/ter_u32n.data.h | 15 + math/mat4x4.hpp | 41 + model/cube/model.h | 104 ++ model/plane/model.h | 2411 ++++++++++++++++++++++++++++++ model/plane/plane.blend | Bin 0 -> 558541 bytes model/plane/plane.mtl | 2 + model/plane/plane.obj | 1095 ++++++++++++++ tools/ttf_bitmap.cpp | 64 +- 12 files changed, 4640 insertions(+), 20 deletions(-) create mode 100644 example/modifier_volume_cube.cpp create mode 100644 font/terminus/ter_u32n.data create mode 100644 font/terminus/ter_u32n.data.h create mode 100644 model/cube/model.h create mode 100644 model/plane/model.h create mode 100644 model/plane/plane.blend create mode 100644 model/plane/plane.mtl create mode 100644 model/plane/plane.obj diff --git a/Makefile b/Makefile index 9bd51b8..652c1e2 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ include base.mk include common.mk include headers.mk -OPT = -Og +OPT = -O2 MAKEFILE_PATH := $(patsubst %/,%,$(dir $(abspath $(firstword $(MAKEFILE_LIST))))) CFLAGS += -I$(MAKEFILE_PATH) LIB ?= $(MAKEFILE_PATH) diff --git a/example/example.mk b/example/example.mk index f7594ed..3e8b068 100644 --- a/example/example.mk +++ b/example/example.mk @@ -859,3 +859,17 @@ SPECK_OBJ = \ example/speck.elf: LDSCRIPT = $(LIB)/main.lds example/speck.elf: $(START_OBJ) $(SPECK_OBJ) + +MODIFIER_VOLUME_CUBE_OBJ = \ + example/modifier_volume_cube.o \ + holly/core.o \ + holly/region_array.o \ + holly/background.o \ + holly/ta_fifo_polygon_converter.o \ + holly/video_output.o \ + sh7091/serial.o \ + font/terminus/ter_u32n.data.o \ + $(LIBGCC) + +example/modifier_volume_cube.elf: LDSCRIPT = $(LIB)/main.lds +example/modifier_volume_cube.elf: $(START_OBJ) $(MODIFIER_VOLUME_CUBE_OBJ) diff --git a/example/modifier_volume_cube.cpp b/example/modifier_volume_cube.cpp new file mode 100644 index 0000000..5017f5b --- /dev/null +++ b/example/modifier_volume_cube.cpp @@ -0,0 +1,912 @@ +#include + +#include "holly/background.hpp" +#include "holly/core.hpp" +#include "holly/core_bits.hpp" +#include "holly/holly.hpp" +#include "holly/isp_tsp.hpp" +#include "holly/region_array.hpp" +#include "holly/ta_bits.hpp" +#include "holly/ta_fifo_polygon_converter.hpp" +#include "holly/ta_global_parameter.hpp" +#include "holly/ta_parameter.hpp" +#include "holly/ta_vertex_parameter.hpp" +#include "holly/texture_memory_alloc3.hpp" +#include "holly/video_output.hpp" + +#include "sh7091/sh7091.hpp" +#include "sh7091/serial.hpp" + +#include "systembus.hpp" +#include "systembus_bits.hpp" + +#include "memorymap.hpp" + +#include "model/model.h" +#include "model/cube.h" +#include "model/plane/model.h" + +#include "font/terminus/ter_u32n.data.h" + +#include "math/vec2.hpp" +#include "math/vec3.hpp" +#include "math/vec4.hpp" +#include "math/mat3x3.hpp" +#include "math/mat4x4.hpp" +#include "math/math.hpp" + +#define assert(b) \ + do { \ + if (!(b)) { \ + serial::string(__FILE__); \ + serial::character(':'); \ + serial::integer(__LINE__, ' '); \ + serial::string(__func__); \ + serial::string(": assertion failed: "); \ + serial::string(#b); \ + serial::character('\n'); \ + while (1); \ + } \ + } while (0); + +using vec2 = vec<2, float>; +using vec3 = vec<3, float>; +using vec4 = vec<4, float>; +using mat3x3 = mat<3, 3, float>; +using mat4x4 = mat<4, 4, float>; + +const float deg = 0.017453292519943295; + +#define _fsrra(n) \ + ({ \ + float v = (n); \ + asm("fsrra %0" \ + : "=f" (v) \ + : "0" (v)); \ + v; \ + }) + +static inline int max(int a, int b) +{ + return (a > b) ? a : b; +} + +static inline int min(int a, int b) +{ + return (a > b) ? b : a; +} + +void global_polygon_type_0(ta_parameter_writer& writer, bool shadow) +{ + const uint32_t parameter_control_word = para_control::para_type::polygon_or_modifier_volume + | para_control::list_type::opaque + | obj_control::col_type::packed_color + | (shadow ? obj_control::shadow : 0) + ; + + const uint32_t isp_tsp_instruction_word = isp_tsp_instruction_word::depth_compare_mode::greater + | isp_tsp_instruction_word::culling_mode::no_culling; + + const uint32_t tsp_instruction_word = tsp_instruction_word::fog_control::no_fog + | tsp_instruction_word::src_alpha_instr::one + | tsp_instruction_word::dst_alpha_instr::zero + ; + + const uint32_t texture_control_word = 0; + + writer.append() = + ta_global_parameter::polygon_type_0(parameter_control_word, + isp_tsp_instruction_word, + tsp_instruction_word, + texture_control_word, + 0, // data_size_for_sort_dma + 0 // next_address_for_sort_dma + ); +} + +void global_modifier_volume(ta_parameter_writer& writer) +{ + const uint32_t parameter_control_word = para_control::para_type::polygon_or_modifier_volume + | para_control::list_type::opaque_modifier_volume + ; + + const uint32_t isp_tsp_instruction_word = isp_tsp_instruction_word::volume_instruction::normal_polygon + | isp_tsp_instruction_word::culling_mode::no_culling; + + writer.append() = + ta_global_parameter::modifier_volume(parameter_control_word, + isp_tsp_instruction_word + ); +} + +void transfer_line(ta_parameter_writer& writer, vec3 p1, vec3 p2, uint32_t base_color) +{ + /* + const uint32_t parameter_control_word = para_control::para_type::sprite + | para_control::list_type::opaque + | obj_control::col_type::packed_color; + + const uint32_t isp_tsp_instruction_word = isp_tsp_instruction_word::depth_compare_mode::greater + | isp_tsp_instruction_word::culling_mode::no_culling; + + const uint32_t tsp_instruction_word = tsp_instruction_word::fog_control::no_fog + | tsp_instruction_word::src_alpha_instr::one + | tsp_instruction_word::dst_alpha_instr::zero + ; + + const uint32_t texture_control_word = 0; + */ + + float dy = p2.y - p1.y; + float dx = p2.x - p1.x; + float d = _fsrra(dx * dx + dy * dy) * 0.7f; + float dy1 = dy * d; + float dx1 = dx * d; + + assert(p1.z < 1); + assert(p2.z < 1); + + const vec3 v[4] = { + { p1.x + dy1, p1.y + -dx1, p1.z }, + { p1.x + -dy1, p1.y + dx1, p1.z }, + { p2.x + -dy1, p2.y + dx1, p2.z }, + { p2.x + dy1, p2.y + -dx1, p2.z }, + }; + + /* + writer.append() = + ta_global_parameter::sprite(parameter_control_word, + isp_tsp_instruction_word, + tsp_instruction_word, + texture_control_word, + base_color, + 0, // offset_color + 0, // data_size_for_sort_dma + 0); // next_address_for_sort_dma + */ + writer.append() = + ta_vertex_parameter::polygon_type_0(polygon_vertex_parameter_control_word(false), + v[0].x, v[0].y, v[0].z, + base_color); + + writer.append() = + ta_vertex_parameter::polygon_type_0(polygon_vertex_parameter_control_word(false), + v[1].x, v[1].y, v[1].z, + base_color); + + writer.append() = + ta_vertex_parameter::polygon_type_0(polygon_vertex_parameter_control_word(false), + v[3].x, v[3].y, v[3].z, + base_color); + + writer.append() = + ta_vertex_parameter::polygon_type_0(polygon_vertex_parameter_control_word(true), + v[2].x, v[2].y, v[2].z, + base_color); +} + +void transfer_glyph(ta_parameter_writer& writer, float x, float y, int c) +{ + constexpr int width = 16; + constexpr int height = 32; + + const uint32_t parameter_control_word = para_control::para_type::sprite + | para_control::list_type::punch_through + | obj_control::col_type::packed_color + | obj_control::texture; + + const uint32_t isp_tsp_instruction_word = isp_tsp_instruction_word::depth_compare_mode::greater + | isp_tsp_instruction_word::culling_mode::no_culling; + + const uint32_t tsp_instruction_word = tsp_instruction_word::fog_control::no_fog + | tsp_instruction_word::src_alpha_instr::src_alpha + | tsp_instruction_word::dst_alpha_instr::inverse_src_alpha + | tsp_instruction_word::texture_u_size::from_int(width) + | tsp_instruction_word::texture_v_size::from_int(height); + + const int ix = c - ' '; + const int offset = (width * height * ix) / 2; + const uint32_t texture_address = texture_memory_alloc.texture.start + offset; + const uint32_t texture_control_word = texture_control_word::pixel_format::_4bpp_palette + | texture_control_word::scan_order::twiddled + | texture_control_word::texture_address(texture_address / 8); + + constexpr vec2 v[4] = { + { 0.f, 0.f }, + { 1.f, 0.f }, + { 1.f, 1.f }, + { 0.f, 1.f }, + }; + + constexpr uint32_t base_color = 0; + writer.append() = + ta_global_parameter::sprite(parameter_control_word, + isp_tsp_instruction_word, + tsp_instruction_word, + texture_control_word, + base_color, + 0, // offset_color + 0, // data_size_for_sort_dma + 0); // next_address_for_sort_dma + + writer.append() = + ta_vertex_parameter::sprite_type_1(para_control::para_type::vertex_parameter, + v[0].x * width + x, + v[0].y * height + y, + 0.1f, + v[1].x * width + x, + v[1].y * height + y, + 0.1f, + v[2].x * width + x, + v[2].y * height + y, + 0.1f, + v[3].x * width + x, + v[3].y * height + y, + uv_16bit(v[0].x, v[0].y), + uv_16bit(v[1].x, v[1].y), + uv_16bit(v[2].x, v[2].y)); +} + +vec3 screen_transform(const mat4x4& screen, vec3 v) +{ + v = screen * v; + + float dim = 480 / 2.0 * 1.5; + + return { + v.x / v.z * dim + 640 / 2.0f, + v.y / v.z * dim + 480 / 2.0f, + 1 / v.z, + }; +} + +void render_basis(ta_parameter_writer& writer, const mat4x4& screen) +{ + global_polygon_type_0(writer, false); + + vec3 origin = screen_transform(screen, {0, 0, 0}); + vec3 z = screen_transform(screen, {0, 0, 1}); + vec3 y = screen_transform(screen, {0, 1, 0}); + vec3 x = screen_transform(screen, {1, 0, 0}); + + uint32_t base_color = 0xffffff; + + // magenta: Z + transfer_line(writer, origin, z, base_color); + + // yellow: Y + transfer_line(writer, origin, y, base_color); + + // cyan: X + transfer_line(writer, origin, x, base_color); +} + +void render_basis_text(ta_parameter_writer& writer, const mat4x4& screen) +{ + vec3 z = screen_transform(screen, (vec3){0, 0, 1} * 1.2f); + vec3 y = screen_transform(screen, (vec3){0, 1, 0} * 1.2f); + vec3 x = screen_transform(screen, (vec3){1, 0, 0} * 1.2f); + + transfer_glyph(writer, z.x - 5, z.y - 10, 'z'); + transfer_glyph(writer, y.x - 5, y.y - 10, 'y'); + transfer_glyph(writer, x.x - 5, x.y - 10, 'x'); +} + +//#define LINE_DRAWING 1 + +static inline void render_quad(ta_parameter_writer& writer, + uint32_t base_color, + vec3 ap, + vec3 bp, + vec3 cp, + vec3 dp) +{ +#ifdef LINE_DRAWING + transfer_line(writer, ap, bp, base_color); + transfer_line(writer, bp, cp, base_color); + transfer_line(writer, cp, dp, base_color); + transfer_line(writer, dp, ap, base_color); +#else + writer.append() = + ta_vertex_parameter::polygon_type_0(polygon_vertex_parameter_control_word(false), + ap.x, ap.y, ap.z, + base_color); + + writer.append() = + ta_vertex_parameter::polygon_type_0(polygon_vertex_parameter_control_word(false), + bp.x, bp.y, bp.z, + base_color); + + writer.append() = + ta_vertex_parameter::polygon_type_0(polygon_vertex_parameter_control_word(false), + dp.x, dp.y, dp.z, + base_color); + + writer.append() = + ta_vertex_parameter::polygon_type_0(polygon_vertex_parameter_control_word(true), + cp.x, cp.y, cp.z, + base_color); +#endif +} + +static inline void render_tri(ta_parameter_writer& writer, + uint32_t base_color, + vec3 ap, + vec3 bp, + vec3 cp) +{ +#ifdef LINE_DRAWING + transfer_line(writer, ap, bp, base_color); + transfer_line(writer, bp, cp, base_color); + transfer_line(writer, cp, ap, base_color); +#else +#endif +} + +static inline void render_last_tri_mod(ta_parameter_writer& writer) +{ +#ifdef LINE_DRAWING +#else + const uint32_t last_parameter_control_word = para_control::para_type::polygon_or_modifier_volume + | para_control::list_type::opaque_modifier_volume + | obj_control::volume::modifier_volume::last_in_volume; + + const uint32_t last_isp_tsp_instruction_word = isp_tsp_instruction_word::volume_instruction::inside_last_polygon + | isp_tsp_instruction_word::culling_mode::no_culling; + + writer.append() = + ta_global_parameter::modifier_volume(last_parameter_control_word, + last_isp_tsp_instruction_word); +#endif +} + +static inline void render_tri_mod(ta_parameter_writer& writer, + vec3 ap, + vec3 bp, + vec3 cp) +{ +#ifdef LINE_DRAWING + transfer_line(writer, ap, bp, base_color); + transfer_line(writer, bp, cp, base_color); + transfer_line(writer, cp, ap, base_color); +#else + writer.append() = + ta_vertex_parameter::modifier_volume(modifier_volume_vertex_parameter_control_word(), + ap.x, ap.y, ap.z, + bp.x, bp.y, bp.z, + cp.x, cp.y, cp.z); +#endif +} + +void set_edge_coloring(uint8_t * edge_coloring, + const int edge_stride, + bool l_dot_n_b, int a, int b) +{ + int ma = min(a, b); + int mb = max(a, b); + + int bit = 1 << ((int)l_dot_n_b); + + edge_coloring[ma * edge_stride + mb] |= bit; +} + +struct edge { + int a; + int b; +}; + +static uint32_t random; + +uint32_t xorshift() +{ + uint32_t x = random; + x ^= x << 13; + x ^= x >> 17; + x ^= x << 5; + return random = x; +} + +static inline void render_extension_mesh(ta_parameter_writer& writer, + vec3 ap, + vec3 bp, + vec3 cp, + vec3 dp, + vec3 ep, + vec3 fp, + vec3 apo, + vec3 bpo, + vec3 cpo, + vec3 dpo, + vec3 epo, + vec3 fpo) +{ + render_tri_mod(writer, ap, bp, apo); + render_tri_mod(writer, bpo, apo, bp); + + render_tri_mod(writer, bp, cp, bpo); + render_tri_mod(writer, cpo, bpo, cp); + + render_tri_mod(writer, cp, dp, cpo); + render_tri_mod(writer, dpo, cpo, dp); + + render_tri_mod(writer, dp, ep, dpo); + render_tri_mod(writer, epo, dpo, ep); + + render_tri_mod(writer, ep, fp, epo); + render_tri_mod(writer, fpo, epo, fp); + + render_tri_mod(writer, fp, ap, fpo); + render_last_tri_mod(writer); + render_tri_mod(writer, apo, fpo, ap); + + /* + random = 0x12345789; + + render_quad(writer, xorshift(), ap, bp, bpo, apo); + + render_quad(writer, xorshift(), bp, cp, cpo, bpo); + + render_quad(writer, xorshift(), cp, dp, dpo, cpo); + + render_quad(writer, xorshift(), dp, ep, epo, dpo); + + render_quad(writer, xorshift(), ep, fp, fpo, epo); + + render_quad(writer, xorshift(), fp, ap, apo, fpo); + */ +} + +void render_silhouette(ta_parameter_writer& writer, + const mat4x4& screen, + const mat4x4& model, + const vec3 light_vec, + const uint8_t * edge_coloring, + const int edge_stride) +{ + struct edge silhouette[6]; + int ix = 0; + + for (int a = 0; a < edge_stride; a++) { + for (int b = 0; b < edge_stride; b++) { + uint8_t coloring = edge_coloring[a * edge_stride + b]; + if (coloring == 0b11) { + silhouette[ix++] = {a, b}; + } + } + } + assert(ix == 6); + + int last_ix = 0; + int order_ix = 0; + int order_vtx[6]; + order_vtx[order_ix++] = silhouette[0].a; + + // calculate vertex ordering + while (order_ix < 6) { + for (int i = 1; i < 6; i++) { + if (i == last_ix) + continue; + + int last_vtx = order_vtx[order_ix - 1]; + if (last_vtx == silhouette[i].a) { + last_ix = i; + order_vtx[order_ix++] = silhouette[i].b; + break; + } + if (last_vtx == silhouette[i].b) { + last_ix = i; + order_vtx[order_ix++] = silhouette[i].a; + break; + } + } + } + + const vec3 * position = cube_position; + + vec3 ap = screen_transform(screen, model * position[order_vtx[0]]); + vec3 bp = screen_transform(screen, model * position[order_vtx[1]]); + vec3 cp = screen_transform(screen, model * position[order_vtx[2]]); + vec3 dp = screen_transform(screen, model * position[order_vtx[3]]); + vec3 ep = screen_transform(screen, model * position[order_vtx[4]]); + vec3 fp = screen_transform(screen, model * position[order_vtx[5]]); + + float scale = 5; + mat4x4 translate = { + 1, 0, 0, -light_vec.x * scale, + 0, 1, 0, -light_vec.y * scale, + 0, 0, 1, -light_vec.z * scale, + 0, 0, 0, 1, + }; + + mat4x4 model2 = model * translate; + + vec3 apo = screen_transform(screen, model2 * position[order_vtx[0]]); + vec3 bpo = screen_transform(screen, model2 * position[order_vtx[1]]); + vec3 cpo = screen_transform(screen, model2 * position[order_vtx[2]]); + vec3 dpo = screen_transform(screen, model2 * position[order_vtx[3]]); + vec3 epo = screen_transform(screen, model2 * position[order_vtx[4]]); + vec3 fpo = screen_transform(screen, model2 * position[order_vtx[5]]); + + if (0) { // perimeter + uint32_t base_color = 0xff0080; + + transfer_line(writer, ap, bp, base_color); + transfer_line(writer, bp, cp, base_color); + transfer_line(writer, cp, dp, base_color); + transfer_line(writer, dp, ep, base_color); + transfer_line(writer, ep, fp, base_color); + transfer_line(writer, fp, ap, base_color); + } + + if (1) { // near end cap + render_tri_mod(writer, ap, bp, cp); + render_tri_mod(writer, cp, dp, ep); + render_tri_mod(writer, ep, fp, ap); + render_tri_mod(writer, ap, cp, ep); + } + + if (1) { // far end cap + render_tri_mod(writer, apo, bpo, cpo); + render_tri_mod(writer, cpo, dpo, epo); + render_tri_mod(writer, epo, fpo, apo); + render_tri_mod(writer, apo, cpo, epo); + } + + if (1) { + render_extension_mesh(writer, + ap, + bp, + cp, + dp, + ep, + fp, + apo, + bpo, + cpo, + dpo, + epo, + fpo); + } +} + +void render_cube(ta_parameter_writer& writer, + const mat4x4& screen, + const mat4x4& model, + const vec3 light_vec) +{ + const vec3 * normal = cube_normal; + const vec3 * position = cube_position; + const union quadrilateral * quadrilateral = cube_Cube_quadrilateral; + + const int edge_stride = 8; + const int edge_coloring_length = edge_stride * edge_stride; + uint8_t __attribute__((aligned(4))) edge_coloring[edge_coloring_length]; + for (int i = 0; i < edge_coloring_length / 4; i++) + reinterpret_cast(edge_coloring)[i] = 0; + + global_polygon_type_0(writer, false); // no self-shadow + + for (int i = 0; i < 6; i++) { + const union quadrilateral& q = quadrilateral[i]; + vec3 n3 = normal[q.a.normal]; + vec4 n4 = model * (vec4){n3.x, n3.y, n3.z, 0.f}; // no translation component + vec3 n = {n4.x, n4.y, n4.z}; + float l_dot_n = dot(light_vec, n); + bool l_dot_n_b = l_dot_n > 0; + + set_edge_coloring(edge_coloring, edge_stride, l_dot_n_b, q.a.position, q.b.position); + set_edge_coloring(edge_coloring, edge_stride, l_dot_n_b, q.b.position, q.c.position); + set_edge_coloring(edge_coloring, edge_stride, l_dot_n_b, q.c.position, q.d.position); + set_edge_coloring(edge_coloring, edge_stride, l_dot_n_b, q.d.position, q.a.position); + + vec3 ap = model * position[q.a.position]; + vec3 bp = model * position[q.b.position]; + vec3 cp = model * position[q.c.position]; + vec3 dp = model * position[q.d.position]; + + uint32_t base_color = l_dot_n_b ? 0xff8000 : 0x0080ff; + + vec3 sap = screen_transform(screen, ap); + vec3 sbp = screen_transform(screen, bp); + vec3 scp = screen_transform(screen, cp); + vec3 sdp = screen_transform(screen, dp); + + render_quad(writer, + base_color, + sap, + sbp, + scp, + sdp); + } + + if (1) { + // end of opaque list + writer.append() = + ta_global_parameter::end_of_list(para_control::para_type::end_of_list); + + global_modifier_volume(writer); + + render_silhouette(writer, + screen, + model, + light_vec, + edge_coloring, + edge_stride); + } +} + +void render_plane(ta_parameter_writer& writer, + const mat4x4& screen, + const vec3 light_vec) +{ + //const vec3 * normal = plane_normal; + const vec3 * position = plane_position; + const union quadrilateral * quadrilateral = plane_Plane.quadrilateral; + int count = plane_Plane.quadrilateral_count; + + float scale = 3; + const mat4x4 model = { + scale, 0, 0, 0, + 0, scale, 0, 0, + 0, 0, scale, 1, + 0, 0, 0, 1, + }; + + global_polygon_type_0(writer, true); // with shadow + + for (int i = 0; i < count; i++) { + const union quadrilateral& q = quadrilateral[i]; + + vec3 ap = model * position[q.a.position]; + vec3 bp = model * position[q.b.position]; + vec3 cp = model * position[q.c.position]; + vec3 dp = model * position[q.d.position]; + + uint32_t base_color = 0xffff80; + + vec3 sap = screen_transform(screen, ap); + vec3 sbp = screen_transform(screen, bp); + vec3 scp = screen_transform(screen, cp); + vec3 sdp = screen_transform(screen, dp); + + render_quad(writer, + base_color, + sap, + sbp, + scp, + sdp); + } +} + +constexpr inline mat4x4 screen_rotation() +{ + float zt = -0.7853981633974483 / 1.5; + float xt = -0.7853981633974483 * 1; + mat4x4 rx = { + 1, 0, 0, 0, + 0, cos(xt), -sin(xt), 0, + 0, sin(xt), cos(xt), 0, + 0, 0, 0, 1, + }; + + mat4x4 rz = { + cos(zt), -sin(zt), 0, 0, + sin(zt), cos(zt), 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1, + }; + + mat4x4 t = { + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 2.5, + 0, 0, 0, 1, + }; + + return t * rx * rz; +} + +void render_light_vec(ta_parameter_writer& writer, const mat4x4& screen, vec3 l) +{ + vec3 a = screen_transform(screen, {0, 0, 0}); + vec3 b = screen_transform(screen, l * 0.5f); + + transfer_line(writer, a, b, 0x00ff00); +} + +void transfer_scene(ta_parameter_writer& writer, const mat4x4& screen, vec3 light_vec) +{ + // opaque + render_basis(writer, screen); + + render_light_vec(writer, screen, light_vec); + + if (1) { + render_plane(writer, + screen, + light_vec); + } + + const mat4x4 model = mat4x4() * 0.3f; + render_cube(writer, + screen, + model, + light_vec); + + writer.append() = + ta_global_parameter::end_of_list(para_control::para_type::end_of_list); + + // punch_through + /* + render_basis_text(writer, screen); + + writer.append() = + ta_global_parameter::end_of_list(para_control::para_type::end_of_list); + */ +} + +vec3 update_light() +{ + static float ltheta = 2; + + vec3 light_origin = {0, 0, 0}; + vec3 light_pos = {1, 1, 2}; + + mat3x3 rot = { + cos(ltheta), -sin(ltheta), 0, + sin(ltheta), cos(ltheta), 0, + 0, 0, 1, + }; + + light_pos = rot * light_pos; + ltheta += deg / 8; + + vec3 light_vec = light_origin - light_pos; + + return light_vec; +} + +void transfer_ta_fifo_texture_memory_32byte(void * dst, void * src, int length) +{ + uint32_t out_addr = (uint32_t)dst; + sh7091.CCN.QACR0 = ((reinterpret_cast(out_addr) >> 24) & 0b11100); + sh7091.CCN.QACR1 = ((reinterpret_cast(out_addr) >> 24) & 0b11100); + + volatile uint32_t * base = &store_queue[(out_addr & 0x03ffffc0) / 4]; + uint32_t * src32 = reinterpret_cast(src); + + length = (length + 31) & ~31; // round up to nearest multiple of 32 + while (length > 0) { + base[0] = src32[0]; + base[1] = src32[1]; + base[2] = src32[2]; + base[3] = src32[3]; + base[4] = src32[4]; + base[5] = src32[5]; + base[6] = src32[6]; + base[7] = src32[7]; + asm volatile ("pref @%0" + : // output + : "r" (&base[0]) // input + : "memory"); + length -= 32; + base += 8; + src32 += 8; + } +} + +void transfer_textures() +{ + system.LMMODE0 = 0; // 64-bit address space + system.LMMODE1 = 0; // 64-bit address space + + uint32_t offset = texture_memory_alloc.texture.start; + void * dst = reinterpret_cast(&ta_fifo_texture_memory[offset / 4]); + void * src = reinterpret_cast(&_binary_font_terminus_ter_u32n_data_start); + uint32_t size = reinterpret_cast(&_binary_font_terminus_ter_u32n_data_size); + transfer_ta_fifo_texture_memory_32byte(dst, src, size); +} + +static inline uint16_t argb1555(int a, int r, int g, int b) +{ + return ((a & 1) << 15) | ((r & 31) << 10) | ((g & 31) << 5) | ((b & 31) << 0); +} + +void transfer_palette() +{ + holly.PAL_RAM_CTRL = pal_ram_ctrl::pixel_format::argb1555; + + holly.PALETTE_RAM[ 0 + 0] = argb1555(0, 0, 0, 0); + holly.PALETTE_RAM[ 0 + 1] = argb1555(1, 31, 31, 31); +} + +uint8_t __attribute__((aligned(32))) ta_parameter_buf[1024 * 1024]; + +void main() +{ + serial::init(0); + transfer_textures(); + transfer_palette(); + + constexpr uint32_t ta_alloc = 0 + //ta_alloc_ctrl::pt_opb::_16x4byte + | ta_alloc_ctrl::tm_opb::no_list + | ta_alloc_ctrl::t_opb::no_list + | ta_alloc_ctrl::om_opb::_16x4byte + | ta_alloc_ctrl::o_opb::_16x4byte; + + constexpr int render_passes = 1; + constexpr struct opb_size opb_size[render_passes] = { + { + .opaque = 16 * 4, + .opaque_modifier = 16 * 4, + .translucent = 0, + .translucent_modifier = 0, + //.punch_through = 16 * 4 + } + }; + + holly.SOFTRESET = softreset::pipeline_soft_reset + | softreset::ta_soft_reset; + holly.SOFTRESET = 0; + + core_init(); + holly.FPU_SHAD_SCALE = fpu_shad_scale::simple_shadow_enable::intensity_volume_mode; + video_output::set_mode_vga(); + + const int framebuffer_width = 640; + const int framebuffer_height = 480; + const int tile_width = framebuffer_width / 32; + const int tile_height = framebuffer_height / 32; + + for (int i = 0; i < 2; i++) { + region_array_multipass(tile_width, + tile_height, + opb_size, + render_passes, + texture_memory_alloc.region_array[i].start, + texture_memory_alloc.object_list[i].start); + + background_parameter2(texture_memory_alloc.background[i].start, + 0xff202040); + } + + ta_parameter_writer writer = ta_parameter_writer(ta_parameter_buf); + + int ta = 0; + int core = 0; + + const float degree = 0.017453292519943295 / 5; + float theta = 0; + + const mat4x4 screen = screen_rotation(); + + while (1) { + vec3 light_vec = update_light(); + + ta_polygon_converter_init2(texture_memory_alloc.isp_tsp_parameters[ta].start, + texture_memory_alloc.isp_tsp_parameters[ta].end, + texture_memory_alloc.object_list[ta].start, + texture_memory_alloc.object_list[ta].end, + opb_size[0].total(), + ta_alloc, + tile_width, + tile_height); + writer.offset = 0; + transfer_scene(writer, screen, light_vec); + ta_polygon_converter_writeback(writer.buf, writer.offset); + ta_polygon_converter_transfer(writer.buf, writer.offset); + ta_wait_opaque_modifier_volume_list(); + + core_start_render2(texture_memory_alloc.region_array[core].start, + texture_memory_alloc.isp_tsp_parameters[core].start, + texture_memory_alloc.background[core].start, + texture_memory_alloc.framebuffer[core].start, + framebuffer_width); + core_wait_end_of_render_video(); + + holly.FB_R_SOF1 = texture_memory_alloc.framebuffer[ta].start; + + theta += degree; + } +} diff --git a/font/terminus/ter_u32n.data b/font/terminus/ter_u32n.data new file mode 100644 index 0000000000000000000000000000000000000000..869cd014eae88c6e26a96c55bc2c01505ce51c18 GIT binary patch literal 24576 zcmeHPftKSq3he%a?*ISUqd+A}2-$IGX6I(_vikypq5w&jopg3TKK}o@n1S!s_x%xe zN(ViFwxnYG{`efD6X^s$fXDL!(`m|Mv9>2aIFMBo5EYSLkQuR#jQ4pSb3O19o0M29 zY!^%!W7F#zs6HKn4QC+a(U*?1szBI&`u^}b?9E@y66N?x(PSafk+NUtD7c+LRPmIsMpl(%c74X=a*|yjTj|6e8RyPM#H`? z(bcKv(eR-v+0W#)t^fKlSJT{%eI2X`obNFwpWn6(mh1mWf*8EMK0Thrk9&m;Svb1= z{PgSCZUjfZ#bH~-8n+aN$F)7V7SyjA%=?>VGTkQNo;e`4{A2zYF}Y^V@SuL1Z3Yp1 zl)S&O5cYoz_`4izORL8D)9j88YI{N>-_~=@;#$!09XYUyPhHo{*T3oR#9r~rb&C0m z?EUh!*4Fro*MFP2npDP9#o31wa0_k>0B!i!LL0W{CflQYA!}szg3JtAwq}bD265TJ zk7qPQ;~joV)!jC52$?TQnpK5YTrhYv6!PET0lj$b=es?i+8t+}&$6hZ3S$cuf2&>u z)qXCZPF?YBzBJ0DXC&v+&zi&*E%D(Hs<}wMJY4^2O(M>>KU&OZ05J2lWwA|FHzl!< z6|Y>18@d#ok(OfCIu+Y%>v^8|;1Vhi^79{4dF&rIHay2fwi+L-HH)uF&d+=%%RDg$ z>{aTg>4{`f^Lj49^qV>Q{)pekLJPI}GnMjZ zQ2O_-2a*9CGE87n&1aejn0+5wLX9<*E{-yrXE1GqOPew z`T2L$vp%0?!F+y$C5{T5PjYA^R5ZDM?OPIz_#KmgZd8q{(3QV>UmwSn8~AeF-I7$i za>c!o6ctJPNml&Ie2VJr_cIl%qqv?at+|%5M)ZW8qg}=xgMHssieC5P-ConkMwdf9 z=auJwJfAjEZc2P0geuPW@ys0S<2Sk!75{i+8>5AY6}P6K7o!CARsk&PGSe1n#%wEw5AMijG^loR@oo_;PYSB*H>2iCn}z9HM*bQQ~ch)aLpk9F2NjizGN#(7*(Cw zjO^=U3?=Y*#@}DEK5=;)gq%QAr>qQpRTYJCY%plX1>ybgGw!bDte8?J(%`@h(&Ao~X|$`}Cen!XW2slKC5Fr@-ZRfJF~6gp;m zud1Sc$+%XQnOU4kQMaUAyKvO&C#>F2ZD^9>F)*A{qKflHTWSFN{$gE}hWPRK-(4x> zg|rIn*9@bM0q(0}oiR^KoV(8R$H-mwnY=0kQ|@u^S;$LS*|aL?I zxfmCAaw3X4rG6h8e!TZDV_U8la!}T&T2=AOMFZqoD>%FBH#ia>W1*5D)

{b;|2_ zRu!o7{tNH_*$?ZYEIG$8@nLBD-|7RFypWY8{K440SG-Jh2fwpP(a9WDMV)8<#77dL zk|5<`F`W&!7<)zJ5`S8Mk4|Ci9Rv)m+ zZ!Gq0(WqloJw{754(w-zew88)+H6#NOrv8N+ej%IStB#+!Fiul`2I4V;RCCc3Y7=( z`IpcCdv^a~->`wG@qy2(V(ibqzT!T9^ZO62zh;tpaU;ZwG6r+Le8{=$paD3)lb5n0 zv)@_53((5ajJ5xC=lb{lM5@+fJFd<)uKys+P3N=PGdpy!hd0_`c67gSjj`I)Z&)9@CEs1_tl_F2 z;S=?S`WMZ#7s%pX&weUytLldT+4^hNSO5MVG5^HxFSNSPGjL!vjR@#3lYX@J9 z?`9%CcO+i9x>&pW{OI>L9oN6iCYSGa9p1D$@bh+s&#D;`zq`PhZ;uL}vAXeC=a?B4 zci1J;c0%BTjrWa|5yM;>OIym`n_TIKmZM}iX#+ny(f&Jr<*lESb zm>ki1mZRt(7f%2&Tb#_=sx7M9)d9;+G$#bf@a#j3V)rsX` zf7JiVG3uC|ocBK~mZh9g`}JQf>>u|CR6sUX!;h65Ka$-2c;<-fpBAIR83rp~j(YbDc12F*B3_YS#Y?-;KsBGR2{hjq_YdL(*zRH38ww3P*# zD#4WLu_anpi4aPKLic&E#@{z)yU3hbphn$uQBL({(4qyI@19VNDEB|fOp2NWX2iAP z_v}&E+=z*S7UXVQ)RFYSzj7Q#`FRR}{|Egy_y7BOkE6qJ+y}8% zY-AQd!vp!})}Ouje|vvAmC(s=?H}x%t{;B>WB9y2Vc@({2IxoYzj4*;lsT;a$6JB1 zUZ2nO>lAw((Iwu=3)wN|tY^$0(cWMG*`7VhPu=<(`j>rZ<4nD}{>0mi`2RE`;&M*k zx&GIg=Lp=9m6rR}2>d+`h+t2-Ma`L0kIa{tYu?u@7LuW|uHEz8qFmG|gH8I8errE9 zGdWVO>;GQ=^NG~bN`1A6^LPeXec9DKRjpRv|F)Gc{=T~PU}W>}t0nh_E&eA%&gqkw z6IQvXQ^rG`O%)&Na;E0#Kwd(I{H^ytTQXg#xt6TuUdH#_z*(=-6(jA-Z_9uWK=$wa zvDMWYdc(#PargCIaj}Y%oa=J}Jg_Slb;_WT>E%rQ_V0hL8_>CfuH);-z+zR2vtHR1 zO(yA&&&ot-o|;$pi4aY-;+1QH&WbF8gM1w8`obZnU{x3$7eGBhv!mpoP+Tl6OH;)dT1$o7$Dx^#1o}cFF{9KDQ~wswcGm zUUbDRBYOz+F|U_em8?GwOy4sjWa0Vc174qYrQ+|Dk4}Jff8y$4d3F>?M`m3|gtgLG x?Ee^=@jNqH@U1axiW4gWvOe{9Wa?Kvu^ktYIwu*Sm8`mAsCQhn0i!y`{{h4}>%ag2 literal 0 HcmV?d00001 diff --git a/font/terminus/ter_u32n.data.h b/font/terminus/ter_u32n.data.h new file mode 100644 index 0000000..ef3d461 --- /dev/null +++ b/font/terminus/ter_u32n.data.h @@ -0,0 +1,15 @@ +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern uint32_t _binary_font_terminus_ter_u32n_data_start __asm("_binary_font_terminus_ter_u32n_data_start"); +extern uint32_t _binary_font_terminus_ter_u32n_data_end __asm("_binary_font_terminus_ter_u32n_data_end"); +extern uint32_t _binary_font_terminus_ter_u32n_data_size __asm("_binary_font_terminus_ter_u32n_data_size"); + +#ifdef __cplusplus +} +#endif diff --git a/math/mat4x4.hpp b/math/mat4x4.hpp index ca8a989..4fa3eca 100644 --- a/math/mat4x4.hpp +++ b/math/mat4x4.hpp @@ -80,6 +80,18 @@ mat<4, 4, T>::operator[](int i) const } } +template +inline constexpr mat<4, 4, T> operator+(mat<4, 4, T> const& m1, mat<4, 4, T> const& m2) +{ +#define c(i, j) ( m1[i][j] + m2[i][j] ) + + return mat<4, 4, T>(c(0,0), c(0,1), c(0,2), c(0,3), + c(1,0), c(1,1), c(1,2), c(1,3), + c(2,0), c(2,1), c(2,2), c(2,3), + c(3,0), c(3,1), c(3,2), c(3,3)); +#undef c +} + template inline constexpr mat<4, 4, T> operator*(mat<4, 4, T> const& m1, mat<4, 4, T> const& m2) { @@ -96,6 +108,18 @@ inline constexpr mat<4, 4, T> operator*(mat<4, 4, T> const& m1, mat<4, 4, T> con #undef c } +template +inline constexpr mat<4, 4, T> operator*(mat<4, 4, T> const& m1, float s) +{ +#define c(i, j) ( m1[i][j] * s ) + + return mat<4, 4, T>(c(0,0), c(0,1), c(0,2), c(0,3), + c(1,0), c(1,1), c(1,2), c(1,3), + c(2,0), c(2,1), c(2,2), c(2,3), + c(3,0), c(3,1), c(3,2), c(3,3)); +#undef c +} + template inline constexpr typename mat<4, 4, T>::row_type operator* ( @@ -113,6 +137,23 @@ inline constexpr typename mat<4, 4, T>::row_type operator* #undef c } +template +inline constexpr vec<3, T> operator* +( + mat<4, 4, T> const& m, + vec<3, T> const& v +) +{ +#define c(i) ( \ + m[i][0] * v[0] \ + + m[i][1] * v[1] \ + + m[i][2] * v[2] \ + + m[i][3] ) + + return vec<3, T>(c(0), c(1), c(2)); +#undef c +} + template inline constexpr mat<4, 4, T> transpose(mat<4, 4, T> const& m) { diff --git a/model/cube/model.h b/model/cube/model.h new file mode 100644 index 0000000..de44714 --- /dev/null +++ b/model/cube/model.h @@ -0,0 +1,104 @@ +#pragma once + +#include + +#include "model.h" + +// floating-point +const vertex_position cube_position[] = { + {1.0, 1.0, -1.0}, + {1.0, -1.0, -1.0}, + {1.0, 1.0, 1.0}, + {1.0, -1.0, 1.0}, + {-1.0, 1.0, -1.0}, + {-1.0, -1.0, -1.0}, + {-1.0, 1.0, 1.0}, + {-1.0, -1.0, 1.0}, +}; + +// floating-point +const vertex_texture cube_texture[] = { + {0.625, 0.5}, + {0.875, 0.5}, + {0.875, 0.75}, + {0.625, 0.75}, + {0.375, 0.75}, + {0.625, 1.0}, + {0.375, 1.0}, + {0.375, 0.0}, + {0.625, 0.0}, + {0.625, 0.25}, + {0.375, 0.25}, + {0.125, 0.5}, + {0.375, 0.5}, + {0.125, 0.75}, +}; + +// floating-point +const vertex_normal cube_normal[] = { + {0.0, 1.0, 0.0}, + {0.0, 0.0, 1.0}, + {-1.0, 0.0, 0.0}, + {0.0, -1.0, 0.0}, + {1.0, 0.0, 0.0}, + {0.0, 0.0, -1.0}, +}; + +const union quadrilateral cube_Cube_quadrilateral[] = { + { .v = { + {0, 0, 0}, + {4, 1, 0}, + {6, 2, 0}, + {2, 3, 0}, + }}, + { .v = { + {3, 4, 1}, + {2, 3, 1}, + {6, 5, 1}, + {7, 6, 1}, + }}, + { .v = { + {7, 7, 2}, + {6, 8, 2}, + {4, 9, 2}, + {5, 10, 2}, + }}, + { .v = { + {5, 11, 3}, + {1, 12, 3}, + {3, 4, 3}, + {7, 13, 3}, + }}, + { .v = { + {1, 12, 4}, + {0, 0, 4}, + {2, 3, 4}, + {3, 4, 4}, + }}, + { .v = { + {5, 10, 5}, + {4, 9, 5}, + {0, 0, 5}, + {1, 12, 5}, + }}, +}; + +const struct object cube_Cube = { + .triangle = NULL, + .quadrilateral = &cube_Cube_quadrilateral[0], + .triangle_count = 0, + .quadrilateral_count = 6, + .material = -1, +}; + +const struct object * cube_object_list[] = { + &cube_Cube, +}; + +const struct model cube_model = { + .position = &cube_position[0], + .texture = &cube_texture[0], + .normal = &cube_normal[0], + .object = &cube_object_list[0], + .object_count = 1, +}; diff --git a/model/plane/model.h b/model/plane/model.h new file mode 100644 index 0000000..e56df6a --- /dev/null +++ b/model/plane/model.h @@ -0,0 +1,2411 @@ +#pragma once + +#include + +#include "../model.h" + +// floating-point +vertex_position plane_position[] = { + {-1.0, 1.0, 0.5}, + {-1.0, -1.0, 0.5}, + {1.0, 1.0, 0.5}, + {1.0, -1.0, 0.5}, + {0.875, 1.0, 0.572594}, + {0.75, 1.0, 0.562882}, + {0.625, 1.0, 0.573245}, + {0.5, 1.0, 0.570143}, + {0.375, 1.0, 0.533738}, + {0.25, 1.0, 0.521783}, + {0.125, 1.0, 0.483391}, + {0.0, 1.0, 0.5}, + {-0.125, 1.0, 0.5275}, + {-0.25, 1.0, 0.513289}, + {-0.375, 1.0, 0.462632}, + {-0.5, 1.0, 0.429857}, + {-0.625, 1.0, 0.430386}, + {-0.75, 1.0, 0.402047}, + {-0.875, 1.0, 0.416515}, + {-1.0, 0.875, 0.467632}, + {-1.0, 0.75, 0.443146}, + {-1.0, 0.625, 0.455371}, + {-1.0, 0.5, 0.429857}, + {-1.0, 0.375, 0.448538}, + {-1.0, 0.25, 0.507261}, + {-1.0, 0.125, 0.52536}, + {-1.0, 0.0, 0.5}, + {-1.0, -0.125, 0.489473}, + {-1.0, -0.25, 0.549593}, + {-1.0, -0.375, 0.631163}, + {-1.0, -0.5, 0.640286}, + {-1.0, -0.625, 0.600338}, + {-1.0, -0.75, 0.619736}, + {-1.0, -0.875, 0.56989}, + {-0.875, -1.0, 0.493045}, + {-0.75, -1.0, 0.478217}, + {-0.625, -1.0, 0.489826}, + {-0.5, -1.0, 0.429857}, + {-0.375, -1.0, 0.36812}, + {-0.25, -1.0, 0.437118}, + {-0.125, -1.0, 0.503577}, + {0.0, -1.0, 0.5}, + {0.125, -1.0, 0.496117}, + {0.25, -1.0, 0.514522}, + {0.375, -1.0, 0.582186}, + {0.5, -1.0, 0.640286}, + {0.625, -1.0, 0.645068}, + {0.75, -1.0, 0.584665}, + {0.875, -1.0, 0.500364}, + {1.0, -0.875, 0.511765}, + {1.0, -0.75, 0.529044}, + {1.0, -0.625, 0.531869}, + {1.0, -0.5, 0.5}, + {1.0, -0.375, 0.468131}, + {1.0, -0.25, 0.470956}, + {1.0, -0.125, 0.488235}, + {1.0, 0.0, 0.5}, + {1.0, 0.125, 0.514468}, + {1.0, 0.25, 0.472189}, + {1.0, 0.375, 0.434633}, + {1.0, 0.5, 0.429857}, + {1.0, 0.625, 0.405778}, + {1.0, 0.75, 0.443146}, + {1.0, 0.875, 0.49969}, + {-0.875, 0.875, 0.41664}, + {-0.875, 0.75, 0.39167}, + {-0.875, 0.625, 0.371579}, + {-0.875, 0.5, 0.361486}, + {-0.875, 0.375, 0.393825}, + {-0.875, 0.25, 0.451033}, + {-0.875, 0.125, 0.475818}, + {-0.875, 0.0, 0.458541}, + {-0.875, -0.125, 0.46091}, + {-0.875, -0.25, 0.525519}, + {-0.875, -0.375, 0.5846}, + {-0.875, -0.5, 0.581568}, + {-0.875, -0.625, 0.593727}, + {-0.875, -0.75, 0.607657}, + {-0.875, -0.875, 0.541674}, + {-0.75, 0.875, 0.433877}, + {-0.75, 0.75, 0.408819}, + {-0.75, 0.625, 0.376302}, + {-0.75, 0.5, 0.392388}, + {-0.75, 0.375, 0.401627}, + {-0.75, 0.25, 0.402528}, + {-0.75, 0.125, 0.419563}, + {-0.75, 0.0, 0.423829}, + {-0.75, -0.125, 0.43885}, + {-0.75, -0.25, 0.499474}, + {-0.75, -0.375, 0.569034}, + {-0.75, -0.5, 0.587062}, + {-0.75, -0.625, 0.615338}, + {-0.75, -0.75, 0.58068}, + {-0.75, -0.875, 0.494899}, + {-0.625, 0.875, 0.441811}, + {-0.625, 0.75, 0.427823}, + {-0.625, 0.625, 0.438068}, + {-0.625, 0.5, 0.471957}, + {-0.625, 0.375, 0.435283}, + {-0.625, 0.25, 0.380262}, + {-0.625, 0.125, 0.406204}, + {-0.625, 0.0, 0.44056}, + {-0.625, -0.125, 0.470032}, + {-0.625, -0.25, 0.516197}, + {-0.625, -0.375, 0.556547}, + {-0.625, -0.5, 0.564795}, + {-0.625, -0.625, 0.567675}, + {-0.625, -0.75, 0.518446}, + {-0.625, -0.875, 0.468933}, + {-0.5, 0.875, 0.460172}, + {-0.5, 0.75, 0.492739}, + {-0.5, 0.625, 0.474052}, + {-0.5, 0.5, 0.464929}, + {-0.5, 0.375, 0.455805}, + {-0.5, 0.25, 0.437118}, + {-0.5, 0.125, 0.469685}, + {-0.5, 0.0, 0.5}, + {-0.5, -0.125, 0.519142}, + {-0.5, -0.25, 0.52418}, + {-0.5, -0.375, 0.515811}, + {-0.5, -0.5, 0.5}, + {-0.5, -0.625, 0.504732}, + {-0.5, -0.75, 0.483081}, + {-0.5, -0.875, 0.426309}, + {-0.375, 0.875, 0.500564}, + {-0.375, 0.75, 0.511306}, + {-0.375, 0.625, 0.493172}, + {-0.375, 0.5, 0.461537}, + {-0.375, 0.375, 0.453495}, + {-0.375, 0.25, 0.487146}, + {-0.375, 0.125, 0.523389}, + {-0.375, 0.0, 0.53526}, + {-0.375, -0.125, 0.580528}, + {-0.375, -0.25, 0.5477}, + {-0.375, -0.375, 0.46301}, + {-0.375, -0.5, 0.449734}, + {-0.375, -0.625, 0.467629}, + {-0.375, -0.75, 0.456405}, + {-0.375, -0.875, 0.382664}, + {-0.25, 0.875, 0.54421}, + {-0.25, 0.75, 0.521309}, + {-0.25, 0.625, 0.524437}, + {-0.25, 0.5, 0.495137}, + {-0.25, 0.375, 0.4733}, + {-0.25, 0.25, 0.530073}, + {-0.25, 0.125, 0.587212}, + {-0.25, 0.0, 0.611242}, + {-0.25, -0.125, 0.637214}, + {-0.25, -0.25, 0.537108}, + {-0.25, -0.375, 0.402307}, + {-0.25, -0.5, 0.405677}, + {-0.25, -0.625, 0.427795}, + {-0.25, -0.75, 0.417809}, + {-0.25, -0.875, 0.401556}, + {-0.125, 0.875, 0.539032}, + {-0.125, 0.75, 0.527898}, + {-0.125, 0.625, 0.535597}, + {-0.125, 0.5, 0.521336}, + {-0.125, 0.375, 0.498451}, + {-0.125, 0.25, 0.526253}, + {-0.125, 0.125, 0.562764}, + {-0.125, 0.0, 0.5729}, + {-0.125, -0.125, 0.583635}, + {-0.125, -0.25, 0.501942}, + {-0.125, -0.375, 0.397401}, + {-0.125, -0.5, 0.402838}, + {-0.125, -0.625, 0.407866}, + {-0.125, -0.75, 0.416544}, + {-0.125, -0.875, 0.443849}, + {0.0, 0.875, 0.506081}, + {0.0, 0.75, 0.527811}, + {0.0, 0.625, 0.562353}, + {0.0, 0.5, 0.570143}, + {0.0, 0.375, 0.533738}, + {0.0, 0.25, 0.521783}, + {0.0, 0.125, 0.518463}, + {0.0, 0.0, 0.5}, + {0.0, -0.125, 0.516609}, + {0.0, -0.25, 0.478217}, + {0.0, -0.375, 0.413655}, + {0.0, -0.5, 0.429857}, + {0.0, -0.625, 0.437647}, + {0.0, -0.75, 0.472189}, + {0.0, -0.875, 0.476383}, + {0.125, 0.875, 0.504452}, + {0.125, 0.75, 0.529635}, + {0.125, 0.625, 0.561284}, + {0.125, 0.5, 0.588722}, + {0.125, 0.375, 0.574986}, + {0.125, 0.25, 0.523249}, + {0.125, 0.125, 0.460527}, + {0.125, 0.0, 0.43011}, + {0.125, -0.125, 0.427717}, + {0.125, -0.25, 0.408221}, + {0.125, -0.375, 0.418387}, + {0.125, -0.5, 0.448519}, + {0.125, -0.625, 0.477629}, + {0.125, -0.75, 0.499398}, + {0.125, -0.875, 0.466943}, + {0.25, 0.875, 0.555431}, + {0.25, 0.75, 0.547346}, + {0.25, 0.625, 0.512325}, + {0.25, 0.5, 0.52418}, + {0.25, 0.375, 0.525347}, + {0.25, 0.25, 0.456909}, + {0.25, 0.125, 0.396455}, + {0.25, 0.0, 0.380264}, + {0.25, -0.125, 0.357817}, + {0.25, -0.25, 0.364983}, + {0.25, -0.375, 0.42157}, + {0.25, -0.5, 0.437118}, + {0.25, -0.625, 0.490981}, + {0.25, -0.75, 0.506509}, + {0.25, -0.875, 0.460784}, + {0.375, 0.875, 0.611771}, + {0.375, 0.75, 0.601397}, + {0.375, 0.625, 0.504728}, + {0.375, 0.5, 0.490392}, + {0.375, 0.375, 0.466318}, + {0.375, 0.25, 0.403939}, + {0.375, 0.125, 0.395547}, + {0.375, 0.0, 0.399662}, + {0.375, -0.125, 0.365752}, + {0.375, -0.25, 0.363528}, + {0.375, -0.375, 0.410612}, + {0.375, -0.5, 0.431625}, + {0.375, -0.625, 0.49376}, + {0.375, -0.75, 0.538221}, + {0.375, -0.875, 0.542502}, + {0.5, 0.875, 0.620134}, + {0.5, 0.75, 0.56891}, + {0.5, 0.625, 0.47061}, + {0.5, 0.5, 0.464929}, + {0.5, 0.375, 0.463494}, + {0.5, 0.25, 0.43109}, + {0.5, 0.125, 0.390141}, + {0.5, 0.0, 0.359714}, + {0.5, -0.125, 0.335199}, + {0.5, -0.25, 0.328273}, + {0.5, -0.375, 0.402003}, + {0.5, -0.5, 0.464929}, + {0.5, -0.625, 0.524847}, + {0.5, -0.75, 0.594323}, + {0.5, -0.875, 0.631671}, + {0.625, 0.875, 0.587317}, + {0.625, 0.75, 0.535827}, + {0.625, 0.625, 0.468686}, + {0.625, 0.5, 0.464885}, + {0.625, 0.375, 0.462655}, + {0.625, 0.25, 0.428025}, + {0.625, 0.125, 0.37081}, + {0.625, 0.0, 0.329519}, + {0.625, -0.125, 0.312255}, + {0.625, -0.25, 0.344021}, + {0.625, -0.375, 0.424111}, + {0.625, -0.5, 0.469805}, + {0.625, -0.625, 0.539633}, + {0.625, -0.75, 0.630247}, + {0.625, -0.875, 0.655381}, + {0.75, 0.875, 0.555107}, + {0.75, 0.75, 0.517054}, + {0.75, 0.625, 0.45365}, + {0.75, 0.5, 0.433488}, + {0.75, 0.375, 0.433089}, + {0.75, 0.25, 0.411562}, + {0.75, 0.125, 0.392621}, + {0.75, 0.0, 0.380264}, + {0.75, -0.125, 0.332574}, + {0.75, -0.25, 0.362239}, + {0.75, -0.375, 0.439709}, + {0.75, -0.5, 0.457668}, + {0.75, -0.625, 0.492979}, + {0.75, -0.75, 0.558854}, + {0.75, -0.875, 0.591488}, + {0.875, 0.875, 0.537785}, + {0.875, 0.75, 0.457556}, + {0.875, 0.625, 0.396143}, + {0.875, 0.5, 0.392053}, + {0.875, 0.375, 0.408606}, + {0.875, 0.25, 0.437822}, + {0.875, 0.125, 0.466157}, + {0.875, 0.0, 0.465181}, + {0.875, -0.125, 0.419025}, + {0.875, -0.25, 0.408017}, + {0.875, -0.375, 0.444483}, + {0.875, -0.5, 0.467433}, + {0.875, -0.625, 0.499404}, + {0.875, -0.75, 0.529557}, + {0.875, -0.875, 0.523985}, +}; + +// floating-point +vertex_texture plane_texture[] = { + {0.0625, 0.0625}, + {0.125, 0.0625}, + {0.125, 0.125}, + {0.0625, 0.125}, + {0.1875, 0.0625}, + {0.1875, 0.125}, + {0.25, 0.0625}, + {0.25, 0.125}, + {0.3125, 0.0625}, + {0.3125, 0.125}, + {0.375, 0.0625}, + {0.375, 0.125}, + {0.4375, 0.0625}, + {0.4375, 0.125}, + {0.5, 0.0625}, + {0.5, 0.125}, + {0.5625, 0.0625}, + {0.5625, 0.125}, + {0.625, 0.0625}, + {0.625, 0.125}, + {0.6875, 0.0625}, + {0.6875, 0.125}, + {0.75, 0.0625}, + {0.75, 0.125}, + {0.8125, 0.0625}, + {0.8125, 0.125}, + {0.875, 0.0625}, + {0.875, 0.125}, + {0.9375, 0.0625}, + {0.9375, 0.125}, + {0.125, 0.1875}, + {0.0625, 0.1875}, + {0.1875, 0.1875}, + {0.25, 0.1875}, + {0.3125, 0.1875}, + {0.375, 0.1875}, + {0.4375, 0.1875}, + {0.5, 0.1875}, + {0.5625, 0.1875}, + {0.625, 0.1875}, + {0.6875, 0.1875}, + {0.75, 0.1875}, + {0.8125, 0.1875}, + {0.875, 0.1875}, + {0.9375, 0.1875}, + {0.125, 0.25}, + {0.0625, 0.25}, + {0.1875, 0.25}, + {0.25, 0.25}, + {0.3125, 0.25}, + {0.375, 0.25}, + {0.4375, 0.25}, + {0.5, 0.25}, + {0.5625, 0.25}, + {0.625, 0.25}, + {0.6875, 0.25}, + {0.75, 0.25}, + {0.8125, 0.25}, + {0.875, 0.25}, + {0.9375, 0.25}, + {0.125, 0.3125}, + {0.0625, 0.3125}, + {0.1875, 0.3125}, + {0.25, 0.3125}, + {0.3125, 0.3125}, + {0.375, 0.3125}, + {0.4375, 0.3125}, + {0.5, 0.3125}, + {0.5625, 0.3125}, + {0.625, 0.3125}, + {0.6875, 0.3125}, + {0.75, 0.3125}, + {0.8125, 0.3125}, + {0.875, 0.3125}, + {0.9375, 0.3125}, + {0.125, 0.375}, + {0.0625, 0.375}, + {0.1875, 0.375}, + {0.25, 0.375}, + {0.3125, 0.375}, + {0.375, 0.375}, + {0.4375, 0.375}, + {0.5, 0.375}, + {0.5625, 0.375}, + {0.625, 0.375}, + {0.6875, 0.375}, + {0.75, 0.375}, + {0.8125, 0.375}, + {0.875, 0.375}, + {0.9375, 0.375}, + {0.125, 0.4375}, + {0.0625, 0.4375}, + {0.1875, 0.4375}, + {0.25, 0.4375}, + {0.3125, 0.4375}, + {0.375, 0.4375}, + {0.4375, 0.4375}, + {0.5, 0.4375}, + {0.5625, 0.4375}, + {0.625, 0.4375}, + {0.6875, 0.4375}, + {0.75, 0.4375}, + {0.8125, 0.4375}, + {0.875, 0.4375}, + {0.9375, 0.4375}, + {0.125, 0.5}, + {0.0625, 0.5}, + {0.1875, 0.5}, + {0.25, 0.5}, + {0.3125, 0.5}, + {0.375, 0.5}, + {0.4375, 0.5}, + {0.5, 0.5}, + {0.5625, 0.5}, + {0.625, 0.5}, + {0.6875, 0.5}, + {0.75, 0.5}, + {0.8125, 0.5}, + {0.875, 0.5}, + {0.9375, 0.5}, + {0.125, 0.5625}, + {0.0625, 0.5625}, + {0.1875, 0.5625}, + {0.25, 0.5625}, + {0.3125, 0.5625}, + {0.375, 0.5625}, + {0.4375, 0.5625}, + {0.5, 0.5625}, + {0.5625, 0.5625}, + {0.625, 0.5625}, + {0.6875, 0.5625}, + {0.75, 0.5625}, + {0.8125, 0.5625}, + {0.875, 0.5625}, + {0.9375, 0.5625}, + {0.125, 0.625}, + {0.0625, 0.625}, + {0.1875, 0.625}, + {0.25, 0.625}, + {0.3125, 0.625}, + {0.375, 0.625}, + {0.4375, 0.625}, + {0.5, 0.625}, + {0.5625, 0.625}, + {0.625, 0.625}, + {0.6875, 0.625}, + {0.75, 0.625}, + {0.8125, 0.625}, + {0.875, 0.625}, + {0.9375, 0.625}, + {0.125, 0.6875}, + {0.0625, 0.6875}, + {0.1875, 0.6875}, + {0.25, 0.6875}, + {0.3125, 0.6875}, + {0.375, 0.6875}, + {0.4375, 0.6875}, + {0.5, 0.6875}, + {0.5625, 0.6875}, + {0.625, 0.6875}, + {0.6875, 0.6875}, + {0.75, 0.6875}, + {0.8125, 0.6875}, + {0.875, 0.6875}, + {0.9375, 0.6875}, + {0.125, 0.75}, + {0.0625, 0.75}, + {0.1875, 0.75}, + {0.25, 0.75}, + {0.3125, 0.75}, + {0.375, 0.75}, + {0.4375, 0.75}, + {0.5, 0.75}, + {0.5625, 0.75}, + {0.625, 0.75}, + {0.6875, 0.75}, + {0.75, 0.75}, + {0.8125, 0.75}, + {0.875, 0.75}, + {0.9375, 0.75}, + {0.125, 0.8125}, + {0.0625, 0.8125}, + {0.1875, 0.8125}, + {0.25, 0.8125}, + {0.3125, 0.8125}, + {0.375, 0.8125}, + {0.4375, 0.8125}, + {0.5, 0.8125}, + {0.5625, 0.8125}, + {0.625, 0.8125}, + {0.6875, 0.8125}, + {0.75, 0.8125}, + {0.8125, 0.8125}, + {0.875, 0.8125}, + {0.9375, 0.8125}, + {0.125, 0.875}, + {0.0625, 0.875}, + {0.1875, 0.875}, + {0.25, 0.875}, + {0.3125, 0.875}, + {0.375, 0.875}, + {0.4375, 0.875}, + {0.5, 0.875}, + {0.5625, 0.875}, + {0.625, 0.875}, + {0.6875, 0.875}, + {0.75, 0.875}, + {0.8125, 0.875}, + {0.875, 0.875}, + {0.9375, 0.875}, + {0.125, 0.9375}, + {0.0625, 0.9375}, + {0.1875, 0.9375}, + {0.25, 0.9375}, + {0.3125, 0.9375}, + {0.375, 0.9375}, + {0.4375, 0.9375}, + {0.5, 0.9375}, + {0.5625, 0.9375}, + {0.625, 0.9375}, + {0.6875, 0.9375}, + {0.75, 0.9375}, + {0.8125, 0.9375}, + {0.875, 0.9375}, + {0.9375, 0.9375}, + {0.0, 0.0}, + {0.0625, 0.0}, + {0.0, 0.0625}, + {0.125, 0.0}, + {0.1875, 0.0}, + {0.25, 0.0}, + {0.3125, 0.0}, + {0.375, 0.0}, + {0.4375, 0.0}, + {0.5, 0.0}, + {0.5625, 0.0}, + {0.625, 0.0}, + {0.6875, 0.0}, + {0.75, 0.0}, + {0.8125, 0.0}, + {0.875, 0.0}, + {0.9375, 0.0}, + {1.0, 0.0}, + {1.0, 0.0625}, + {1.0, 0.125}, + {1.0, 0.1875}, + {1.0, 0.25}, + {1.0, 0.3125}, + {1.0, 0.375}, + {1.0, 0.4375}, + {1.0, 0.5}, + {1.0, 0.5625}, + {1.0, 0.625}, + {1.0, 0.6875}, + {1.0, 0.75}, + {1.0, 0.8125}, + {1.0, 0.875}, + {1.0, 0.9375}, + {1.0, 1.0}, + {0.9375, 1.0}, + {0.875, 1.0}, + {0.8125, 1.0}, + {0.75, 1.0}, + {0.6875, 1.0}, + {0.625, 1.0}, + {0.5625, 1.0}, + {0.5, 1.0}, + {0.4375, 1.0}, + {0.375, 1.0}, + {0.3125, 1.0}, + {0.25, 1.0}, + {0.1875, 1.0}, + {0.125, 1.0}, + {0.0625, 1.0}, + {0.0, 0.9375}, + {0.0, 1.0}, + {0.0, 0.875}, + {0.0, 0.8125}, + {0.0, 0.75}, + {0.0, 0.6875}, + {0.0, 0.625}, + {0.0, 0.5625}, + {0.0, 0.5}, + {0.0, 0.4375}, + {0.0, 0.375}, + {0.0, 0.3125}, + {0.0, 0.25}, + {0.0, 0.1875}, + {0.0, 0.125}, +}; + +// floating-point +vertex_normal plane_normal[] = { + {-0.13369323663023402, -0.1944901609916269, 0.9717508403684473}, + {-0.08529965325761427, -0.20519916586708611, 0.9749960366491666}, + {-0.14100361114872287, 0.023700606980317247, 0.9897253471907165}, + {-0.1510052966036692, 0.16220568946433872, 0.9751342034320386}, + {0.156602778157927, 0.22360396676955607, 0.9620170663341365}, + {0.38199761252238257, 0.15249904688393545, 0.9114943031784075}, + {0.34150449935141863, -0.048800642952706384, 0.9386123662993895}, + {0.22090944297596432, 0.06770289402205877, 0.9729415892771194}, + {0.1696054842820028, 0.44141427336129746, 0.8811284917504286}, + {0.14640176561594007, 0.45260545845474365, 0.8796106081679023}, + {0.04020002331602029, 0.059800034684030175, 0.9974005784925033}, + {-0.10639590596430622, 0.1587938897286826, 0.9815622302120582}, + {0.02139899769442144, -0.08259613128781361, 0.9963533319028749}, + {0.2444919685707465, -0.5031834706944771, 0.8288727719766535}, + {-0.1058972138809537, -0.15339596420527196, 0.9824741514451087}, + {-0.3062933871971549, -0.08449817570407962, 0.9481795290249503}, + {-0.4849039447096354, 0.17140139435601465, 0.8576069766611328}, + {-0.4105058579603899, -0.09950141989539293, 0.9064129346048658}, + {-0.04449939547981858, -0.2113971281895202, 0.9763867358762891}, + {0.13909432159022925, 0.16779314998447495, 0.9759601572398543}, + {-0.013299777762570365, 0.15269744844695451, 0.9881834875918823}, + {-0.18539237589530877, 0.172192918711824, 0.9674602140167812}, + {-0.17349250962259208, 0.38688329667424143, 0.9056608989347645}, + {-0.01550046424585635, 0.4024120524214577, 0.9153274144666012}, + {0.13699313065169091, 0.10349481038284677, 0.9851506008616487}, + {0.2674888553090105, 0.11919503384237029, 0.9561601624167322}, + {0.3847009502125205, -0.2936007251946869, 0.8751021615050083}, + {0.29629187430676923, -0.4545875331078545, 0.8399769639476413}, + {-0.3152954061793977, 0.0702989757513849, 0.9463862112533523}, + {-0.37408613849495237, -0.0312988402429618, 0.9268656556294341}, + {-0.1144985905310258, 0.09789879487325262, 0.9885878305587084}, + {-0.05300291921616596, -0.1799099088110992, 0.9822540991343058}, + {-0.2846038962540098, -0.2711037114352145, 0.9195125882134996}, + {-0.4243851595104533, 0.20629278606740462, 0.8816691685682533}, + {-0.4298214787159506, 0.2261112990639284, 0.8741436820512154}, + {-0.3921025937672367, 0.17560116160552605, 0.9030059734042712}, + {-0.21830780136867536, 0.19580699728807438, 0.9560341644913131}, + {0.12890581313871818, 0.12580567333476142, 0.9836443584425385}, + {0.3887149833078029, -0.027901075467681252, 0.9209354981429271}, + {0.4547923845652801, 0.027099546221897735, 0.8901850939754009}, + {0.3538193739102422, -0.2551139691478315, 0.8998492725959185}, + {0.2758876984417836, -0.3760832308225981, 0.884560558324037}, + {-0.22629056161750832, 0.16629306406094405, 0.9597599692465068}, + {-0.14750123090290784, -0.1441012025295527, 0.9785081656847141}, + {-0.061998190609210226, -0.16059531309418001, 0.9850712511150482}, + {0.0226998376967407, -0.06849951023025277, 0.9973928686664834}, + {-0.18719383300075598, 0.058698066224061846, 0.9805676957293874}, + {-0.37139369378861875, 0.24639581623456022, 0.8951847998911456}, + {-0.3311131835338588, 0.15700625132834745, 0.9304370460884998}, + {-0.3505993584037612, 0.23369957233017394, 0.9068983403775557}, + {-0.31979472023275307, -0.10469827144580754, 0.9416844529180225}, + {0.10909718478346953, -0.34679105117238523, 0.9315759609924859}, + {0.3789964677693805, -0.1069990027739412, 0.919191433175764}, + {0.3286976892633667, 0.0850994017533085, 0.9405933876517272}, + {0.2451993330587211, -0.12639965619340274, 0.961197385546667}, + {0.2419134725364388, -0.44902500689897074, 0.8601479029706118}, + {-0.2096067106662647, -0.04750152078553231, 0.9766312673505444}, + {-0.16260328624562287, -0.059101194447209786, 0.9849199054324352}, + {-0.24440000855400043, -0.22960000803600042, 0.9421000329735018}, + {-0.20750423831735185, -0.11610237141515446, 0.971319839410332}, + {-0.2297098628046938, 0.33101421240032064, 0.9152392966428201}, + {-0.37139071349131225, 0.3248918761802029, 0.8697782514667297}, + {-0.4843053637116048, 0.12440137775288795, 0.8660095911093326}, + {-0.45459783384648256, 0.24409883687181347, 0.8565959183301738}, + {-0.1606938696458073, -0.46338232230159987, 0.8714667541774802}, + {0.20950258737293118, -0.6451079671325914, 0.7348090749481138}, + {0.3861973777287078, -0.03649975216752417, 0.9216937417207406}, + {0.31450919323807947, 0.15000438469224775, 0.9373273984802922}, + {0.29840655755615425, -0.08070177344095726, 0.951020898913883}, + {0.07400030599189791, -0.3378013968116637, 0.9383038798945651}, + {-0.005600240787529101, -0.13490580039958494, 0.9908426021935417}, + {-0.07079679864114653, 0.04319804662849619, 0.9965549368046135}, + {-0.14569267038612466, -0.16979145800661613, 0.9746509665432788}, + {-0.19820861829808947, -0.17260750513748863, 0.964841952240145}, + {-0.08059893771300136, 0.31939579039122373, 0.9441875556900233}, + {0.10530616217037438, 0.34882041182361423, 0.931254493951117}, + {0.24149149240458123, 0.13139537102261686, 0.9614661281449477}, + {0.341890444295621, 0.13649618498494376, 0.9297740131794923}, + {0.27589508083456266, -0.5652899209705629, 0.7773861393287025}, + {0.1149999856250027, -0.6869999141250162, 0.7174999103125169}, + {0.030900076323282778, 0.03520008694432213, 0.9989024672921413}, + {0.09020043747318263, 0.10750052137879303, 0.9901048020199347}, + {0.08450083444986033, -0.005200051350760635, 0.9964098395957492}, + {-0.1617936084697436, 0.04359827768405947, 0.985861054328308}, + {0.13090071602887499, 0.04200022974188503, 0.9905054180794554}, + {-0.10460135930349627, 0.16570215331347354, 0.9806127431453963}, + {-0.28921311755842705, -0.02480112488052901, 0.9569434031523473}, + {-0.31110843270835437, -0.21930594436818424, 0.9247250650125853}, + {-0.12210351052639216, 0.06280180557786591, 0.990528478103124}, + {0.18989358740182832, 0.12919563713699958, 0.9732671333238521}, + {0.4243081680108521, -0.03010057944173143, 0.9050174217530548}, + {0.48618659845111806, 0.0949973814332707, 0.86867605527455}, + {0.3110018442464046, -0.41150244021670573, 0.8567050802761891}, + {0.024699114429127932, -0.5600799186945165, 0.828070310071289}, + {-0.16989810989404108, 0.08499905439077983, 0.9817890776572663}, + {-0.221306095960371, 0.04990137455229333, 0.9739268271839373}, + {-0.31909298322244756, 0.1613964509310656, 0.9338794642163704}, + {-0.33029102611472905, 0.11799679407065705, 0.936474556331952}, + {-0.0008000400670098588, 0.18440923544577248, 0.9828492223216115}, + {-0.0028999969405048413, 0.25589973002592725, 0.9666989801331138}, + {-0.06920297163940466, 0.1392059776330221, 0.9878424188642185}, + {-0.22841038605638633, -0.19150870809894038, 0.9545434040753974}, + {-0.16330458484058, -0.24360683935802382, 0.9560268408303397}, + {0.21339370817927014, -0.24949264381784397, 0.9445721497007431}, + {0.4484900570856505, -0.17149619797143603, 0.8771805531227036}, + {0.5354890493609098, 0.04789902047504683, 0.8431827570889245}, + {0.5264091885525799, -0.1918033479566581, 0.8283144583550569}, + {0.24720320377428154, -0.20600266981190127, 0.9468122707665443}, + {-0.09160139143570395, 0.1815027570478195, 0.9791148728678792}, + {-0.22609324669558029, 0.14219575267630039, 0.9636712155706799}, + {-0.2535896778422409, 0.21259134664534865, 0.9436615890367616}, + {-0.070399999648, -0.11209999943950001, 0.991199995044}, + {-0.2643912963817823, 0.06579783397095791, 0.9621683259400564}, + {0.12399898321250649, -0.013399890121351508, 0.9921918640600721}, + {0.40919069306352823, 0.14169677714345538, 0.9013794983564621}, + {0.4149897955263904, -0.0456988762784483, 0.908677655891159}, + {0.3858011612632431, -0.399701203102432, 0.8315025028263003}, + {0.4237994109192283, -0.40029944358416014, 0.8124988706273548}, + {0.4087847587444, -0.1672937625683418, 0.8971665497687762}, + {0.430283763548518, -0.08929663045522346, 0.8982661045680541}, + {0.4119083144532417, -0.04490090633394162, 0.9101183709247276}, + {0.15299800721393397, 0.25489667999236454, 0.9547875639729684}, + {0.03230029571056085, 0.17960164426057987, 0.9832090013196109}, + {-0.007399738904819033, 0.31498888581324264, 0.9490665127788844}, + {-0.0807019150791675, 0.1471034908072558, 0.9858233938667079}, + {-0.003600009774039805, -0.29850081043080046, 0.9544025912065528}, + {-0.40300543053476495, -0.06740090823335772, 0.9127122988810917}, + {-0.1622043917433605, -0.45991245229822125, 0.8730236374349797}, + {0.16330447623704133, -0.009800268629044734, 0.986527041076799}, + {0.34680804604000326, -0.08560198598911267, 0.9340216695541034}, + {0.3689158139153025, -0.43091847171619363, 0.8235353015973207}, + {0.2033943487665282, -0.25989277897945273, 0.9439737720531102}, + {-0.073701455249601, -0.048100949762629686, 0.996119668577036}, + {-0.10610069496182802, -0.21870143249907434, 0.9700063535624238}, + {-0.025899182893669347, 0.019799375339561897, 0.9994684672672786}, + {0.04579732620116234, 0.382677658017136, 0.9227461270400132}, + {0.06499885863006359, 0.14439746440278742, 0.9873826617126891}, + {0.009799592051474168, 0.42088247902708953, 0.9070622397849202}, + {-0.13299340834506904, 0.23128853646777794, 0.9637522328043423}, + {-0.40860723036891267, -0.14930264193362372, 0.900415933000903}, + {0.09330219169422464, -0.23820559551515874, 0.96672270858314}, + {0.20560457578075156, -0.6018133935061104, 0.7717171747568384}, + {0.23110502196669158, -0.07770168847603608, 0.9698210744409238}, + {0.11189818838299499, -0.1008983664686702, 0.9885839949546814}, + {-0.09059903014257346, -0.35309622012519526, 0.9311900316640663}, + {-0.0850024795584936, -0.19290562713921666, 0.9775285149226765}, + {0.17759960484131884, -0.10299977082576486, 0.9786978223997678}, + {0.2648031246953072, -0.21940258896582482, 0.9390110803961234}, + {0.25438794611275345, -0.035398322690218045, 0.9664542056524221}, + {0.15600635504831198, 0.42981750897284926, 0.8893362278491271}, + {-0.09319724792590255, 0.3168906423574948, 0.9438721278675901}, + {-0.22549760297322055, 0.42739545681044105, 0.8754906935833905}, + {-0.30250338351926714, 0.395304421504682, 0.8673097009132574}, + {-0.4972982147026138, 0.1424994884277548, 0.8557969276945443}, + {0.23691039941022818, -0.36921620710112385, 0.8986394466442846}, + {0.11600287110659027, -0.548113565978639, 0.8283205011861097}, + {0.007899607754715168, -0.037898118215658846, 0.9992503834540338}, + {0.003499950388554861, -0.014699791631930414, 0.9998858267188586}, + {0.015099406227524927, -0.25898981542575866, 0.9657620221552036}, + {0.08310045663826383, -0.36420200129549574, 0.9276050972040137}, + {0.18709104697216555, -0.2708870370110083, 0.9442548137670548}, + {0.2052073034578974, -0.16130574097348369, 0.965334356861152}, + {0.02859989289360167, 0.0987996299960785, 0.9946962748694259}, + {-0.12790226452964043, 0.5197092015328705, 0.8447149558106901}, + {-0.09849925633342202, 0.3965970057039104, 0.9126931091930384}, + {-0.06960286874135398, 0.45951893946339306, 0.8854364940171668}, + {-0.16839805248778442, 0.5315938521526496, 0.8300904000600346}, + {-0.22549506960420404, 0.23619483565637692, 0.9451793338797946}, + {0.18849579470572966, -0.3310926134061915, 0.9245793728642846}, + {0.11900183442741666, -0.459607084897821, 0.880113567055205}, + {0.18180917068585992, -0.09380473162999813, 0.978849374407699}, + {0.23689551087260305, -0.010199806715494095, 0.9714815905982856}, + {0.17680346361377863, -0.21570422568717224, 0.9603188128298168}, + {-0.020500236779102204, -0.2913033645732913, 0.9564110466113829}, + {-0.2730026481385305, -0.2018019574884815, 0.9406091239527538}, + {-0.2652930255380367, -0.24249362492639995, 0.9331754671394492}, + {-0.14800235621626656, 0.2360037572097224, 0.9604152899331245}, + {-0.1137028409009703, 0.5297132350505186, 0.8405210006795563}, + {-0.013399990285010566, 0.24669982114269454, 0.968999297475764}, + {0.21189071621164932, 0.3788833995875126, 0.9008605296605704}, + {0.37160874591475385, 0.49261159375028996, 0.7869185203453171}, + {0.46638106298139864, 0.19919191197661795, 0.8618650046819629}, + {0.2675896752515668, -0.41208410004174395, 0.870966394409995}, + {0.3861971942875752, -0.41199700685261775, 0.8252940042608385}, + {0.3664912959350811, -0.08979786732597622, 0.9260780059085365}, + {0.254489563596991, 0.06239744113340761, 0.9650604236835205}, + {-0.0071000243176249315, 0.030700105148040197, 0.9995034233050872}, + {-0.3704919418878949, 0.03489924094976392, 0.9281798123086209}, + {-0.5347907802864211, -0.044999224220061605, 0.8437854532641775}, + {-0.5401021442097688, -0.29580117433299313, 0.7879031279816272}, + {-0.466487801503484, 0.06579827939749035, 0.8820769339897604}, + {-0.18100095749759776, 0.4079021578081222, 0.8949047340585649}, + {-0.05729757006157944, 0.16119316394287272, 0.9852582160850649}, + {-0.06239711232846062, 0.2593879958013251, 0.963755398432217}, + {0.08510036976190992, 0.3573015524786183, 0.9301040413108392}, + {0.3593018881363833, 0.10040052760615888, 0.9278048756274322}, + {0.4707164989024349, -0.11290395735305905, 0.8750306703625037}, + {0.3730806637302852, -0.18009066614265445, 0.9101528280013552}, + {0.47568800805647343, -0.02769930170940575, 0.8791778362061203}, + {0.5160855885111585, -0.12079662680129422, 0.8479763205918666}, + {0.43449293737470396, 0.18009707254587845, 0.8824856553122583}, + {0.3734763036802734, 0.3902752378217154, 0.841546605561762}, + {0.38489266786451515, 0.1559970282849165, 0.9096826707101828}, + {0.3377200324578555, -0.15820938446796784, 0.9278550373538593}, + {0.26958970591361575, -0.03139880105967186, 0.9624632490424895}, + {0.18511034888333955, 0.4387245275803407, 0.8793491613890896}, + {0.23909238383341755, 0.47608483455913886, 0.8462730424015946}, + {0.3879945273757868, 0.022499682644214442, 0.9213870039279638}, + {0.2513907527612364, -0.10689606790046209, 0.9619646147824559}, + {0.07390130436953328, 0.1318023263315898, 0.9885174474869236}, + {0.14469718349673458, -0.4159919027964173, 0.8977825248332295}, + {0.12609626949704958, -0.42498742693295855, 0.896373481182833}, + {0.23188819023519933, -0.24588747726966587, 0.9411520683457076}, + {0.057300894760457584, 0.01680026233814463, 0.9982155872580936}, + {0.3780894930389806, 0.09009749622536936, 0.9213743953613244}, + {0.38810963494128264, -0.040501005449940605, 0.9207228572286497}, + {-0.3306156500622023, 0.07910374446436844, 0.9404445169948429}, + {-0.37661413647692393, 0.32991238349372604, 0.8656324921253994}, + {-0.10919885341805864, 0.314396698851993, 0.9429900986559459}, + {0.05210003881454338, 0.20630015369367177, 0.9771007279403136}, + {-0.046402461019782, 0.3144166755305919, 0.9481502864839509}, + {-0.48839815141649534, 0.30549884368906494, 0.8173969061585653}, + {-0.5007019677626, 0.1642006453098041, 0.84990334012669}, + {-0.11320558230489855, -0.006700330401438343, 0.993548993108805}, + {0.44437167443039133, -0.06129609280509223, 0.8937430301662551}, + {0.5161961982290001, -0.10349923773092116, 0.8501937383461756}, + {0.049799919075197256, -0.13999977250055456, 0.988898393041417}, + {0.05069841671316869, -0.09089716132597699, 0.9945689400969936}, + {-0.1259945017199148, 0.10779529591592713, 0.9861569650490475}, + {-0.24440688992734194, 0.23990676306697764, 0.9395264856249499}, + {-0.21449123821187493, 0.2091914547036095, 0.9540610274030297}, + {-0.3246918730641245, 0.12609684383549769, 0.9373765377588862}, + {-0.4650006184512338, -0.09950013233526402, 0.8797011700033341}, + {-0.3757069562786938, -0.2092038734455756, 0.9028167158062411}, + {-0.31499613502113477, -0.05849928221821075, 0.9472883768429238}, + {-0.30330593120547766, 0.25900506489356645, 0.9170179324610056}, + {-0.22730890841068432, 0.2513098490259788, 0.9408368721195416}, + {-0.24650796603363564, 0.08240266288507739, 0.9656312048765865}, + {-0.18588978099017736, 0.0782956958124308, 0.9794461564275349}, + {0.017799878872236413, -0.3673974998685201, 0.9298936720950921}, + {0.18119626014778545, -0.47199025822160445, 0.8627821923593227}, + {0.40160382931076877, -0.12740121477637437, 0.9069086474151797}, + {0.029998950055121782, -0.1677941273083145, 0.9853655128105668}, + {0.16780149931309457, 0.024800221590969878, 0.9855088055605168}, + {0.11440456426113861, 0.24660983869577607, 0.9623383932560636}, + {-0.15739954590296512, 0.4500987014671194, 0.8789974640959741}, + {-0.24199510569848032, 0.3957919951878451, 0.8858820832160484}, + {-0.32968967757779, 0.20179368193872618, 0.9222711241431475}, + {0.0722964886448177, 0.10769476939207284, 0.9915518414965593}, + {0.23450313884552032, 0.06830091421385517, 0.9697129796951005}, + {-0.035598705298632, 0.16729391563093074, 0.9852641665938796}, + {-0.34181478551832833, 0.2495107928227704, 0.9060391915728656}, + {-0.2717055686626952, 0.25340519359266456, 0.9284190281429746}, + {-0.07020064093477763, 0.16430150007954364, 0.9839089831300242}, + {-0.14150560019494376, 0.1688066806565831, 0.97543860374663}, + {-0.010999643342346842, 0.12679588870996178, 0.9918678392067121}, +}; + +const union quadrilateral plane_Plane_quadrilateral[] = { + { .v = { + {64, 0, 0}, + {65, 1, 0}, + {80, 2, 0}, + {79, 3, 0}, + }}, + { .v = { + {65, 1, 1}, + {66, 4, 1}, + {81, 5, 1}, + {80, 2, 1}, + }}, + { .v = { + {66, 4, 2}, + {67, 6, 2}, + {82, 7, 2}, + {81, 5, 2}, + }}, + { .v = { + {67, 6, 3}, + {68, 8, 3}, + {83, 9, 3}, + {82, 7, 3}, + }}, + { .v = { + {68, 8, 4}, + {69, 10, 4}, + {84, 11, 4}, + {83, 9, 4}, + }}, + { .v = { + {69, 10, 5}, + {70, 12, 5}, + {85, 13, 5}, + {84, 11, 5}, + }}, + { .v = { + {70, 12, 6}, + {71, 14, 6}, + {86, 15, 6}, + {85, 13, 6}, + }}, + { .v = { + {71, 14, 7}, + {72, 16, 7}, + {87, 17, 7}, + {86, 15, 7}, + }}, + { .v = { + {72, 16, 8}, + {73, 18, 8}, + {88, 19, 8}, + {87, 17, 8}, + }}, + { .v = { + {73, 18, 9}, + {74, 20, 9}, + {89, 21, 9}, + {88, 19, 9}, + }}, + { .v = { + {74, 20, 10}, + {75, 22, 10}, + {90, 23, 10}, + {89, 21, 10}, + }}, + { .v = { + {75, 22, 11}, + {76, 24, 11}, + {91, 25, 11}, + {90, 23, 11}, + }}, + { .v = { + {76, 24, 12}, + {77, 26, 12}, + {92, 27, 12}, + {91, 25, 12}, + }}, + { .v = { + {77, 26, 13}, + {78, 28, 13}, + {93, 29, 13}, + {92, 27, 13}, + }}, + { .v = { + {79, 3, 14}, + {80, 2, 14}, + {95, 30, 14}, + {94, 31, 14}, + }}, + { .v = { + {80, 2, 15}, + {81, 5, 15}, + {96, 32, 15}, + {95, 30, 15}, + }}, + { .v = { + {81, 5, 16}, + {82, 7, 16}, + {97, 33, 16}, + {96, 32, 16}, + }}, + { .v = { + {82, 7, 17}, + {83, 9, 17}, + {98, 34, 17}, + {97, 33, 17}, + }}, + { .v = { + {83, 9, 18}, + {84, 11, 18}, + {99, 35, 18}, + {98, 34, 18}, + }}, + { .v = { + {84, 11, 19}, + {85, 13, 19}, + {100, 36, 19}, + {99, 35, 19}, + }}, + { .v = { + {85, 13, 20}, + {86, 15, 20}, + {101, 37, 20}, + {100, 36, 20}, + }}, + { .v = { + {86, 15, 21}, + {87, 17, 21}, + {102, 38, 21}, + {101, 37, 21}, + }}, + { .v = { + {87, 17, 22}, + {88, 19, 22}, + {103, 39, 22}, + {102, 38, 22}, + }}, + { .v = { + {88, 19, 23}, + {89, 21, 23}, + {104, 40, 23}, + {103, 39, 23}, + }}, + { .v = { + {89, 21, 24}, + {90, 23, 24}, + {105, 41, 24}, + {104, 40, 24}, + }}, + { .v = { + {90, 23, 25}, + {91, 25, 25}, + {106, 42, 25}, + {105, 41, 25}, + }}, + { .v = { + {91, 25, 26}, + {92, 27, 26}, + {107, 43, 26}, + {106, 42, 26}, + }}, + { .v = { + {92, 27, 27}, + {93, 29, 27}, + {108, 44, 27}, + {107, 43, 27}, + }}, + { .v = { + {94, 31, 28}, + {95, 30, 28}, + {110, 45, 28}, + {109, 46, 28}, + }}, + { .v = { + {95, 30, 29}, + {96, 32, 29}, + {111, 47, 29}, + {110, 45, 29}, + }}, + { .v = { + {96, 32, 30}, + {97, 33, 30}, + {112, 48, 30}, + {111, 47, 30}, + }}, + { .v = { + {97, 33, 31}, + {98, 34, 31}, + {113, 49, 31}, + {112, 48, 31}, + }}, + { .v = { + {98, 34, 32}, + {99, 35, 32}, + {114, 50, 32}, + {113, 49, 32}, + }}, + { .v = { + {99, 35, 33}, + {100, 36, 33}, + {115, 51, 33}, + {114, 50, 33}, + }}, + { .v = { + {100, 36, 34}, + {101, 37, 34}, + {116, 52, 34}, + {115, 51, 34}, + }}, + { .v = { + {101, 37, 35}, + {102, 38, 35}, + {117, 53, 35}, + {116, 52, 35}, + }}, + { .v = { + {102, 38, 36}, + {103, 39, 36}, + {118, 54, 36}, + {117, 53, 36}, + }}, + { .v = { + {103, 39, 37}, + {104, 40, 37}, + {119, 55, 37}, + {118, 54, 37}, + }}, + { .v = { + {104, 40, 38}, + {105, 41, 38}, + {120, 56, 38}, + {119, 55, 38}, + }}, + { .v = { + {105, 41, 39}, + {106, 42, 39}, + {121, 57, 39}, + {120, 56, 39}, + }}, + { .v = { + {106, 42, 40}, + {107, 43, 40}, + {122, 58, 40}, + {121, 57, 40}, + }}, + { .v = { + {107, 43, 41}, + {108, 44, 41}, + {123, 59, 41}, + {122, 58, 41}, + }}, + { .v = { + {109, 46, 42}, + {110, 45, 42}, + {125, 60, 42}, + {124, 61, 42}, + }}, + { .v = { + {110, 45, 43}, + {111, 47, 43}, + {126, 62, 43}, + {125, 60, 43}, + }}, + { .v = { + {111, 47, 44}, + {112, 48, 44}, + {127, 63, 44}, + {126, 62, 44}, + }}, + { .v = { + {112, 48, 45}, + {113, 49, 45}, + {128, 64, 45}, + {127, 63, 45}, + }}, + { .v = { + {113, 49, 46}, + {114, 50, 46}, + {129, 65, 46}, + {128, 64, 46}, + }}, + { .v = { + {114, 50, 47}, + {115, 51, 47}, + {130, 66, 47}, + {129, 65, 47}, + }}, + { .v = { + {115, 51, 48}, + {116, 52, 48}, + {131, 67, 48}, + {130, 66, 48}, + }}, + { .v = { + {116, 52, 49}, + {117, 53, 49}, + {132, 68, 49}, + {131, 67, 49}, + }}, + { .v = { + {117, 53, 50}, + {118, 54, 50}, + {133, 69, 50}, + {132, 68, 50}, + }}, + { .v = { + {118, 54, 51}, + {119, 55, 51}, + {134, 70, 51}, + {133, 69, 51}, + }}, + { .v = { + {119, 55, 52}, + {120, 56, 52}, + {135, 71, 52}, + {134, 70, 52}, + }}, + { .v = { + {120, 56, 53}, + {121, 57, 53}, + {136, 72, 53}, + {135, 71, 53}, + }}, + { .v = { + {121, 57, 54}, + {122, 58, 54}, + {137, 73, 54}, + {136, 72, 54}, + }}, + { .v = { + {122, 58, 55}, + {123, 59, 55}, + {138, 74, 55}, + {137, 73, 55}, + }}, + { .v = { + {124, 61, 56}, + {125, 60, 56}, + {140, 75, 56}, + {139, 76, 56}, + }}, + { .v = { + {125, 60, 57}, + {126, 62, 57}, + {141, 77, 57}, + {140, 75, 57}, + }}, + { .v = { + {126, 62, 58}, + {127, 63, 58}, + {142, 78, 58}, + {141, 77, 58}, + }}, + { .v = { + {127, 63, 59}, + {128, 64, 59}, + {143, 79, 59}, + {142, 78, 59}, + }}, + { .v = { + {128, 64, 60}, + {129, 65, 60}, + {144, 80, 60}, + {143, 79, 60}, + }}, + { .v = { + {129, 65, 61}, + {130, 66, 61}, + {145, 81, 61}, + {144, 80, 61}, + }}, + { .v = { + {130, 66, 62}, + {131, 67, 62}, + {146, 82, 62}, + {145, 81, 62}, + }}, + { .v = { + {131, 67, 63}, + {132, 68, 63}, + {147, 83, 63}, + {146, 82, 63}, + }}, + { .v = { + {132, 68, 64}, + {133, 69, 64}, + {148, 84, 64}, + {147, 83, 64}, + }}, + { .v = { + {133, 69, 65}, + {134, 70, 65}, + {149, 85, 65}, + {148, 84, 65}, + }}, + { .v = { + {134, 70, 66}, + {135, 71, 66}, + {150, 86, 66}, + {149, 85, 66}, + }}, + { .v = { + {135, 71, 67}, + {136, 72, 67}, + {151, 87, 67}, + {150, 86, 67}, + }}, + { .v = { + {136, 72, 68}, + {137, 73, 68}, + {152, 88, 68}, + {151, 87, 68}, + }}, + { .v = { + {137, 73, 69}, + {138, 74, 69}, + {153, 89, 69}, + {152, 88, 69}, + }}, + { .v = { + {139, 76, 70}, + {140, 75, 70}, + {155, 90, 70}, + {154, 91, 70}, + }}, + { .v = { + {140, 75, 71}, + {141, 77, 71}, + {156, 92, 71}, + {155, 90, 71}, + }}, + { .v = { + {141, 77, 72}, + {142, 78, 72}, + {157, 93, 72}, + {156, 92, 72}, + }}, + { .v = { + {142, 78, 73}, + {143, 79, 73}, + {158, 94, 73}, + {157, 93, 73}, + }}, + { .v = { + {143, 79, 74}, + {144, 80, 74}, + {159, 95, 74}, + {158, 94, 74}, + }}, + { .v = { + {144, 80, 75}, + {145, 81, 75}, + {160, 96, 75}, + {159, 95, 75}, + }}, + { .v = { + {145, 81, 76}, + {146, 82, 76}, + {161, 97, 76}, + {160, 96, 76}, + }}, + { .v = { + {146, 82, 77}, + {147, 83, 77}, + {162, 98, 77}, + {161, 97, 77}, + }}, + { .v = { + {147, 83, 78}, + {148, 84, 78}, + {163, 99, 78}, + {162, 98, 78}, + }}, + { .v = { + {148, 84, 79}, + {149, 85, 79}, + {164, 100, 79}, + {163, 99, 79}, + }}, + { .v = { + {149, 85, 80}, + {150, 86, 80}, + {165, 101, 80}, + {164, 100, 80}, + }}, + { .v = { + {150, 86, 81}, + {151, 87, 81}, + {166, 102, 81}, + {165, 101, 81}, + }}, + { .v = { + {151, 87, 82}, + {152, 88, 82}, + {167, 103, 82}, + {166, 102, 82}, + }}, + { .v = { + {152, 88, 83}, + {153, 89, 83}, + {168, 104, 83}, + {167, 103, 83}, + }}, + { .v = { + {154, 91, 84}, + {155, 90, 84}, + {170, 105, 84}, + {169, 106, 84}, + }}, + { .v = { + {155, 90, 85}, + {156, 92, 85}, + {171, 107, 85}, + {170, 105, 85}, + }}, + { .v = { + {156, 92, 86}, + {157, 93, 86}, + {172, 108, 86}, + {171, 107, 86}, + }}, + { .v = { + {157, 93, 87}, + {158, 94, 87}, + {173, 109, 87}, + {172, 108, 87}, + }}, + { .v = { + {158, 94, 88}, + {159, 95, 88}, + {174, 110, 88}, + {173, 109, 88}, + }}, + { .v = { + {159, 95, 89}, + {160, 96, 89}, + {175, 111, 89}, + {174, 110, 89}, + }}, + { .v = { + {160, 96, 90}, + {161, 97, 90}, + {176, 112, 90}, + {175, 111, 90}, + }}, + { .v = { + {161, 97, 91}, + {162, 98, 91}, + {177, 113, 91}, + {176, 112, 91}, + }}, + { .v = { + {162, 98, 92}, + {163, 99, 92}, + {178, 114, 92}, + {177, 113, 92}, + }}, + { .v = { + {163, 99, 93}, + {164, 100, 93}, + {179, 115, 93}, + {178, 114, 93}, + }}, + { .v = { + {164, 100, 94}, + {165, 101, 94}, + {180, 116, 94}, + {179, 115, 94}, + }}, + { .v = { + {165, 101, 95}, + {166, 102, 95}, + {181, 117, 95}, + {180, 116, 95}, + }}, + { .v = { + {166, 102, 96}, + {167, 103, 96}, + {182, 118, 96}, + {181, 117, 96}, + }}, + { .v = { + {167, 103, 97}, + {168, 104, 97}, + {183, 119, 97}, + {182, 118, 97}, + }}, + { .v = { + {169, 106, 98}, + {170, 105, 98}, + {185, 120, 98}, + {184, 121, 98}, + }}, + { .v = { + {170, 105, 99}, + {171, 107, 99}, + {186, 122, 99}, + {185, 120, 99}, + }}, + { .v = { + {171, 107, 100}, + {172, 108, 100}, + {187, 123, 100}, + {186, 122, 100}, + }}, + { .v = { + {172, 108, 101}, + {173, 109, 101}, + {188, 124, 101}, + {187, 123, 101}, + }}, + { .v = { + {173, 109, 102}, + {174, 110, 102}, + {189, 125, 102}, + {188, 124, 102}, + }}, + { .v = { + {174, 110, 103}, + {175, 111, 103}, + {190, 126, 103}, + {189, 125, 103}, + }}, + { .v = { + {175, 111, 104}, + {176, 112, 104}, + {191, 127, 104}, + {190, 126, 104}, + }}, + { .v = { + {176, 112, 105}, + {177, 113, 105}, + {192, 128, 105}, + {191, 127, 105}, + }}, + { .v = { + {177, 113, 106}, + {178, 114, 106}, + {193, 129, 106}, + {192, 128, 106}, + }}, + { .v = { + {178, 114, 107}, + {179, 115, 107}, + {194, 130, 107}, + {193, 129, 107}, + }}, + { .v = { + {179, 115, 108}, + {180, 116, 108}, + {195, 131, 108}, + {194, 130, 108}, + }}, + { .v = { + {180, 116, 109}, + {181, 117, 109}, + {196, 132, 109}, + {195, 131, 109}, + }}, + { .v = { + {181, 117, 110}, + {182, 118, 110}, + {197, 133, 110}, + {196, 132, 110}, + }}, + { .v = { + {182, 118, 111}, + {183, 119, 111}, + {198, 134, 111}, + {197, 133, 111}, + }}, + { .v = { + {184, 121, 112}, + {185, 120, 112}, + {200, 135, 112}, + {199, 136, 112}, + }}, + { .v = { + {185, 120, 113}, + {186, 122, 113}, + {201, 137, 113}, + {200, 135, 113}, + }}, + { .v = { + {186, 122, 114}, + {187, 123, 114}, + {202, 138, 114}, + {201, 137, 114}, + }}, + { .v = { + {187, 123, 115}, + {188, 124, 115}, + {203, 139, 115}, + {202, 138, 115}, + }}, + { .v = { + {188, 124, 116}, + {189, 125, 116}, + {204, 140, 116}, + {203, 139, 116}, + }}, + { .v = { + {189, 125, 117}, + {190, 126, 117}, + {205, 141, 117}, + {204, 140, 117}, + }}, + { .v = { + {190, 126, 118}, + {191, 127, 118}, + {206, 142, 118}, + {205, 141, 118}, + }}, + { .v = { + {191, 127, 119}, + {192, 128, 119}, + {207, 143, 119}, + {206, 142, 119}, + }}, + { .v = { + {192, 128, 120}, + {193, 129, 120}, + {208, 144, 120}, + {207, 143, 120}, + }}, + { .v = { + {193, 129, 121}, + {194, 130, 121}, + {209, 145, 121}, + {208, 144, 121}, + }}, + { .v = { + {194, 130, 122}, + {195, 131, 122}, + {210, 146, 122}, + {209, 145, 122}, + }}, + { .v = { + {195, 131, 123}, + {196, 132, 123}, + {211, 147, 123}, + {210, 146, 123}, + }}, + { .v = { + {196, 132, 124}, + {197, 133, 124}, + {212, 148, 124}, + {211, 147, 124}, + }}, + { .v = { + {197, 133, 125}, + {198, 134, 125}, + {213, 149, 125}, + {212, 148, 125}, + }}, + { .v = { + {199, 136, 126}, + {200, 135, 126}, + {215, 150, 126}, + {214, 151, 126}, + }}, + { .v = { + {200, 135, 127}, + {201, 137, 127}, + {216, 152, 127}, + {215, 150, 127}, + }}, + { .v = { + {201, 137, 128}, + {202, 138, 128}, + {217, 153, 128}, + {216, 152, 128}, + }}, + { .v = { + {202, 138, 129}, + {203, 139, 129}, + {218, 154, 129}, + {217, 153, 129}, + }}, + { .v = { + {203, 139, 130}, + {204, 140, 130}, + {219, 155, 130}, + {218, 154, 130}, + }}, + { .v = { + {204, 140, 131}, + {205, 141, 131}, + {220, 156, 131}, + {219, 155, 131}, + }}, + { .v = { + {205, 141, 132}, + {206, 142, 132}, + {221, 157, 132}, + {220, 156, 132}, + }}, + { .v = { + {206, 142, 133}, + {207, 143, 133}, + {222, 158, 133}, + {221, 157, 133}, + }}, + { .v = { + {207, 143, 134}, + {208, 144, 134}, + {223, 159, 134}, + {222, 158, 134}, + }}, + { .v = { + {208, 144, 135}, + {209, 145, 135}, + {224, 160, 135}, + {223, 159, 135}, + }}, + { .v = { + {209, 145, 136}, + {210, 146, 136}, + {225, 161, 136}, + {224, 160, 136}, + }}, + { .v = { + {210, 146, 137}, + {211, 147, 137}, + {226, 162, 137}, + {225, 161, 137}, + }}, + { .v = { + {211, 147, 138}, + {212, 148, 138}, + {227, 163, 138}, + {226, 162, 138}, + }}, + { .v = { + {212, 148, 139}, + {213, 149, 139}, + {228, 164, 139}, + {227, 163, 139}, + }}, + { .v = { + {214, 151, 140}, + {215, 150, 140}, + {230, 165, 140}, + {229, 166, 140}, + }}, + { .v = { + {215, 150, 141}, + {216, 152, 141}, + {231, 167, 141}, + {230, 165, 141}, + }}, + { .v = { + {216, 152, 142}, + {217, 153, 142}, + {232, 168, 142}, + {231, 167, 142}, + }}, + { .v = { + {217, 153, 143}, + {218, 154, 143}, + {233, 169, 143}, + {232, 168, 143}, + }}, + { .v = { + {218, 154, 144}, + {219, 155, 144}, + {234, 170, 144}, + {233, 169, 144}, + }}, + { .v = { + {219, 155, 145}, + {220, 156, 145}, + {235, 171, 145}, + {234, 170, 145}, + }}, + { .v = { + {220, 156, 146}, + {221, 157, 146}, + {236, 172, 146}, + {235, 171, 146}, + }}, + { .v = { + {221, 157, 147}, + {222, 158, 147}, + {237, 173, 147}, + {236, 172, 147}, + }}, + { .v = { + {222, 158, 148}, + {223, 159, 148}, + {238, 174, 148}, + {237, 173, 148}, + }}, + { .v = { + {223, 159, 149}, + {224, 160, 149}, + {239, 175, 149}, + {238, 174, 149}, + }}, + { .v = { + {224, 160, 150}, + {225, 161, 150}, + {240, 176, 150}, + {239, 175, 150}, + }}, + { .v = { + {225, 161, 151}, + {226, 162, 151}, + {241, 177, 151}, + {240, 176, 151}, + }}, + { .v = { + {226, 162, 152}, + {227, 163, 152}, + {242, 178, 152}, + {241, 177, 152}, + }}, + { .v = { + {227, 163, 153}, + {228, 164, 153}, + {243, 179, 153}, + {242, 178, 153}, + }}, + { .v = { + {229, 166, 154}, + {230, 165, 154}, + {245, 180, 154}, + {244, 181, 154}, + }}, + { .v = { + {230, 165, 155}, + {231, 167, 155}, + {246, 182, 155}, + {245, 180, 155}, + }}, + { .v = { + {231, 167, 156}, + {232, 168, 156}, + {247, 183, 156}, + {246, 182, 156}, + }}, + { .v = { + {232, 168, 157}, + {233, 169, 157}, + {248, 184, 157}, + {247, 183, 157}, + }}, + { .v = { + {233, 169, 158}, + {234, 170, 158}, + {249, 185, 158}, + {248, 184, 158}, + }}, + { .v = { + {234, 170, 159}, + {235, 171, 159}, + {250, 186, 159}, + {249, 185, 159}, + }}, + { .v = { + {235, 171, 160}, + {236, 172, 160}, + {251, 187, 160}, + {250, 186, 160}, + }}, + { .v = { + {236, 172, 161}, + {237, 173, 161}, + {252, 188, 161}, + {251, 187, 161}, + }}, + { .v = { + {237, 173, 162}, + {238, 174, 162}, + {253, 189, 162}, + {252, 188, 162}, + }}, + { .v = { + {238, 174, 163}, + {239, 175, 163}, + {254, 190, 163}, + {253, 189, 163}, + }}, + { .v = { + {239, 175, 164}, + {240, 176, 164}, + {255, 191, 164}, + {254, 190, 164}, + }}, + { .v = { + {240, 176, 165}, + {241, 177, 165}, + {256, 192, 165}, + {255, 191, 165}, + }}, + { .v = { + {241, 177, 166}, + {242, 178, 166}, + {257, 193, 166}, + {256, 192, 166}, + }}, + { .v = { + {242, 178, 167}, + {243, 179, 167}, + {258, 194, 167}, + {257, 193, 167}, + }}, + { .v = { + {244, 181, 168}, + {245, 180, 168}, + {260, 195, 168}, + {259, 196, 168}, + }}, + { .v = { + {245, 180, 169}, + {246, 182, 169}, + {261, 197, 169}, + {260, 195, 169}, + }}, + { .v = { + {246, 182, 170}, + {247, 183, 170}, + {262, 198, 170}, + {261, 197, 170}, + }}, + { .v = { + {247, 183, 171}, + {248, 184, 171}, + {263, 199, 171}, + {262, 198, 171}, + }}, + { .v = { + {248, 184, 172}, + {249, 185, 172}, + {264, 200, 172}, + {263, 199, 172}, + }}, + { .v = { + {249, 185, 173}, + {250, 186, 173}, + {265, 201, 173}, + {264, 200, 173}, + }}, + { .v = { + {250, 186, 174}, + {251, 187, 174}, + {266, 202, 174}, + {265, 201, 174}, + }}, + { .v = { + {251, 187, 175}, + {252, 188, 175}, + {267, 203, 175}, + {266, 202, 175}, + }}, + { .v = { + {252, 188, 176}, + {253, 189, 176}, + {268, 204, 176}, + {267, 203, 176}, + }}, + { .v = { + {253, 189, 177}, + {254, 190, 177}, + {269, 205, 177}, + {268, 204, 177}, + }}, + { .v = { + {254, 190, 178}, + {255, 191, 178}, + {270, 206, 178}, + {269, 205, 178}, + }}, + { .v = { + {255, 191, 179}, + {256, 192, 179}, + {271, 207, 179}, + {270, 206, 179}, + }}, + { .v = { + {256, 192, 180}, + {257, 193, 180}, + {272, 208, 180}, + {271, 207, 180}, + }}, + { .v = { + {257, 193, 181}, + {258, 194, 181}, + {273, 209, 181}, + {272, 208, 181}, + }}, + { .v = { + {259, 196, 182}, + {260, 195, 182}, + {275, 210, 182}, + {274, 211, 182}, + }}, + { .v = { + {260, 195, 183}, + {261, 197, 183}, + {276, 212, 183}, + {275, 210, 183}, + }}, + { .v = { + {261, 197, 184}, + {262, 198, 184}, + {277, 213, 184}, + {276, 212, 184}, + }}, + { .v = { + {262, 198, 185}, + {263, 199, 185}, + {278, 214, 185}, + {277, 213, 185}, + }}, + { .v = { + {263, 199, 186}, + {264, 200, 186}, + {279, 215, 186}, + {278, 214, 186}, + }}, + { .v = { + {264, 200, 187}, + {265, 201, 187}, + {280, 216, 187}, + {279, 215, 187}, + }}, + { .v = { + {265, 201, 188}, + {266, 202, 188}, + {281, 217, 188}, + {280, 216, 188}, + }}, + { .v = { + {266, 202, 189}, + {267, 203, 189}, + {282, 218, 189}, + {281, 217, 189}, + }}, + { .v = { + {267, 203, 190}, + {268, 204, 190}, + {283, 219, 190}, + {282, 218, 190}, + }}, + { .v = { + {268, 204, 191}, + {269, 205, 191}, + {284, 220, 191}, + {283, 219, 191}, + }}, + { .v = { + {269, 205, 192}, + {270, 206, 192}, + {285, 221, 192}, + {284, 220, 192}, + }}, + { .v = { + {270, 206, 193}, + {271, 207, 193}, + {286, 222, 193}, + {285, 221, 193}, + }}, + { .v = { + {271, 207, 194}, + {272, 208, 194}, + {287, 223, 194}, + {286, 222, 194}, + }}, + { .v = { + {272, 208, 195}, + {273, 209, 195}, + {288, 224, 195}, + {287, 223, 195}, + }}, + { .v = { + {0, 225, 196}, + {19, 226, 196}, + {64, 0, 196}, + {18, 227, 196}, + }}, + { .v = { + {19, 226, 197}, + {20, 228, 197}, + {65, 1, 197}, + {64, 0, 197}, + }}, + { .v = { + {20, 228, 198}, + {21, 229, 198}, + {66, 4, 198}, + {65, 1, 198}, + }}, + { .v = { + {21, 229, 199}, + {22, 230, 199}, + {67, 6, 199}, + {66, 4, 199}, + }}, + { .v = { + {22, 230, 200}, + {23, 231, 200}, + {68, 8, 200}, + {67, 6, 200}, + }}, + { .v = { + {23, 231, 201}, + {24, 232, 201}, + {69, 10, 201}, + {68, 8, 201}, + }}, + { .v = { + {24, 232, 202}, + {25, 233, 202}, + {70, 12, 202}, + {69, 10, 202}, + }}, + { .v = { + {25, 233, 203}, + {26, 234, 203}, + {71, 14, 203}, + {70, 12, 203}, + }}, + { .v = { + {26, 234, 204}, + {27, 235, 204}, + {72, 16, 204}, + {71, 14, 204}, + }}, + { .v = { + {27, 235, 205}, + {28, 236, 205}, + {73, 18, 205}, + {72, 16, 205}, + }}, + { .v = { + {28, 236, 206}, + {29, 237, 206}, + {74, 20, 206}, + {73, 18, 206}, + }}, + { .v = { + {29, 237, 207}, + {30, 238, 207}, + {75, 22, 207}, + {74, 20, 207}, + }}, + { .v = { + {30, 238, 208}, + {31, 239, 208}, + {76, 24, 208}, + {75, 22, 208}, + }}, + { .v = { + {31, 239, 209}, + {32, 240, 209}, + {77, 26, 209}, + {76, 24, 209}, + }}, + { .v = { + {32, 240, 210}, + {33, 241, 210}, + {78, 28, 210}, + {77, 26, 210}, + }}, + { .v = { + {33, 241, 211}, + {1, 242, 211}, + {34, 243, 211}, + {78, 28, 211}, + }}, + { .v = { + {78, 28, 212}, + {34, 243, 212}, + {35, 244, 212}, + {93, 29, 212}, + }}, + { .v = { + {93, 29, 213}, + {35, 244, 213}, + {36, 245, 213}, + {108, 44, 213}, + }}, + { .v = { + {108, 44, 214}, + {36, 245, 214}, + {37, 246, 214}, + {123, 59, 214}, + }}, + { .v = { + {123, 59, 215}, + {37, 246, 215}, + {38, 247, 215}, + {138, 74, 215}, + }}, + { .v = { + {138, 74, 216}, + {38, 247, 216}, + {39, 248, 216}, + {153, 89, 216}, + }}, + { .v = { + {153, 89, 217}, + {39, 248, 217}, + {40, 249, 217}, + {168, 104, 217}, + }}, + { .v = { + {168, 104, 218}, + {40, 249, 218}, + {41, 250, 218}, + {183, 119, 218}, + }}, + { .v = { + {183, 119, 219}, + {41, 250, 219}, + {42, 251, 219}, + {198, 134, 219}, + }}, + { .v = { + {198, 134, 220}, + {42, 251, 220}, + {43, 252, 220}, + {213, 149, 220}, + }}, + { .v = { + {213, 149, 221}, + {43, 252, 221}, + {44, 253, 221}, + {228, 164, 221}, + }}, + { .v = { + {228, 164, 222}, + {44, 253, 222}, + {45, 254, 222}, + {243, 179, 222}, + }}, + { .v = { + {243, 179, 223}, + {45, 254, 223}, + {46, 255, 223}, + {258, 194, 223}, + }}, + { .v = { + {258, 194, 224}, + {46, 255, 224}, + {47, 256, 224}, + {273, 209, 224}, + }}, + { .v = { + {273, 209, 225}, + {47, 256, 225}, + {48, 257, 225}, + {288, 224, 225}, + }}, + { .v = { + {288, 224, 226}, + {48, 257, 226}, + {3, 258, 226}, + {49, 259, 226}, + }}, + { .v = { + {287, 223, 227}, + {288, 224, 227}, + {49, 259, 227}, + {50, 260, 227}, + }}, + { .v = { + {286, 222, 228}, + {287, 223, 228}, + {50, 260, 228}, + {51, 261, 228}, + }}, + { .v = { + {285, 221, 229}, + {286, 222, 229}, + {51, 261, 229}, + {52, 262, 229}, + }}, + { .v = { + {284, 220, 230}, + {285, 221, 230}, + {52, 262, 230}, + {53, 263, 230}, + }}, + { .v = { + {283, 219, 231}, + {284, 220, 231}, + {53, 263, 231}, + {54, 264, 231}, + }}, + { .v = { + {282, 218, 232}, + {283, 219, 232}, + {54, 264, 232}, + {55, 265, 232}, + }}, + { .v = { + {281, 217, 233}, + {282, 218, 233}, + {55, 265, 233}, + {56, 266, 233}, + }}, + { .v = { + {280, 216, 234}, + {281, 217, 234}, + {56, 266, 234}, + {57, 267, 234}, + }}, + { .v = { + {279, 215, 235}, + {280, 216, 235}, + {57, 267, 235}, + {58, 268, 235}, + }}, + { .v = { + {278, 214, 236}, + {279, 215, 236}, + {58, 268, 236}, + {59, 269, 236}, + }}, + { .v = { + {277, 213, 237}, + {278, 214, 237}, + {59, 269, 237}, + {60, 270, 237}, + }}, + { .v = { + {276, 212, 238}, + {277, 213, 238}, + {60, 270, 238}, + {61, 271, 238}, + }}, + { .v = { + {275, 210, 239}, + {276, 212, 239}, + {61, 271, 239}, + {62, 272, 239}, + }}, + { .v = { + {274, 211, 240}, + {275, 210, 240}, + {62, 272, 240}, + {63, 273, 240}, + }}, + { .v = { + {4, 274, 241}, + {274, 211, 241}, + {63, 273, 241}, + {2, 275, 241}, + }}, + { .v = { + {5, 276, 242}, + {259, 196, 242}, + {274, 211, 242}, + {4, 274, 242}, + }}, + { .v = { + {6, 277, 243}, + {244, 181, 243}, + {259, 196, 243}, + {5, 276, 243}, + }}, + { .v = { + {7, 278, 244}, + {229, 166, 244}, + {244, 181, 244}, + {6, 277, 244}, + }}, + { .v = { + {8, 279, 245}, + {214, 151, 245}, + {229, 166, 245}, + {7, 278, 245}, + }}, + { .v = { + {9, 280, 246}, + {199, 136, 246}, + {214, 151, 246}, + {8, 279, 246}, + }}, + { .v = { + {10, 281, 247}, + {184, 121, 247}, + {199, 136, 247}, + {9, 280, 247}, + }}, + { .v = { + {11, 282, 248}, + {169, 106, 248}, + {184, 121, 248}, + {10, 281, 248}, + }}, + { .v = { + {12, 283, 249}, + {154, 91, 249}, + {169, 106, 249}, + {11, 282, 249}, + }}, + { .v = { + {13, 284, 250}, + {139, 76, 250}, + {154, 91, 250}, + {12, 283, 250}, + }}, + { .v = { + {14, 285, 251}, + {124, 61, 251}, + {139, 76, 251}, + {13, 284, 251}, + }}, + { .v = { + {15, 286, 252}, + {109, 46, 252}, + {124, 61, 252}, + {14, 285, 252}, + }}, + { .v = { + {16, 287, 253}, + {94, 31, 253}, + {109, 46, 253}, + {15, 286, 253}, + }}, + { .v = { + {17, 288, 254}, + {79, 3, 254}, + {94, 31, 254}, + {16, 287, 254}, + }}, + { .v = { + {18, 227, 255}, + {64, 0, 255}, + {79, 3, 255}, + {17, 288, 255}, + }}, +}; + +const struct object plane_Plane = { + .triangle = NULL, + .quadrilateral = &plane_Plane_quadrilateral[0], + .triangle_count = 0, + .quadrilateral_count = 256, + .material = -1, +}; + +const struct object * plane_object_list[] = { + &plane_Plane, +}; + +const struct model plane_model = { + .position = &plane_position[0], + .texture = &plane_texture[0], + .normal = &plane_normal[0], + .object = &plane_object_list[0], + .object_count = 1, +}; + diff --git a/model/plane/plane.blend b/model/plane/plane.blend new file mode 100644 index 0000000000000000000000000000000000000000..87c0aec30e45a2a41751253c422bcbf0d09aeb89 GIT binary patch literal 558541 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%0D}XgOTV8A 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 literal 0 HcmV?d00001 diff --git a/model/plane/plane.mtl b/model/plane/plane.mtl new file mode 100644 index 0000000..6371c06 --- /dev/null +++ b/model/plane/plane.mtl @@ -0,0 +1,2 @@ +# Blender 4.3.2 MTL File: 'plane.blend' +# www.blender.org diff --git a/model/plane/plane.obj b/model/plane/plane.obj new file mode 100644 index 0000000..f8e69d0 --- /dev/null +++ b/model/plane/plane.obj @@ -0,0 +1,1095 @@ +# Blender 4.3.2 +# www.blender.org +mtllib plane.mtl +o Plane +v -1.000000 1.000000 0.500000 +v -1.000000 -1.000000 0.500000 +v 1.000000 1.000000 0.500000 +v 1.000000 -1.000000 0.500000 +v 0.875000 1.000000 0.572594 +v 0.750000 1.000000 0.562882 +v 0.625000 1.000000 0.573245 +v 0.500000 1.000000 0.570143 +v 0.375000 1.000000 0.533738 +v 0.250000 1.000000 0.521783 +v 0.125000 1.000000 0.483391 +v 0.000000 1.000000 0.500000 +v -0.125000 1.000000 0.527500 +v -0.250000 1.000000 0.513289 +v -0.375000 1.000000 0.462632 +v -0.500000 1.000000 0.429857 +v -0.625000 1.000000 0.430386 +v -0.750000 1.000000 0.402047 +v -0.875000 1.000000 0.416515 +v -1.000000 0.875000 0.467632 +v -1.000000 0.750000 0.443146 +v -1.000000 0.625000 0.455371 +v -1.000000 0.500000 0.429857 +v -1.000000 0.375000 0.448538 +v -1.000000 0.250000 0.507261 +v -1.000000 0.125000 0.525360 +v -1.000000 0.000000 0.500000 +v -1.000000 -0.125000 0.489473 +v -1.000000 -0.250000 0.549593 +v -1.000000 -0.375000 0.631163 +v -1.000000 -0.500000 0.640286 +v -1.000000 -0.625000 0.600338 +v -1.000000 -0.750000 0.619736 +v -1.000000 -0.875000 0.569890 +v -0.875000 -1.000000 0.493045 +v -0.750000 -1.000000 0.478217 +v -0.625000 -1.000000 0.489826 +v -0.500000 -1.000000 0.429857 +v -0.375000 -1.000000 0.368120 +v -0.250000 -1.000000 0.437118 +v -0.125000 -1.000000 0.503577 +v 0.000000 -1.000000 0.500000 +v 0.125000 -1.000000 0.496117 +v 0.250000 -1.000000 0.514522 +v 0.375000 -1.000000 0.582186 +v 0.500000 -1.000000 0.640286 +v 0.625000 -1.000000 0.645068 +v 0.750000 -1.000000 0.584665 +v 0.875000 -1.000000 0.500364 +v 1.000000 -0.875000 0.511765 +v 1.000000 -0.750000 0.529044 +v 1.000000 -0.625000 0.531869 +v 1.000000 -0.500000 0.500000 +v 1.000000 -0.375000 0.468131 +v 1.000000 -0.250000 0.470956 +v 1.000000 -0.125000 0.488235 +v 1.000000 0.000000 0.500000 +v 1.000000 0.125000 0.514468 +v 1.000000 0.250000 0.472189 +v 1.000000 0.375000 0.434633 +v 1.000000 0.500000 0.429857 +v 1.000000 0.625000 0.405778 +v 1.000000 0.750000 0.443146 +v 1.000000 0.875000 0.499690 +v -0.875000 0.875000 0.416640 +v -0.875000 0.750000 0.391670 +v -0.875000 0.625000 0.371579 +v -0.875000 0.500000 0.361486 +v -0.875000 0.375000 0.393825 +v -0.875000 0.250000 0.451033 +v -0.875000 0.125000 0.475818 +v -0.875000 -0.000000 0.458541 +v -0.875000 -0.125000 0.460910 +v -0.875000 -0.250000 0.525519 +v -0.875000 -0.375000 0.584600 +v -0.875000 -0.500000 0.581568 +v -0.875000 -0.625000 0.593727 +v -0.875000 -0.750000 0.607657 +v -0.875000 -0.875000 0.541674 +v -0.750000 0.875000 0.433877 +v -0.750000 0.750000 0.408819 +v -0.750000 0.625000 0.376302 +v -0.750000 0.500000 0.392388 +v -0.750000 0.375000 0.401627 +v -0.750000 0.250000 0.402528 +v -0.750000 0.125000 0.419563 +v -0.750000 0.000000 0.423829 +v -0.750000 -0.125000 0.438850 +v -0.750000 -0.250000 0.499474 +v -0.750000 -0.375000 0.569034 +v -0.750000 -0.500000 0.587062 +v -0.750000 -0.625000 0.615338 +v -0.750000 -0.750000 0.580680 +v -0.750000 -0.875000 0.494899 +v -0.625000 0.875000 0.441811 +v -0.625000 0.750000 0.427823 +v -0.625000 0.625000 0.438068 +v -0.625000 0.500000 0.471957 +v -0.625000 0.375000 0.435283 +v -0.625000 0.250000 0.380262 +v -0.625000 0.125000 0.406204 +v -0.625000 0.000000 0.440560 +v -0.625000 -0.125000 0.470032 +v -0.625000 -0.250000 0.516197 +v -0.625000 -0.375000 0.556547 +v -0.625000 -0.500000 0.564795 +v -0.625000 -0.625000 0.567675 +v -0.625000 -0.750000 0.518446 +v -0.625000 -0.875000 0.468933 +v -0.500000 0.875000 0.460172 +v -0.500000 0.750000 0.492739 +v -0.500000 0.625000 0.474052 +v -0.500000 0.500000 0.464929 +v -0.500000 0.375000 0.455805 +v -0.500000 0.250000 0.437118 +v -0.500000 0.125000 0.469685 +v -0.500000 -0.000000 0.500000 +v -0.500000 -0.125000 0.519142 +v -0.500000 -0.250000 0.524180 +v -0.500000 -0.375000 0.515811 +v -0.500000 -0.500000 0.500000 +v -0.500000 -0.625000 0.504732 +v -0.500000 -0.750000 0.483081 +v -0.500000 -0.875000 0.426309 +v -0.375000 0.875000 0.500564 +v -0.375000 0.750000 0.511306 +v -0.375000 0.625000 0.493172 +v -0.375000 0.500000 0.461537 +v -0.375000 0.375000 0.453495 +v -0.375000 0.250000 0.487146 +v -0.375000 0.125000 0.523389 +v -0.375000 0.000000 0.535260 +v -0.375000 -0.125000 0.580528 +v -0.375000 -0.250000 0.547700 +v -0.375000 -0.375000 0.463010 +v -0.375000 -0.500000 0.449734 +v -0.375000 -0.625000 0.467629 +v -0.375000 -0.750000 0.456405 +v -0.375000 -0.875000 0.382664 +v -0.250000 0.875000 0.544210 +v -0.250000 0.750000 0.521309 +v -0.250000 0.625000 0.524437 +v -0.250000 0.500000 0.495137 +v -0.250000 0.375000 0.473300 +v -0.250000 0.250000 0.530073 +v -0.250000 0.125000 0.587212 +v -0.250000 0.000000 0.611242 +v -0.250000 -0.125000 0.637214 +v -0.250000 -0.250000 0.537108 +v -0.250000 -0.375000 0.402307 +v -0.250000 -0.500000 0.405677 +v -0.250000 -0.625000 0.427795 +v -0.250000 -0.750000 0.417809 +v -0.250000 -0.875000 0.401556 +v -0.125000 0.875000 0.539032 +v -0.125000 0.750000 0.527898 +v -0.125000 0.625000 0.535597 +v -0.125000 0.500000 0.521336 +v -0.125000 0.375000 0.498451 +v -0.125000 0.250000 0.526253 +v -0.125000 0.125000 0.562764 +v -0.125000 0.000000 0.572900 +v -0.125000 -0.125000 0.583635 +v -0.125000 -0.250000 0.501942 +v -0.125000 -0.375000 0.397401 +v -0.125000 -0.500000 0.402838 +v -0.125000 -0.625000 0.407866 +v -0.125000 -0.750000 0.416544 +v -0.125000 -0.875000 0.443849 +v 0.000000 0.875000 0.506081 +v -0.000000 0.750000 0.527811 +v 0.000000 0.625000 0.562353 +v -0.000000 0.500000 0.570143 +v -0.000000 0.375000 0.533738 +v 0.000000 0.250000 0.521783 +v -0.000000 0.125000 0.518463 +v -0.000000 -0.000000 0.500000 +v -0.000000 -0.125000 0.516609 +v -0.000000 -0.250000 0.478217 +v 0.000000 -0.375000 0.413655 +v -0.000000 -0.500000 0.429857 +v -0.000000 -0.625000 0.437647 +v -0.000000 -0.750000 0.472189 +v -0.000000 -0.875000 0.476383 +v 0.125000 0.875000 0.504452 +v 0.125000 0.750000 0.529635 +v 0.125000 0.625000 0.561284 +v 0.125000 0.500000 0.588722 +v 0.125000 0.375000 0.574986 +v 0.125000 0.250000 0.523249 +v 0.125000 0.125000 0.460527 +v 0.125000 0.000000 0.430110 +v 0.125000 -0.125000 0.427717 +v 0.125000 -0.250000 0.408221 +v 0.125000 -0.375000 0.418387 +v 0.125000 -0.500000 0.448519 +v 0.125000 -0.625000 0.477629 +v 0.125000 -0.750000 0.499398 +v 0.125000 -0.875000 0.466943 +v 0.250000 0.875000 0.555431 +v 0.250000 0.750000 0.547346 +v 0.250000 0.625000 0.512325 +v 0.250000 0.500000 0.524180 +v 0.250000 0.375000 0.525347 +v 0.250000 0.250000 0.456909 +v 0.250000 0.125000 0.396455 +v 0.250000 -0.000000 0.380264 +v 0.250000 -0.125000 0.357817 +v 0.250000 -0.250000 0.364983 +v 0.250000 -0.375000 0.421570 +v 0.250000 -0.500000 0.437118 +v 0.250000 -0.625000 0.490981 +v 0.250000 -0.750000 0.506509 +v 0.250000 -0.875000 0.460784 +v 0.375000 0.875000 0.611771 +v 0.375000 0.750000 0.601397 +v 0.375000 0.625000 0.504728 +v 0.375000 0.500000 0.490392 +v 0.375000 0.375000 0.466318 +v 0.375000 0.250000 0.403939 +v 0.375000 0.125000 0.395547 +v 0.375000 0.000000 0.399662 +v 0.375000 -0.125000 0.365752 +v 0.375000 -0.250000 0.363528 +v 0.375000 -0.375000 0.410612 +v 0.375000 -0.500000 0.431625 +v 0.375000 -0.625000 0.493760 +v 0.375000 -0.750000 0.538221 +v 0.375000 -0.875000 0.542502 +v 0.500000 0.875000 0.620134 +v 0.500000 0.750000 0.568910 +v 0.500000 0.625000 0.470610 +v 0.500000 0.500000 0.464929 +v 0.500000 0.375000 0.463494 +v 0.500000 0.250000 0.431090 +v 0.500000 0.125000 0.390141 +v 0.500000 0.000000 0.359714 +v 0.500000 -0.125000 0.335199 +v 0.500000 -0.250000 0.328273 +v 0.500000 -0.375000 0.402003 +v 0.500000 -0.500000 0.464929 +v 0.500000 -0.625000 0.524847 +v 0.500000 -0.750000 0.594323 +v 0.500000 -0.875000 0.631671 +v 0.625000 0.875000 0.587317 +v 0.625000 0.750000 0.535827 +v 0.625000 0.625000 0.468686 +v 0.625000 0.500000 0.464885 +v 0.625000 0.375000 0.462655 +v 0.625000 0.250000 0.428025 +v 0.625000 0.125000 0.370810 +v 0.625000 0.000000 0.329519 +v 0.625000 -0.125000 0.312255 +v 0.625000 -0.250000 0.344021 +v 0.625000 -0.375000 0.424111 +v 0.625000 -0.500000 0.469805 +v 0.625000 -0.625000 0.539633 +v 0.625000 -0.750000 0.630247 +v 0.625000 -0.875000 0.655381 +v 0.750000 0.875000 0.555107 +v 0.750000 0.750000 0.517054 +v 0.750000 0.625000 0.453650 +v 0.750000 0.500000 0.433488 +v 0.750000 0.375000 0.433089 +v 0.750000 0.250000 0.411562 +v 0.750000 0.125000 0.392621 +v 0.750000 0.000000 0.380264 +v 0.750000 -0.125000 0.332574 +v 0.750000 -0.250000 0.362239 +v 0.750000 -0.375000 0.439709 +v 0.750000 -0.500000 0.457668 +v 0.750000 -0.625000 0.492979 +v 0.750000 -0.750000 0.558854 +v 0.750000 -0.875000 0.591488 +v 0.875000 0.875000 0.537785 +v 0.875000 0.750000 0.457556 +v 0.875000 0.625000 0.396143 +v 0.875000 0.500000 0.392053 +v 0.875000 0.375000 0.408606 +v 0.875000 0.250000 0.437822 +v 0.875000 0.125000 0.466157 +v 0.875000 0.000000 0.465181 +v 0.875000 -0.125000 0.419025 +v 0.875000 -0.250000 0.408017 +v 0.875000 -0.375000 0.444483 +v 0.875000 -0.500000 0.467433 +v 0.875000 -0.625000 0.499404 +v 0.875000 -0.750000 0.529557 +v 0.875000 -0.875000 0.523985 +vn -0.1337 -0.1945 0.9718 +vn -0.0853 -0.2052 0.9750 +vn -0.1410 0.0237 0.9897 +vn -0.1510 0.1622 0.9751 +vn 0.1566 0.2236 0.9620 +vn 0.3820 0.1525 0.9115 +vn 0.3415 -0.0488 0.9386 +vn 0.2209 0.0677 0.9729 +vn 0.1696 0.4414 0.8811 +vn 0.1464 0.4526 0.8796 +vn 0.0402 0.0598 0.9974 +vn -0.1064 0.1588 0.9816 +vn 0.0214 -0.0826 0.9964 +vn 0.2445 -0.5032 0.8289 +vn -0.1059 -0.1534 0.9825 +vn -0.3063 -0.0845 0.9482 +vn -0.4849 0.1714 0.8576 +vn -0.4105 -0.0995 0.9064 +vn -0.0445 -0.2114 0.9764 +vn 0.1391 0.1678 0.9760 +vn -0.0133 0.1527 0.9882 +vn -0.1854 0.1722 0.9675 +vn -0.1735 0.3869 0.9057 +vn -0.0155 0.4024 0.9153 +vn 0.1370 0.1035 0.9852 +vn 0.2675 0.1192 0.9562 +vn 0.3847 -0.2936 0.8751 +vn 0.2963 -0.4546 0.8400 +vn -0.3153 0.0703 0.9464 +vn -0.3741 -0.0313 0.9269 +vn -0.1145 0.0979 0.9886 +vn -0.0530 -0.1799 0.9822 +vn -0.2846 -0.2711 0.9195 +vn -0.4244 0.2063 0.8817 +vn -0.4298 0.2261 0.8741 +vn -0.3921 0.1756 0.9030 +vn -0.2183 0.1958 0.9560 +vn 0.1289 0.1258 0.9836 +vn 0.3887 -0.0279 0.9209 +vn 0.4548 0.0271 0.8902 +vn 0.3538 -0.2551 0.8998 +vn 0.2759 -0.3761 0.8846 +vn -0.2263 0.1663 0.9598 +vn -0.1475 -0.1441 0.9785 +vn -0.0620 -0.1606 0.9851 +vn 0.0227 -0.0685 0.9974 +vn -0.1872 0.0587 0.9806 +vn -0.3714 0.2464 0.8952 +vn -0.3311 0.1570 0.9304 +vn -0.3506 0.2337 0.9069 +vn -0.3198 -0.1047 0.9417 +vn 0.1091 -0.3468 0.9316 +vn 0.3790 -0.1070 0.9192 +vn 0.3287 0.0851 0.9406 +vn 0.2452 -0.1264 0.9612 +vn 0.2419 -0.4490 0.8601 +vn -0.2096 -0.0475 0.9766 +vn -0.1626 -0.0591 0.9849 +vn -0.2444 -0.2296 0.9421 +vn -0.2075 -0.1161 0.9713 +vn -0.2297 0.3310 0.9152 +vn -0.3714 0.3249 0.8698 +vn -0.4843 0.1244 0.8660 +vn -0.4546 0.2441 0.8566 +vn -0.1607 -0.4634 0.8715 +vn 0.2095 -0.6451 0.7348 +vn 0.3862 -0.0365 0.9217 +vn 0.3145 0.1500 0.9373 +vn 0.2984 -0.0807 0.9510 +vn 0.0740 -0.3378 0.9383 +vn -0.0056 -0.1349 0.9908 +vn -0.0708 0.0432 0.9966 +vn -0.1457 -0.1698 0.9747 +vn -0.1982 -0.1726 0.9648 +vn -0.0806 0.3194 0.9442 +vn 0.1053 0.3488 0.9312 +vn 0.2415 0.1314 0.9615 +vn 0.3419 0.1365 0.9298 +vn 0.2759 -0.5653 0.7774 +vn 0.1150 -0.6870 0.7175 +vn 0.0309 0.0352 0.9989 +vn 0.0902 0.1075 0.9901 +vn 0.0845 -0.0052 0.9964 +vn -0.1618 0.0436 0.9859 +vn 0.1309 0.0420 0.9905 +vn -0.1046 0.1657 0.9806 +vn -0.2892 -0.0248 0.9569 +vn -0.3111 -0.2193 0.9247 +vn -0.1221 0.0628 0.9905 +vn 0.1899 0.1292 0.9733 +vn 0.4243 -0.0301 0.9050 +vn 0.4862 0.0950 0.8687 +vn 0.3110 -0.4115 0.8567 +vn 0.0247 -0.5601 0.8281 +vn -0.1699 0.0850 0.9818 +vn -0.2213 0.0499 0.9739 +vn -0.3191 0.1614 0.9339 +vn -0.3303 0.1180 0.9365 +vn -0.0008 0.1844 0.9828 +vn -0.0029 0.2559 0.9667 +vn -0.0692 0.1392 0.9878 +vn -0.2284 -0.1915 0.9545 +vn -0.1633 -0.2436 0.9560 +vn 0.2134 -0.2495 0.9446 +vn 0.4485 -0.1715 0.8772 +vn 0.5355 0.0479 0.8432 +vn 0.5264 -0.1918 0.8283 +vn 0.2472 -0.2060 0.9468 +vn -0.0916 0.1815 0.9791 +vn -0.2261 0.1422 0.9637 +vn -0.2536 0.2126 0.9437 +vn -0.0704 -0.1121 0.9912 +vn -0.2644 0.0658 0.9622 +vn 0.1240 -0.0134 0.9922 +vn 0.4092 0.1417 0.9014 +vn 0.4150 -0.0457 0.9087 +vn 0.3858 -0.3997 0.8315 +vn 0.4238 -0.4003 0.8125 +vn 0.4088 -0.1673 0.8972 +vn 0.4303 -0.0893 0.8983 +vn 0.4119 -0.0449 0.9101 +vn 0.1530 0.2549 0.9548 +vn 0.0323 0.1796 0.9832 +vn -0.0074 0.3150 0.9491 +vn -0.0807 0.1471 0.9858 +vn -0.0036 -0.2985 0.9544 +vn -0.4030 -0.0674 0.9127 +vn -0.1622 -0.4599 0.8730 +vn 0.1633 -0.0098 0.9865 +vn 0.3468 -0.0856 0.9340 +vn 0.3689 -0.4309 0.8235 +vn 0.2034 -0.2599 0.9440 +vn -0.0737 -0.0481 0.9961 +vn -0.1061 -0.2187 0.9700 +vn -0.0259 0.0198 0.9995 +vn 0.0458 0.3827 0.9228 +vn 0.0650 0.1444 0.9874 +vn 0.0098 0.4209 0.9071 +vn -0.1330 0.2313 0.9638 +vn -0.4086 -0.1493 0.9004 +vn 0.0933 -0.2382 0.9667 +vn 0.2056 -0.6018 0.7717 +vn 0.2311 -0.0777 0.9698 +vn 0.1119 -0.1009 0.9886 +vn -0.0906 -0.3531 0.9312 +vn -0.0850 -0.1929 0.9775 +vn 0.1776 -0.1030 0.9787 +vn 0.2648 -0.2194 0.9390 +vn 0.2544 -0.0354 0.9665 +vn 0.1560 0.4298 0.8893 +vn -0.0932 0.3169 0.9439 +vn -0.2255 0.4274 0.8755 +vn -0.3025 0.3953 0.8673 +vn -0.4973 0.1425 0.8558 +vn 0.2369 -0.3692 0.8986 +vn 0.1160 -0.5481 0.8283 +vn 0.0079 -0.0379 0.9993 +vn 0.0035 -0.0147 0.9999 +vn 0.0151 -0.2590 0.9658 +vn 0.0831 -0.3642 0.9276 +vn 0.1871 -0.2709 0.9443 +vn 0.2052 -0.1613 0.9653 +vn 0.0286 0.0988 0.9947 +vn -0.1279 0.5197 0.8447 +vn -0.0985 0.3966 0.9127 +vn -0.0696 0.4595 0.8854 +vn -0.1684 0.5316 0.8301 +vn -0.2255 0.2362 0.9452 +vn 0.1885 -0.3311 0.9246 +vn 0.1190 -0.4596 0.8801 +vn 0.1818 -0.0938 0.9788 +vn 0.2369 -0.0102 0.9715 +vn 0.1768 -0.2157 0.9603 +vn -0.0205 -0.2913 0.9564 +vn -0.2730 -0.2018 0.9406 +vn -0.2653 -0.2425 0.9332 +vn -0.1480 0.2360 0.9604 +vn -0.1137 0.5297 0.8405 +vn -0.0134 0.2467 0.9690 +vn 0.2119 0.3789 0.9009 +vn 0.3716 0.4926 0.7869 +vn 0.4664 0.1992 0.8619 +vn 0.2676 -0.4121 0.8710 +vn 0.3862 -0.4120 0.8253 +vn 0.3665 -0.0898 0.9261 +vn 0.2545 0.0624 0.9651 +vn -0.0071 0.0307 0.9995 +vn -0.3705 0.0349 0.9282 +vn -0.5348 -0.0450 0.8438 +vn -0.5401 -0.2958 0.7879 +vn -0.4665 0.0658 0.8821 +vn -0.1810 0.4079 0.8949 +vn -0.0573 0.1612 0.9853 +vn -0.0624 0.2594 0.9638 +vn 0.0851 0.3573 0.9301 +vn 0.3593 0.1004 0.9278 +vn 0.4707 -0.1129 0.8750 +vn 0.3731 -0.1801 0.9102 +vn 0.4757 -0.0277 0.8792 +vn 0.5161 -0.1208 0.8480 +vn 0.4345 0.1801 0.8825 +vn 0.3735 0.3903 0.8416 +vn 0.3849 0.1560 0.9097 +vn 0.3377 -0.1582 0.9278 +vn 0.2696 -0.0314 0.9625 +vn 0.1851 0.4387 0.8793 +vn 0.2391 0.4761 0.8463 +vn 0.3880 0.0225 0.9214 +vn 0.2514 -0.1069 0.9620 +vn 0.0739 0.1318 0.9885 +vn 0.1447 -0.4160 0.8978 +vn 0.1261 -0.4250 0.8964 +vn 0.2319 -0.2459 0.9412 +vn 0.0573 0.0168 0.9982 +vn 0.3781 0.0901 0.9214 +vn 0.3881 -0.0405 0.9207 +vn -0.3306 0.0791 0.9404 +vn -0.3766 0.3299 0.8656 +vn -0.1092 0.3144 0.9430 +vn 0.0521 0.2063 0.9771 +vn -0.0464 0.3144 0.9481 +vn -0.4884 0.3055 0.8174 +vn -0.5007 0.1642 0.8499 +vn -0.1132 -0.0067 0.9935 +vn 0.4444 -0.0613 0.8938 +vn 0.5162 -0.1035 0.8502 +vn 0.0498 -0.1400 0.9889 +vn 0.0507 -0.0909 0.9946 +vn -0.1260 0.1078 0.9862 +vn -0.2444 0.2399 0.9395 +vn -0.2145 0.2092 0.9541 +vn -0.3247 0.1261 0.9374 +vn -0.4650 -0.0995 0.8797 +vn -0.3757 -0.2092 0.9028 +vn -0.3150 -0.0585 0.9473 +vn -0.3033 0.2590 0.9170 +vn -0.2273 0.2513 0.9408 +vn -0.2465 0.0824 0.9656 +vn -0.1859 0.0783 0.9795 +vn 0.0178 -0.3674 0.9299 +vn 0.1812 -0.4720 0.8628 +vn 0.4016 -0.1274 0.9069 +vn 0.0300 -0.1678 0.9854 +vn 0.1678 0.0248 0.9855 +vn 0.1144 0.2466 0.9623 +vn -0.1574 0.4501 0.8790 +vn -0.2420 0.3958 0.8859 +vn -0.3297 0.2018 0.9223 +vn 0.0723 0.1077 0.9916 +vn 0.2345 0.0683 0.9697 +vn -0.0356 0.1673 0.9853 +vn -0.3418 0.2495 0.9060 +vn -0.2717 0.2534 0.9284 +vn -0.0702 0.1643 0.9839 +vn -0.1415 0.1688 0.9754 +vn -0.0110 0.1268 0.9919 +vt 0.062500 0.062500 +vt 0.125000 0.062500 +vt 0.125000 0.125000 +vt 0.062500 0.125000 +vt 0.187500 0.062500 +vt 0.187500 0.125000 +vt 0.250000 0.062500 +vt 0.250000 0.125000 +vt 0.312500 0.062500 +vt 0.312500 0.125000 +vt 0.375000 0.062500 +vt 0.375000 0.125000 +vt 0.437500 0.062500 +vt 0.437500 0.125000 +vt 0.500000 0.062500 +vt 0.500000 0.125000 +vt 0.562500 0.062500 +vt 0.562500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.687500 0.062500 +vt 0.687500 0.125000 +vt 0.750000 0.062500 +vt 0.750000 0.125000 +vt 0.812500 0.062500 +vt 0.812500 0.125000 +vt 0.875000 0.062500 +vt 0.875000 0.125000 +vt 0.937500 0.062500 +vt 0.937500 0.125000 +vt 0.125000 0.187500 +vt 0.062500 0.187500 +vt 0.187500 0.187500 +vt 0.250000 0.187500 +vt 0.312500 0.187500 +vt 0.375000 0.187500 +vt 0.437500 0.187500 +vt 0.500000 0.187500 +vt 0.562500 0.187500 +vt 0.625000 0.187500 +vt 0.687500 0.187500 +vt 0.750000 0.187500 +vt 0.812500 0.187500 +vt 0.875000 0.187500 +vt 0.937500 0.187500 +vt 0.125000 0.250000 +vt 0.062500 0.250000 +vt 0.187500 0.250000 +vt 0.250000 0.250000 +vt 0.312500 0.250000 +vt 0.375000 0.250000 +vt 0.437500 0.250000 +vt 0.500000 0.250000 +vt 0.562500 0.250000 +vt 0.625000 0.250000 +vt 0.687500 0.250000 +vt 0.750000 0.250000 +vt 0.812500 0.250000 +vt 0.875000 0.250000 +vt 0.937500 0.250000 +vt 0.125000 0.312500 +vt 0.062500 0.312500 +vt 0.187500 0.312500 +vt 0.250000 0.312500 +vt 0.312500 0.312500 +vt 0.375000 0.312500 +vt 0.437500 0.312500 +vt 0.500000 0.312500 +vt 0.562500 0.312500 +vt 0.625000 0.312500 +vt 0.687500 0.312500 +vt 0.750000 0.312500 +vt 0.812500 0.312500 +vt 0.875000 0.312500 +vt 0.937500 0.312500 +vt 0.125000 0.375000 +vt 0.062500 0.375000 +vt 0.187500 0.375000 +vt 0.250000 0.375000 +vt 0.312500 0.375000 +vt 0.375000 0.375000 +vt 0.437500 0.375000 +vt 0.500000 0.375000 +vt 0.562500 0.375000 +vt 0.625000 0.375000 +vt 0.687500 0.375000 +vt 0.750000 0.375000 +vt 0.812500 0.375000 +vt 0.875000 0.375000 +vt 0.937500 0.375000 +vt 0.125000 0.437500 +vt 0.062500 0.437500 +vt 0.187500 0.437500 +vt 0.250000 0.437500 +vt 0.312500 0.437500 +vt 0.375000 0.437500 +vt 0.437500 0.437500 +vt 0.500000 0.437500 +vt 0.562500 0.437500 +vt 0.625000 0.437500 +vt 0.687500 0.437500 +vt 0.750000 0.437500 +vt 0.812500 0.437500 +vt 0.875000 0.437500 +vt 0.937500 0.437500 +vt 0.125000 0.500000 +vt 0.062500 0.500000 +vt 0.187500 0.500000 +vt 0.250000 0.500000 +vt 0.312500 0.500000 +vt 0.375000 0.500000 +vt 0.437500 0.500000 +vt 0.500000 0.500000 +vt 0.562500 0.500000 +vt 0.625000 0.500000 +vt 0.687500 0.500000 +vt 0.750000 0.500000 +vt 0.812500 0.500000 +vt 0.875000 0.500000 +vt 0.937500 0.500000 +vt 0.125000 0.562500 +vt 0.062500 0.562500 +vt 0.187500 0.562500 +vt 0.250000 0.562500 +vt 0.312500 0.562500 +vt 0.375000 0.562500 +vt 0.437500 0.562500 +vt 0.500000 0.562500 +vt 0.562500 0.562500 +vt 0.625000 0.562500 +vt 0.687500 0.562500 +vt 0.750000 0.562500 +vt 0.812500 0.562500 +vt 0.875000 0.562500 +vt 0.937500 0.562500 +vt 0.125000 0.625000 +vt 0.062500 0.625000 +vt 0.187500 0.625000 +vt 0.250000 0.625000 +vt 0.312500 0.625000 +vt 0.375000 0.625000 +vt 0.437500 0.625000 +vt 0.500000 0.625000 +vt 0.562500 0.625000 +vt 0.625000 0.625000 +vt 0.687500 0.625000 +vt 0.750000 0.625000 +vt 0.812500 0.625000 +vt 0.875000 0.625000 +vt 0.937500 0.625000 +vt 0.125000 0.687500 +vt 0.062500 0.687500 +vt 0.187500 0.687500 +vt 0.250000 0.687500 +vt 0.312500 0.687500 +vt 0.375000 0.687500 +vt 0.437500 0.687500 +vt 0.500000 0.687500 +vt 0.562500 0.687500 +vt 0.625000 0.687500 +vt 0.687500 0.687500 +vt 0.750000 0.687500 +vt 0.812500 0.687500 +vt 0.875000 0.687500 +vt 0.937500 0.687500 +vt 0.125000 0.750000 +vt 0.062500 0.750000 +vt 0.187500 0.750000 +vt 0.250000 0.750000 +vt 0.312500 0.750000 +vt 0.375000 0.750000 +vt 0.437500 0.750000 +vt 0.500000 0.750000 +vt 0.562500 0.750000 +vt 0.625000 0.750000 +vt 0.687500 0.750000 +vt 0.750000 0.750000 +vt 0.812500 0.750000 +vt 0.875000 0.750000 +vt 0.937500 0.750000 +vt 0.125000 0.812500 +vt 0.062500 0.812500 +vt 0.187500 0.812500 +vt 0.250000 0.812500 +vt 0.312500 0.812500 +vt 0.375000 0.812500 +vt 0.437500 0.812500 +vt 0.500000 0.812500 +vt 0.562500 0.812500 +vt 0.625000 0.812500 +vt 0.687500 0.812500 +vt 0.750000 0.812500 +vt 0.812500 0.812500 +vt 0.875000 0.812500 +vt 0.937500 0.812500 +vt 0.125000 0.875000 +vt 0.062500 0.875000 +vt 0.187500 0.875000 +vt 0.250000 0.875000 +vt 0.312500 0.875000 +vt 0.375000 0.875000 +vt 0.437500 0.875000 +vt 0.500000 0.875000 +vt 0.562500 0.875000 +vt 0.625000 0.875000 +vt 0.687500 0.875000 +vt 0.750000 0.875000 +vt 0.812500 0.875000 +vt 0.875000 0.875000 +vt 0.937500 0.875000 +vt 0.125000 0.937500 +vt 0.062500 0.937500 +vt 0.187500 0.937500 +vt 0.250000 0.937500 +vt 0.312500 0.937500 +vt 0.375000 0.937500 +vt 0.437500 0.937500 +vt 0.500000 0.937500 +vt 0.562500 0.937500 +vt 0.625000 0.937500 +vt 0.687500 0.937500 +vt 0.750000 0.937500 +vt 0.812500 0.937500 +vt 0.875000 0.937500 +vt 0.937500 0.937500 +vt 0.000000 0.000000 +vt 0.062500 0.000000 +vt 0.000000 0.062500 +vt 0.125000 0.000000 +vt 0.187500 0.000000 +vt 0.250000 0.000000 +vt 0.312500 0.000000 +vt 0.375000 0.000000 +vt 0.437500 0.000000 +vt 0.500000 0.000000 +vt 0.562500 0.000000 +vt 0.625000 0.000000 +vt 0.687500 0.000000 +vt 0.750000 0.000000 +vt 0.812500 0.000000 +vt 0.875000 0.000000 +vt 0.937500 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.062500 +vt 1.000000 0.125000 +vt 1.000000 0.187500 +vt 1.000000 0.250000 +vt 1.000000 0.312500 +vt 1.000000 0.375000 +vt 1.000000 0.437500 +vt 1.000000 0.500000 +vt 1.000000 0.562500 +vt 1.000000 0.625000 +vt 1.000000 0.687500 +vt 1.000000 0.750000 +vt 1.000000 0.812500 +vt 1.000000 0.875000 +vt 1.000000 0.937500 +vt 1.000000 1.000000 +vt 0.937500 1.000000 +vt 0.875000 1.000000 +vt 0.812500 1.000000 +vt 0.750000 1.000000 +vt 0.687500 1.000000 +vt 0.625000 1.000000 +vt 0.562500 1.000000 +vt 0.500000 1.000000 +vt 0.437500 1.000000 +vt 0.375000 1.000000 +vt 0.312500 1.000000 +vt 0.250000 1.000000 +vt 0.187500 1.000000 +vt 0.125000 1.000000 +vt 0.062500 1.000000 +vt 0.000000 0.937500 +vt 0.000000 1.000000 +vt 0.000000 0.875000 +vt 0.000000 0.812500 +vt 0.000000 0.750000 +vt 0.000000 0.687500 +vt 0.000000 0.625000 +vt 0.000000 0.562500 +vt 0.000000 0.500000 +vt 0.000000 0.437500 +vt 0.000000 0.375000 +vt 0.000000 0.312500 +vt 0.000000 0.250000 +vt 0.000000 0.187500 +vt 0.000000 0.125000 +s 0 +f 65/1/1 66/2/1 81/3/1 80/4/1 +f 66/2/2 67/5/2 82/6/2 81/3/2 +f 67/5/3 68/7/3 83/8/3 82/6/3 +f 68/7/4 69/9/4 84/10/4 83/8/4 +f 69/9/5 70/11/5 85/12/5 84/10/5 +f 70/11/6 71/13/6 86/14/6 85/12/6 +f 71/13/7 72/15/7 87/16/7 86/14/7 +f 72/15/8 73/17/8 88/18/8 87/16/8 +f 73/17/9 74/19/9 89/20/9 88/18/9 +f 74/19/10 75/21/10 90/22/10 89/20/10 +f 75/21/11 76/23/11 91/24/11 90/22/11 +f 76/23/12 77/25/12 92/26/12 91/24/12 +f 77/25/13 78/27/13 93/28/13 92/26/13 +f 78/27/14 79/29/14 94/30/14 93/28/14 +f 80/4/15 81/3/15 96/31/15 95/32/15 +f 81/3/16 82/6/16 97/33/16 96/31/16 +f 82/6/17 83/8/17 98/34/17 97/33/17 +f 83/8/18 84/10/18 99/35/18 98/34/18 +f 84/10/19 85/12/19 100/36/19 99/35/19 +f 85/12/20 86/14/20 101/37/20 100/36/20 +f 86/14/21 87/16/21 102/38/21 101/37/21 +f 87/16/22 88/18/22 103/39/22 102/38/22 +f 88/18/23 89/20/23 104/40/23 103/39/23 +f 89/20/24 90/22/24 105/41/24 104/40/24 +f 90/22/25 91/24/25 106/42/25 105/41/25 +f 91/24/26 92/26/26 107/43/26 106/42/26 +f 92/26/27 93/28/27 108/44/27 107/43/27 +f 93/28/28 94/30/28 109/45/28 108/44/28 +f 95/32/29 96/31/29 111/46/29 110/47/29 +f 96/31/30 97/33/30 112/48/30 111/46/30 +f 97/33/31 98/34/31 113/49/31 112/48/31 +f 98/34/32 99/35/32 114/50/32 113/49/32 +f 99/35/33 100/36/33 115/51/33 114/50/33 +f 100/36/34 101/37/34 116/52/34 115/51/34 +f 101/37/35 102/38/35 117/53/35 116/52/35 +f 102/38/36 103/39/36 118/54/36 117/53/36 +f 103/39/37 104/40/37 119/55/37 118/54/37 +f 104/40/38 105/41/38 120/56/38 119/55/38 +f 105/41/39 106/42/39 121/57/39 120/56/39 +f 106/42/40 107/43/40 122/58/40 121/57/40 +f 107/43/41 108/44/41 123/59/41 122/58/41 +f 108/44/42 109/45/42 124/60/42 123/59/42 +f 110/47/43 111/46/43 126/61/43 125/62/43 +f 111/46/44 112/48/44 127/63/44 126/61/44 +f 112/48/45 113/49/45 128/64/45 127/63/45 +f 113/49/46 114/50/46 129/65/46 128/64/46 +f 114/50/47 115/51/47 130/66/47 129/65/47 +f 115/51/48 116/52/48 131/67/48 130/66/48 +f 116/52/49 117/53/49 132/68/49 131/67/49 +f 117/53/50 118/54/50 133/69/50 132/68/50 +f 118/54/51 119/55/51 134/70/51 133/69/51 +f 119/55/52 120/56/52 135/71/52 134/70/52 +f 120/56/53 121/57/53 136/72/53 135/71/53 +f 121/57/54 122/58/54 137/73/54 136/72/54 +f 122/58/55 123/59/55 138/74/55 137/73/55 +f 123/59/56 124/60/56 139/75/56 138/74/56 +f 125/62/57 126/61/57 141/76/57 140/77/57 +f 126/61/58 127/63/58 142/78/58 141/76/58 +f 127/63/59 128/64/59 143/79/59 142/78/59 +f 128/64/60 129/65/60 144/80/60 143/79/60 +f 129/65/61 130/66/61 145/81/61 144/80/61 +f 130/66/62 131/67/62 146/82/62 145/81/62 +f 131/67/63 132/68/63 147/83/63 146/82/63 +f 132/68/64 133/69/64 148/84/64 147/83/64 +f 133/69/65 134/70/65 149/85/65 148/84/65 +f 134/70/66 135/71/66 150/86/66 149/85/66 +f 135/71/67 136/72/67 151/87/67 150/86/67 +f 136/72/68 137/73/68 152/88/68 151/87/68 +f 137/73/69 138/74/69 153/89/69 152/88/69 +f 138/74/70 139/75/70 154/90/70 153/89/70 +f 140/77/71 141/76/71 156/91/71 155/92/71 +f 141/76/72 142/78/72 157/93/72 156/91/72 +f 142/78/73 143/79/73 158/94/73 157/93/73 +f 143/79/74 144/80/74 159/95/74 158/94/74 +f 144/80/75 145/81/75 160/96/75 159/95/75 +f 145/81/76 146/82/76 161/97/76 160/96/76 +f 146/82/77 147/83/77 162/98/77 161/97/77 +f 147/83/78 148/84/78 163/99/78 162/98/78 +f 148/84/79 149/85/79 164/100/79 163/99/79 +f 149/85/80 150/86/80 165/101/80 164/100/80 +f 150/86/81 151/87/81 166/102/81 165/101/81 +f 151/87/82 152/88/82 167/103/82 166/102/82 +f 152/88/83 153/89/83 168/104/83 167/103/83 +f 153/89/84 154/90/84 169/105/84 168/104/84 +f 155/92/85 156/91/85 171/106/85 170/107/85 +f 156/91/86 157/93/86 172/108/86 171/106/86 +f 157/93/87 158/94/87 173/109/87 172/108/87 +f 158/94/88 159/95/88 174/110/88 173/109/88 +f 159/95/89 160/96/89 175/111/89 174/110/89 +f 160/96/90 161/97/90 176/112/90 175/111/90 +f 161/97/91 162/98/91 177/113/91 176/112/91 +f 162/98/92 163/99/92 178/114/92 177/113/92 +f 163/99/93 164/100/93 179/115/93 178/114/93 +f 164/100/94 165/101/94 180/116/94 179/115/94 +f 165/101/95 166/102/95 181/117/95 180/116/95 +f 166/102/96 167/103/96 182/118/96 181/117/96 +f 167/103/97 168/104/97 183/119/97 182/118/97 +f 168/104/98 169/105/98 184/120/98 183/119/98 +f 170/107/99 171/106/99 186/121/99 185/122/99 +f 171/106/100 172/108/100 187/123/100 186/121/100 +f 172/108/101 173/109/101 188/124/101 187/123/101 +f 173/109/102 174/110/102 189/125/102 188/124/102 +f 174/110/103 175/111/103 190/126/103 189/125/103 +f 175/111/104 176/112/104 191/127/104 190/126/104 +f 176/112/105 177/113/105 192/128/105 191/127/105 +f 177/113/106 178/114/106 193/129/106 192/128/106 +f 178/114/107 179/115/107 194/130/107 193/129/107 +f 179/115/108 180/116/108 195/131/108 194/130/108 +f 180/116/109 181/117/109 196/132/109 195/131/109 +f 181/117/110 182/118/110 197/133/110 196/132/110 +f 182/118/111 183/119/111 198/134/111 197/133/111 +f 183/119/112 184/120/112 199/135/112 198/134/112 +f 185/122/113 186/121/113 201/136/113 200/137/113 +f 186/121/114 187/123/114 202/138/114 201/136/114 +f 187/123/115 188/124/115 203/139/115 202/138/115 +f 188/124/116 189/125/116 204/140/116 203/139/116 +f 189/125/117 190/126/117 205/141/117 204/140/117 +f 190/126/118 191/127/118 206/142/118 205/141/118 +f 191/127/119 192/128/119 207/143/119 206/142/119 +f 192/128/120 193/129/120 208/144/120 207/143/120 +f 193/129/121 194/130/121 209/145/121 208/144/121 +f 194/130/122 195/131/122 210/146/122 209/145/122 +f 195/131/123 196/132/123 211/147/123 210/146/123 +f 196/132/124 197/133/124 212/148/124 211/147/124 +f 197/133/125 198/134/125 213/149/125 212/148/125 +f 198/134/126 199/135/126 214/150/126 213/149/126 +f 200/137/127 201/136/127 216/151/127 215/152/127 +f 201/136/128 202/138/128 217/153/128 216/151/128 +f 202/138/129 203/139/129 218/154/129 217/153/129 +f 203/139/130 204/140/130 219/155/130 218/154/130 +f 204/140/131 205/141/131 220/156/131 219/155/131 +f 205/141/132 206/142/132 221/157/132 220/156/132 +f 206/142/133 207/143/133 222/158/133 221/157/133 +f 207/143/134 208/144/134 223/159/134 222/158/134 +f 208/144/135 209/145/135 224/160/135 223/159/135 +f 209/145/136 210/146/136 225/161/136 224/160/136 +f 210/146/137 211/147/137 226/162/137 225/161/137 +f 211/147/138 212/148/138 227/163/138 226/162/138 +f 212/148/139 213/149/139 228/164/139 227/163/139 +f 213/149/140 214/150/140 229/165/140 228/164/140 +f 215/152/141 216/151/141 231/166/141 230/167/141 +f 216/151/142 217/153/142 232/168/142 231/166/142 +f 217/153/143 218/154/143 233/169/143 232/168/143 +f 218/154/144 219/155/144 234/170/144 233/169/144 +f 219/155/145 220/156/145 235/171/145 234/170/145 +f 220/156/146 221/157/146 236/172/146 235/171/146 +f 221/157/147 222/158/147 237/173/147 236/172/147 +f 222/158/148 223/159/148 238/174/148 237/173/148 +f 223/159/149 224/160/149 239/175/149 238/174/149 +f 224/160/150 225/161/150 240/176/150 239/175/150 +f 225/161/151 226/162/151 241/177/151 240/176/151 +f 226/162/152 227/163/152 242/178/152 241/177/152 +f 227/163/153 228/164/153 243/179/153 242/178/153 +f 228/164/154 229/165/154 244/180/154 243/179/154 +f 230/167/155 231/166/155 246/181/155 245/182/155 +f 231/166/156 232/168/156 247/183/156 246/181/156 +f 232/168/157 233/169/157 248/184/157 247/183/157 +f 233/169/158 234/170/158 249/185/158 248/184/158 +f 234/170/159 235/171/159 250/186/159 249/185/159 +f 235/171/160 236/172/160 251/187/160 250/186/160 +f 236/172/161 237/173/161 252/188/161 251/187/161 +f 237/173/162 238/174/162 253/189/162 252/188/162 +f 238/174/163 239/175/163 254/190/163 253/189/163 +f 239/175/164 240/176/164 255/191/164 254/190/164 +f 240/176/165 241/177/165 256/192/165 255/191/165 +f 241/177/166 242/178/166 257/193/166 256/192/166 +f 242/178/167 243/179/167 258/194/167 257/193/167 +f 243/179/168 244/180/168 259/195/168 258/194/168 +f 245/182/169 246/181/169 261/196/169 260/197/169 +f 246/181/170 247/183/170 262/198/170 261/196/170 +f 247/183/171 248/184/171 263/199/171 262/198/171 +f 248/184/172 249/185/172 264/200/172 263/199/172 +f 249/185/173 250/186/173 265/201/173 264/200/173 +f 250/186/174 251/187/174 266/202/174 265/201/174 +f 251/187/175 252/188/175 267/203/175 266/202/175 +f 252/188/176 253/189/176 268/204/176 267/203/176 +f 253/189/177 254/190/177 269/205/177 268/204/177 +f 254/190/178 255/191/178 270/206/178 269/205/178 +f 255/191/179 256/192/179 271/207/179 270/206/179 +f 256/192/180 257/193/180 272/208/180 271/207/180 +f 257/193/181 258/194/181 273/209/181 272/208/181 +f 258/194/182 259/195/182 274/210/182 273/209/182 +f 260/197/183 261/196/183 276/211/183 275/212/183 +f 261/196/184 262/198/184 277/213/184 276/211/184 +f 262/198/185 263/199/185 278/214/185 277/213/185 +f 263/199/186 264/200/186 279/215/186 278/214/186 +f 264/200/187 265/201/187 280/216/187 279/215/187 +f 265/201/188 266/202/188 281/217/188 280/216/188 +f 266/202/189 267/203/189 282/218/189 281/217/189 +f 267/203/190 268/204/190 283/219/190 282/218/190 +f 268/204/191 269/205/191 284/220/191 283/219/191 +f 269/205/192 270/206/192 285/221/192 284/220/192 +f 270/206/193 271/207/193 286/222/193 285/221/193 +f 271/207/194 272/208/194 287/223/194 286/222/194 +f 272/208/195 273/209/195 288/224/195 287/223/195 +f 273/209/196 274/210/196 289/225/196 288/224/196 +f 1/226/197 20/227/197 65/1/197 19/228/197 +f 20/227/198 21/229/198 66/2/198 65/1/198 +f 21/229/199 22/230/199 67/5/199 66/2/199 +f 22/230/200 23/231/200 68/7/200 67/5/200 +f 23/231/201 24/232/201 69/9/201 68/7/201 +f 24/232/202 25/233/202 70/11/202 69/9/202 +f 25/233/203 26/234/203 71/13/203 70/11/203 +f 26/234/204 27/235/204 72/15/204 71/13/204 +f 27/235/205 28/236/205 73/17/205 72/15/205 +f 28/236/206 29/237/206 74/19/206 73/17/206 +f 29/237/207 30/238/207 75/21/207 74/19/207 +f 30/238/208 31/239/208 76/23/208 75/21/208 +f 31/239/209 32/240/209 77/25/209 76/23/209 +f 32/240/210 33/241/210 78/27/210 77/25/210 +f 33/241/211 34/242/211 79/29/211 78/27/211 +f 34/242/212 2/243/212 35/244/212 79/29/212 +f 79/29/213 35/244/213 36/245/213 94/30/213 +f 94/30/214 36/245/214 37/246/214 109/45/214 +f 109/45/215 37/246/215 38/247/215 124/60/215 +f 124/60/216 38/247/216 39/248/216 139/75/216 +f 139/75/217 39/248/217 40/249/217 154/90/217 +f 154/90/218 40/249/218 41/250/218 169/105/218 +f 169/105/219 41/250/219 42/251/219 184/120/219 +f 184/120/220 42/251/220 43/252/220 199/135/220 +f 199/135/221 43/252/221 44/253/221 214/150/221 +f 214/150/222 44/253/222 45/254/222 229/165/222 +f 229/165/223 45/254/223 46/255/223 244/180/223 +f 244/180/224 46/255/224 47/256/224 259/195/224 +f 259/195/225 47/256/225 48/257/225 274/210/225 +f 274/210/226 48/257/226 49/258/226 289/225/226 +f 289/225/227 49/258/227 4/259/227 50/260/227 +f 288/224/228 289/225/228 50/260/228 51/261/228 +f 287/223/229 288/224/229 51/261/229 52/262/229 +f 286/222/230 287/223/230 52/262/230 53/263/230 +f 285/221/231 286/222/231 53/263/231 54/264/231 +f 284/220/232 285/221/232 54/264/232 55/265/232 +f 283/219/233 284/220/233 55/265/233 56/266/233 +f 282/218/234 283/219/234 56/266/234 57/267/234 +f 281/217/235 282/218/235 57/267/235 58/268/235 +f 280/216/236 281/217/236 58/268/236 59/269/236 +f 279/215/237 280/216/237 59/269/237 60/270/237 +f 278/214/238 279/215/238 60/270/238 61/271/238 +f 277/213/239 278/214/239 61/271/239 62/272/239 +f 276/211/240 277/213/240 62/272/240 63/273/240 +f 275/212/241 276/211/241 63/273/241 64/274/241 +f 5/275/242 275/212/242 64/274/242 3/276/242 +f 6/277/243 260/197/243 275/212/243 5/275/243 +f 7/278/244 245/182/244 260/197/244 6/277/244 +f 8/279/245 230/167/245 245/182/245 7/278/245 +f 9/280/246 215/152/246 230/167/246 8/279/246 +f 10/281/247 200/137/247 215/152/247 9/280/247 +f 11/282/248 185/122/248 200/137/248 10/281/248 +f 12/283/249 170/107/249 185/122/249 11/282/249 +f 13/284/250 155/92/250 170/107/250 12/283/250 +f 14/285/251 140/77/251 155/92/251 13/284/251 +f 15/286/252 125/62/252 140/77/252 14/285/252 +f 16/287/253 110/47/253 125/62/253 15/286/253 +f 17/288/254 95/32/254 110/47/254 16/287/254 +f 18/289/255 80/4/255 95/32/255 17/288/255 +f 19/228/256 65/1/256 80/4/256 18/289/256 diff --git a/tools/ttf_bitmap.cpp b/tools/ttf_bitmap.cpp index 884ab8d..60d2c97 100644 --- a/tools/ttf_bitmap.cpp +++ b/tools/ttf_bitmap.cpp @@ -7,6 +7,23 @@ #include #include FT_FREETYPE_H +#include "../twiddle.hpp" + +bool is_power(int n) +{ + const int min_power = 8; + const int max_power = 1024; + int power = min_power; + + while (power <= max_power) { + if (n == power) + return true; + power *= 2; + } + printf("%d\n", n); + return false; +} + int32_t load_bitmap_char(FT_Face face, FT_ULong char_code, @@ -25,26 +42,24 @@ load_bitmap_char(FT_Face face, //printf("num_grays %d\n", face->glyph->bitmap.num_grays); //printf("pitch %d\n", face->glyph->bitmap.pitch); //printf("width %d\n", face->glyph->bitmap.width); - //printf("char_code %lx rows %d\n", char_code, face->glyph->bitmap.rows); - //assert((face->glyph->bitmap.rows % 8) == 0); - //assert(face->glyph->bitmap.width / face->glyph->bitmap.pitch == 8); + //printf("rows %d\n", face->glyph->bitmap.rows); + assert(face->glyph->bitmap.num_grays == 2); + assert(is_power(face->glyph->bitmap.rows)); + assert(is_power(face->glyph->bitmap.width)); + assert((int)(face->glyph->bitmap.pitch * 8) == (int)(face->glyph->bitmap.width)); for (int y = 0; y < (int)face->glyph->bitmap.rows; y++) { uint8_t * row = &face->glyph->bitmap.buffer[y * face->glyph->bitmap.pitch]; - uint8_t row_out = 0; - for (unsigned int x = 0; x < face->glyph->bitmap.width; x++) { - if (x % 8 == 0) row_out = 0; - const uint8_t bit = (row[x / 8] >> (7 - (x % 8))) & 1; - std::cerr << (bit ? "█" : " "); - row_out |= (bit << (x % 8)); - if (x % 8 == 7 || x == (face->glyph->bitmap.width - 1)) - buf[(y * face->glyph->bitmap.pitch) + (x / 8)] = row_out; + for (int x = 0; x < (int)face->glyph->bitmap.width; x += 1) { + const int bit = (row[x / 8] >> (7 - (x % 8))) & 1; + //std::cerr << (bit ? "█" : " "); + buf[y * face->glyph->bitmap.width + x] = bit; } - std::cerr << "|\n"; + //std::cerr << "|\n"; } // 'pitch' is bytes; 'width' is pixels - return face->glyph->bitmap.rows * face->glyph->bitmap.pitch; + return face->glyph->bitmap.rows * face->glyph->bitmap.width; } template @@ -95,11 +110,16 @@ int main(int argc, char *argv[]) assert(end > start); - uint32_t pixels_per_glyph = (face->size->metrics.height * face->size->metrics.max_advance); + int width = face->size->metrics.max_advance >> 6; + int height = face->size->metrics.height >> 6; + uint32_t pixels_per_glyph = width * height; assert(pixels_per_glyph % 8 == 0); - uint32_t bytes_per_glyph = pixels_per_glyph / 8; + uint32_t bytes_per_glyph = pixels_per_glyph; uint32_t num_glyphs = (end - start) + 1; - uint8_t buf[bytes_per_glyph * num_glyphs]; + uint32_t buf_size = bytes_per_glyph * num_glyphs; + uint8_t * buf = (uint8_t *)malloc(buf_size); + + uint8_t * twiddle_buf = (uint8_t *)malloc(buf_size / 2); uint32_t bitmap_offset = 0; for (uint32_t char_code = start; char_code <= end; char_code++) { @@ -111,16 +131,22 @@ int main(int argc, char *argv[]) return -1; } + printf("twiddle %d %d %d %d\n", bitmap_offset, bitmap_offset / 2, width, height); + twiddle::texture_4bpp(&twiddle_buf[bitmap_offset / 2], + &buf[bitmap_offset], + width, + height); + bitmap_offset += bitmap_size; - assert(bitmap_offset < (sizeof (buf))); + assert(bitmap_offset <= buf_size); } - std::cerr << "bitmap_offset: 0x" << std::dec << bitmap_offset << '\n'; + printf("bitmap_offset: %d\n", bitmap_offset); FILE * out = fopen(output_file_path, "w"); if (out == NULL) { perror("fopen(w)"); return -1; } - fwrite(reinterpret_cast(&buf), bitmap_offset, 1, out); + fwrite(reinterpret_cast(twiddle_buf), bitmap_offset / 2, 1, out); fclose(out); }