draw level
This commit is contained in:
parent
315512da12
commit
edf47747f9
21
Makefile
21
Makefile
@ -13,6 +13,8 @@ CXXSTD += -std=gnu++23
|
|||||||
CFLAGS += -Wall -Werror -Wfatal-errors
|
CFLAGS += -Wall -Werror -Wfatal-errors
|
||||||
CFLAGS += -Wno-error=unused-function
|
CFLAGS += -Wno-error=unused-function
|
||||||
CFLAGS += -Wno-error=unused-const-variable
|
CFLAGS += -Wno-error=unused-const-variable
|
||||||
|
CFLAGS += -Wno-error=unused-but-set-variable
|
||||||
|
CFLAGS += -Wno-error=unused-variable
|
||||||
CFLAGS += -I$(MAKEFILE_PATH)/include
|
CFLAGS += -I$(MAKEFILE_PATH)/include
|
||||||
LDFLAGS += -lm
|
LDFLAGS += -lm
|
||||||
|
|
||||||
@ -59,8 +61,8 @@ define BUILD_BINARY_H
|
|||||||
@echo 'extern uint32_t $(call as_obj_binary_p,$<)_end __asm("$(call as_obj_binary_p,$<)_end");' >> $@
|
@echo 'extern uint32_t $(call as_obj_binary_p,$<)_end __asm("$(call as_obj_binary_p,$<)_end");' >> $@
|
||||||
@echo 'extern uint32_t $(call as_obj_binary_p,$<)_size __asm("$(call as_obj_binary_p,$<)_size");' >> $@
|
@echo 'extern uint32_t $(call as_obj_binary_p,$<)_size __asm("$(call as_obj_binary_p,$<)_size");' >> $@
|
||||||
@echo '' >> $@
|
@echo '' >> $@
|
||||||
@echo '#define $(call as_obj_binary,$<)_start ((void *)&$(call as_obj_binary_p,$<)_start)' >> $@
|
@echo '#define $(call as_obj_binary,$<)_start ((const char *)&$(call as_obj_binary_p,$<)_start)' >> $@
|
||||||
@echo '#define $(call as_obj_binary,$<)_end ((void *)&$(call as_obj_binary_p,$<)_end)' >> $@
|
@echo '#define $(call as_obj_binary,$<)_end ((const char *)&$(call as_obj_binary_p,$<)_end)' >> $@
|
||||||
@echo '#define $(call as_obj_binary,$<)_size ($(call as_obj_binary,$<)_end - $(call as_obj_binary,$<)_start)' >> $@
|
@echo '#define $(call as_obj_binary,$<)_size ($(call as_obj_binary,$<)_end - $(call as_obj_binary,$<)_start)' >> $@
|
||||||
@echo '' >> $@
|
@echo '' >> $@
|
||||||
@echo '#ifdef __cplusplus' >> $@
|
@echo '#ifdef __cplusplus' >> $@
|
||||||
@ -74,6 +76,18 @@ endef
|
|||||||
include/shader/%.glsl.h: src/shader/%.glsl
|
include/shader/%.glsl.h: src/shader/%.glsl
|
||||||
$(BUILD_BINARY_H)
|
$(BUILD_BINARY_H)
|
||||||
|
|
||||||
|
%.data.o: %.data
|
||||||
|
$(BUILD_BINARY_O)
|
||||||
|
|
||||||
|
include/level/%.data.h: src/level/%.data
|
||||||
|
$(BUILD_BINARY_H)
|
||||||
|
|
||||||
|
%.data.pal.o: %.data.pal
|
||||||
|
$(BUILD_BINARY_O)
|
||||||
|
|
||||||
|
include/level/%.data.pal.h: src/level/%.data.pal
|
||||||
|
$(BUILD_BINARY_H)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *.d *.gch
|
rm -f *.o *.d *.gch
|
||||||
rm -f main
|
rm -f main
|
||||||
@ -88,7 +102,10 @@ MAIN_OBJS = \
|
|||||||
src/main.o \
|
src/main.o \
|
||||||
src/glad.o \
|
src/glad.o \
|
||||||
src/opengl.o \
|
src/opengl.o \
|
||||||
|
src/render.o \
|
||||||
$(patsubst %.glsl,%.glsl.o,$(wildcard src/shader/*.glsl)) \
|
$(patsubst %.glsl,%.glsl.o,$(wildcard src/shader/*.glsl)) \
|
||||||
|
$(patsubst %.data,%.data.o,$(wildcard src/level/*.data)) \
|
||||||
|
$(patsubst %.data.pal,%.data.pal.o,$(wildcard src/level/*.data.pal)) \
|
||||||
$(GLFW)
|
$(GLFW)
|
||||||
|
|
||||||
main: $(MAIN_OBJS)
|
main: $(MAIN_OBJS)
|
||||||
|
|||||||
19
include/level/level1.data.h
Normal file
19
include/level/level1.data.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_src_level_level1_data_start __asm("_binary_src_level_level1_data_start");
|
||||||
|
extern uint32_t _binary_src_level_level1_data_end __asm("_binary_src_level_level1_data_end");
|
||||||
|
extern uint32_t _binary_src_level_level1_data_size __asm("_binary_src_level_level1_data_size");
|
||||||
|
|
||||||
|
#define src_level_level1_data_start ((const char *)&_binary_src_level_level1_data_start)
|
||||||
|
#define src_level_level1_data_end ((const char *)&_binary_src_level_level1_data_end)
|
||||||
|
#define src_level_level1_data_size (src_level_level1_data_end - src_level_level1_data_start)
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
19
include/level/level1.data.pal.h
Normal file
19
include/level/level1.data.pal.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_src_level_level1_data_pal_start __asm("_binary_src_level_level1_data_pal_start");
|
||||||
|
extern uint32_t _binary_src_level_level1_data_pal_end __asm("_binary_src_level_level1_data_pal_end");
|
||||||
|
extern uint32_t _binary_src_level_level1_data_pal_size __asm("_binary_src_level_level1_data_pal_size");
|
||||||
|
|
||||||
|
#define src_level_level1_data_pal_start ((const char *)&_binary_src_level_level1_data_pal_start)
|
||||||
|
#define src_level_level1_data_pal_end ((const char *)&_binary_src_level_level1_data_pal_end)
|
||||||
|
#define src_level_level1_data_pal_size (src_level_level1_data_pal_end - src_level_level1_data_pal_start)
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
5
include/math/constants.hpp
Normal file
5
include/math/constants.hpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define PI (3.14159274101257324219f)
|
||||||
|
#define PI_2 (PI * 2.0f)
|
||||||
|
#define I_PI_2 (1.0f / (PI_2))
|
||||||
15
include/math/float_types.hpp
Normal file
15
include/math/float_types.hpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "vec2.hpp"
|
||||||
|
#include "vec3.hpp"
|
||||||
|
#include "vec4.hpp"
|
||||||
|
#include "mat2x2.hpp"
|
||||||
|
#include "mat3x3.hpp"
|
||||||
|
#include "mat4x4.hpp"
|
||||||
|
|
||||||
|
using vec2 = vec<2, float>;
|
||||||
|
using vec3 = vec<3, float>;
|
||||||
|
using vec4 = vec<4, float>;
|
||||||
|
using mat2x2 = mat<2, 2, float>;
|
||||||
|
using mat3x3 = mat<3, 3, float>;
|
||||||
|
using mat4x4 = mat<4, 4, float>;
|
||||||
26
include/math/mat.hpp
Normal file
26
include/math/mat.hpp
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
template <int R, int C, typename T>
|
||||||
|
struct mat;
|
||||||
|
|
||||||
|
template <int R, int C, typename T>
|
||||||
|
inline constexpr typename mat<R, C, T>::col_type
|
||||||
|
col(mat<R, C, T> const& m, int c)
|
||||||
|
{
|
||||||
|
typename mat<R, C, T>::col_type v;
|
||||||
|
for (int r = 0; r < R; r++) {
|
||||||
|
v[r] = m[r][c];
|
||||||
|
}
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <int R, typename T>
|
||||||
|
inline constexpr vec<3, T>
|
||||||
|
col(mat<R, 4, T> const& m, int c)
|
||||||
|
{
|
||||||
|
vec<3, T> v;
|
||||||
|
for (int r = 0; r < 3; r++) {
|
||||||
|
v[r] = m[r][c];
|
||||||
|
}
|
||||||
|
return v;
|
||||||
|
}
|
||||||
112
include/math/mat2x2.hpp
Normal file
112
include/math/mat2x2.hpp
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <utility>
|
||||||
|
#include "vec2.hpp"
|
||||||
|
#include "mat.hpp"
|
||||||
|
|
||||||
|
//
|
||||||
|
// mat2x2
|
||||||
|
//
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct mat<2, 2, T>
|
||||||
|
{
|
||||||
|
typedef vec<2, T> row_type;
|
||||||
|
typedef vec<2, T> col_type;
|
||||||
|
|
||||||
|
private:
|
||||||
|
row_type value[2];
|
||||||
|
|
||||||
|
public:
|
||||||
|
inline constexpr mat();
|
||||||
|
|
||||||
|
inline constexpr mat
|
||||||
|
(
|
||||||
|
T const& a00, T const& a01,
|
||||||
|
T const& a10, T const& a11
|
||||||
|
);
|
||||||
|
|
||||||
|
inline static constexpr int length() { return 4; }
|
||||||
|
|
||||||
|
inline constexpr typename mat<2, 2, T>::row_type &
|
||||||
|
operator[](int i);
|
||||||
|
|
||||||
|
inline constexpr typename mat<2, 2, T>::row_type const &
|
||||||
|
operator[](int i) const;
|
||||||
|
|
||||||
|
void operator=(const mat<2, 2, T>&) = delete;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<2, 2, T>::mat()
|
||||||
|
: value{std::move(row_type(1, 0)),
|
||||||
|
std::move(row_type(0, 1))}
|
||||||
|
{ }
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<2, 2, T>::mat
|
||||||
|
(
|
||||||
|
T const& a00, T const& a01,
|
||||||
|
T const& a10, T const& a11
|
||||||
|
)
|
||||||
|
: value{std::move(row_type(a00, a01)),
|
||||||
|
std::move(row_type(a10, a11))}
|
||||||
|
{ }
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr typename mat<2, 2, T>::row_type &
|
||||||
|
mat<2, 2, T>::operator[](int i)
|
||||||
|
{
|
||||||
|
return value[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr typename mat<2, 2, T>::row_type const &
|
||||||
|
mat<2, 2, T>::operator[](int i) const
|
||||||
|
{
|
||||||
|
return value[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<2, 2, T> operator*(mat<2, 2, T> const& m1, mat<2, 2, T> const& m2)
|
||||||
|
{
|
||||||
|
#define c(i, j) ( \
|
||||||
|
m1[i][0] * m2[0][j] \
|
||||||
|
+ m1[i][1] * m2[1][j])
|
||||||
|
|
||||||
|
return mat<2, 2, T>(c(0,0), c(0,1),
|
||||||
|
c(1,0), c(1,1));
|
||||||
|
#undef c
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr typename mat<2, 2, T>::row_type operator*
|
||||||
|
(
|
||||||
|
mat<2, 2, T> const& m,
|
||||||
|
typename mat<2, 2, T>::col_type const& v
|
||||||
|
)
|
||||||
|
{
|
||||||
|
#define c(i) ( \
|
||||||
|
m[i][0] * v[0] \
|
||||||
|
+ m[i][1] * v[1])
|
||||||
|
|
||||||
|
return typename mat<2, 2, T>::row_type(c(0), c(1));
|
||||||
|
#undef c
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<2, 2, T> transpose(mat<2, 2, T> const& m)
|
||||||
|
{
|
||||||
|
return mat<2, 2, T>(
|
||||||
|
m[0][0], m[1][0],
|
||||||
|
m[0][1], m[1][1]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr float determinant(mat<2, 2, T> const& a)
|
||||||
|
{
|
||||||
|
return a[0][0] * a[1][1] - a[0][1] * a[1][0];
|
||||||
|
}
|
||||||
201
include/math/mat3x3.hpp
Normal file
201
include/math/mat3x3.hpp
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <utility>
|
||||||
|
#include "vec3.hpp"
|
||||||
|
#include "mat.hpp"
|
||||||
|
|
||||||
|
//
|
||||||
|
// mat3x3
|
||||||
|
//
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct mat<3, 3, T>
|
||||||
|
{
|
||||||
|
typedef vec<3, T> row_type;
|
||||||
|
typedef vec<3, T> col_type;
|
||||||
|
|
||||||
|
private:
|
||||||
|
row_type value[3];
|
||||||
|
|
||||||
|
public:
|
||||||
|
inline constexpr mat();
|
||||||
|
|
||||||
|
inline constexpr mat
|
||||||
|
(
|
||||||
|
T const& a00, T const& a01, T const& a02,
|
||||||
|
T const& a10, T const& a11, T const& a12,
|
||||||
|
T const& a20, T const& a21, T const& a22
|
||||||
|
);
|
||||||
|
|
||||||
|
inline static constexpr int length() { return 3; }
|
||||||
|
|
||||||
|
inline constexpr typename mat<3, 3, T>::row_type &
|
||||||
|
operator[](int i);
|
||||||
|
|
||||||
|
inline constexpr typename mat<3, 3, T>::row_type const &
|
||||||
|
operator[](int i) const;
|
||||||
|
|
||||||
|
//void operator=(const mat<3, 3, T>&) = delete;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<3, 3, T>::mat()
|
||||||
|
: value{std::move(row_type(1, 0, 0)),
|
||||||
|
std::move(row_type(0, 1, 0)),
|
||||||
|
std::move(row_type(0, 0, 1))}
|
||||||
|
{ }
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<3, 3, T>::mat
|
||||||
|
(
|
||||||
|
T const& a00, T const& a01, T const& a02,
|
||||||
|
T const& a10, T const& a11, T const& a12,
|
||||||
|
T const& a20, T const& a21, T const& a22
|
||||||
|
)
|
||||||
|
: value{std::move(row_type(a00, a01, a02)),
|
||||||
|
std::move(row_type(a10, a11, a12)),
|
||||||
|
std::move(row_type(a20, a21, a22))}
|
||||||
|
{ }
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr typename mat<3, 3, T>::row_type &
|
||||||
|
mat<3, 3, T>::operator[](int i)
|
||||||
|
{
|
||||||
|
return value[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr typename mat<3, 3, T>::row_type const &
|
||||||
|
mat<3, 3, T>::operator[](int i) const
|
||||||
|
{
|
||||||
|
return value[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<3, 3, T> operator+(mat<3, 3, T> const& m1, mat<3, 3, T> const& m2)
|
||||||
|
{
|
||||||
|
#define c(i, j) ( m1[i][j] + m2[i][j] )
|
||||||
|
|
||||||
|
return mat<3, 3, T>(c(0,0), c(0,1), c(0,2),
|
||||||
|
c(1,0), c(1,1), c(1,2),
|
||||||
|
c(2,0), c(2,1), c(2,2));
|
||||||
|
#undef c
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<3, 3, T> operator*(mat<3, 3, T> const& m1, mat<3, 3, T> const& m2)
|
||||||
|
{
|
||||||
|
#define c(i, j) ( \
|
||||||
|
m1[i][0] * m2[0][j] \
|
||||||
|
+ m1[i][1] * m2[1][j] \
|
||||||
|
+ m1[i][2] * m2[2][j] )
|
||||||
|
|
||||||
|
return mat<3, 3, T>(c(0,0), c(0,1), c(0,2),
|
||||||
|
c(1,0), c(1,1), c(1,2),
|
||||||
|
c(2,0), c(2,1), c(2,2));
|
||||||
|
#undef c
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<3, 3, T> operator*(mat<3, 3, T> const& m1, float s)
|
||||||
|
{
|
||||||
|
#define c(i, j) ( m1[i][j] * s )
|
||||||
|
|
||||||
|
return mat<3, 3, T>(c(0,0), c(0,1), c(0,2),
|
||||||
|
c(1,0), c(1,1), c(1,2),
|
||||||
|
c(2,0), c(2,1), c(2,2));
|
||||||
|
#undef c
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr typename mat<3, 3, T>::row_type operator*
|
||||||
|
(
|
||||||
|
mat<3, 3, T> const& m,
|
||||||
|
typename mat<3, 3, T>::col_type const& v
|
||||||
|
)
|
||||||
|
{
|
||||||
|
#define c(i) ( \
|
||||||
|
m[i][0] * v[0] \
|
||||||
|
+ m[i][1] * v[1] \
|
||||||
|
+ m[i][2] * v[2] )
|
||||||
|
|
||||||
|
return typename mat<3, 3, T>::row_type(c(0), c(1), c(2));
|
||||||
|
#undef c
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<3, 3, T> transpose(mat<3, 3, T> const& m)
|
||||||
|
{
|
||||||
|
return mat<3, 3, T>(
|
||||||
|
m[0][0], m[1][0], m[2][0],
|
||||||
|
m[0][1], m[1][1], m[2][1],
|
||||||
|
m[0][2], m[1][2], m[2][2]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<2, 2, T> submatrix(mat<3, 3, T> const& a, int r, int c)
|
||||||
|
{
|
||||||
|
mat<2, 2, T> b;
|
||||||
|
int row2 = 0;
|
||||||
|
for (int row3 = 0; row3 < 3; row3++) {
|
||||||
|
if (row3 == r) continue;
|
||||||
|
int col2 = 0;
|
||||||
|
for (int col3 = 0; col3 < 3; col3++) {
|
||||||
|
if (col3 == c) continue;
|
||||||
|
b[row2][col2] = a[row3][col3];
|
||||||
|
col2++;
|
||||||
|
}
|
||||||
|
row2++;
|
||||||
|
}
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr float minor(mat<3, 3, T> const& a, int r, int c)
|
||||||
|
{
|
||||||
|
mat<2, 2, T> s = submatrix(a, r, c);
|
||||||
|
float ret = determinant(s);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr float cofactor(mat<3, 3, T> const& a, int r, int c)
|
||||||
|
{
|
||||||
|
float m = minor(a, r, c);
|
||||||
|
if ((r + c) & 1)
|
||||||
|
return -m;
|
||||||
|
else
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr float determinant(mat<3, 3, T> const& a)
|
||||||
|
{
|
||||||
|
float f0 = cofactor(a, 0, 0);
|
||||||
|
float f1 = cofactor(a, 0, 1);
|
||||||
|
float f2 = cofactor(a, 0, 2);
|
||||||
|
return
|
||||||
|
a[0][0] * f0 +
|
||||||
|
a[0][1] * f1 +
|
||||||
|
a[0][2] * f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<3, 3, T> inverse(mat<3, 3, T> const& a)
|
||||||
|
{
|
||||||
|
mat<3, 3, T> m;
|
||||||
|
float idet = 1.0f / determinant(a);
|
||||||
|
m[0][0] = cofactor(a, 0, 0) * idet;
|
||||||
|
m[1][0] = cofactor(a, 0, 1) * idet;
|
||||||
|
m[2][0] = cofactor(a, 0, 2) * idet;
|
||||||
|
m[0][1] = cofactor(a, 1, 0) * idet;
|
||||||
|
m[1][1] = cofactor(a, 1, 1) * idet;
|
||||||
|
m[2][1] = cofactor(a, 1, 2) * idet;
|
||||||
|
m[0][2] = cofactor(a, 2, 0) * idet;
|
||||||
|
m[1][2] = cofactor(a, 2, 1) * idet;
|
||||||
|
m[2][2] = cofactor(a, 2, 2) * idet;
|
||||||
|
return m;
|
||||||
|
}
|
||||||
247
include/math/mat4x4.hpp
Normal file
247
include/math/mat4x4.hpp
Normal file
@ -0,0 +1,247 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <utility>
|
||||||
|
#include "vec4.hpp"
|
||||||
|
#include "mat.hpp"
|
||||||
|
|
||||||
|
//
|
||||||
|
// mat4x4
|
||||||
|
//
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct mat<4, 4, T>
|
||||||
|
{
|
||||||
|
typedef vec<4, T> row_type;
|
||||||
|
typedef vec<4, T> col_type;
|
||||||
|
|
||||||
|
private:
|
||||||
|
row_type value[4];
|
||||||
|
|
||||||
|
public:
|
||||||
|
inline constexpr mat();
|
||||||
|
|
||||||
|
inline constexpr mat
|
||||||
|
(
|
||||||
|
T const& a00, T const& a01, T const& a02, T const& a03,
|
||||||
|
T const& a10, T const& a11, T const& a12, T const& a13,
|
||||||
|
T const& a20, T const& a21, T const& a22, T const& a23,
|
||||||
|
T const& a30, T const& a31, T const& a32, T const& a33
|
||||||
|
);
|
||||||
|
|
||||||
|
inline static constexpr int length() { return 4; }
|
||||||
|
|
||||||
|
inline constexpr typename mat<4, 4, T>::row_type &
|
||||||
|
operator[](int i);
|
||||||
|
|
||||||
|
inline constexpr typename mat<4, 4, T>::row_type const &
|
||||||
|
operator[](int i) const;
|
||||||
|
|
||||||
|
//void operator=(const mat<4, 4, T>&) = delete;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<4, 4, T>::mat()
|
||||||
|
: value{std::move(row_type(1, 0, 0, 0)),
|
||||||
|
std::move(row_type(0, 1, 0, 0)),
|
||||||
|
std::move(row_type(0, 0, 1, 0)),
|
||||||
|
std::move(row_type(0, 0, 0, 1))}
|
||||||
|
{ }
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<4, 4, T>::mat
|
||||||
|
(
|
||||||
|
T const& a00, T const& a01, T const& a02, T const& a03,
|
||||||
|
T const& a10, T const& a11, T const& a12, T const& a13,
|
||||||
|
T const& a20, T const& a21, T const& a22, T const& a23,
|
||||||
|
T const& a30, T const& a31, T const& a32, T const& a33
|
||||||
|
)
|
||||||
|
: value{std::move(row_type(a00, a01, a02, a03)),
|
||||||
|
std::move(row_type(a10, a11, a12, a13)),
|
||||||
|
std::move(row_type(a20, a21, a22, a23)),
|
||||||
|
std::move(row_type(a30, a31, a32, a33))}
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr typename mat<4, 4, T>::row_type &
|
||||||
|
mat<4, 4, T>::operator[](int i)
|
||||||
|
{
|
||||||
|
return value[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr typename mat<4, 4, T>::row_type const &
|
||||||
|
mat<4, 4, T>::operator[](int i) const
|
||||||
|
{
|
||||||
|
return value[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
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<typename T>
|
||||||
|
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][0] * m2[0][j] \
|
||||||
|
+ m1[i][1] * m2[1][j] \
|
||||||
|
+ m1[i][2] * m2[2][j] \
|
||||||
|
+ m1[i][3] * m2[3][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<typename T>
|
||||||
|
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<typename T>
|
||||||
|
inline constexpr typename mat<4, 4, T>::row_type operator*
|
||||||
|
(
|
||||||
|
mat<4, 4, T> const& m,
|
||||||
|
typename mat<4, 4, T>::col_type const& v
|
||||||
|
)
|
||||||
|
{
|
||||||
|
#define c(i) ( \
|
||||||
|
m[i][0] * v[0] \
|
||||||
|
+ m[i][1] * v[1] \
|
||||||
|
+ m[i][2] * v[2] \
|
||||||
|
+ m[i][3] * v[3] )
|
||||||
|
|
||||||
|
return typename mat<4, 4, T>::row_type(c(0), c(1), c(2), c(3));
|
||||||
|
#undef c
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
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<typename T>
|
||||||
|
inline constexpr mat<4, 4, T> transpose(mat<4, 4, T> const& m)
|
||||||
|
{
|
||||||
|
return mat<4, 4, T>(
|
||||||
|
m[0][0], m[1][0], m[2][0], m[3][0],
|
||||||
|
m[0][1], m[1][1], m[2][1], m[3][1],
|
||||||
|
m[0][2], m[1][2], m[2][2], m[3][2],
|
||||||
|
m[0][3], m[1][3], m[2][3], m[3][3]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<3, 3, T> submatrix(mat<4, 4, T> const& a, int r, int c)
|
||||||
|
{
|
||||||
|
mat<3, 3, T> b;
|
||||||
|
int row3 = 0;
|
||||||
|
for (int row4 = 0; row4 < 4; row4++) {
|
||||||
|
if (row4 == r) continue;
|
||||||
|
int col3 = 0;
|
||||||
|
for (int col4 = 0; col4 < 4; col4++) {
|
||||||
|
if (col4 == c) continue;
|
||||||
|
b[row3][col3] = a[row4][col4];
|
||||||
|
col3++;
|
||||||
|
}
|
||||||
|
row3++;
|
||||||
|
}
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr float minor(mat<4, 4, T> const& a, int r, int c)
|
||||||
|
{
|
||||||
|
mat<3, 3, T> s = submatrix(a, r, c);
|
||||||
|
float ret = determinant(s);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr float cofactor(mat<4, 4, T> const& a, int r, int c)
|
||||||
|
{
|
||||||
|
float m = minor(a, r, c);
|
||||||
|
if ((r + c) & 1)
|
||||||
|
return -m;
|
||||||
|
else
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr float determinant(mat<4, 4, T> const& a)
|
||||||
|
{
|
||||||
|
float f0 = cofactor(a, 0, 0);
|
||||||
|
float f1 = cofactor(a, 0, 1);
|
||||||
|
float f2 = cofactor(a, 0, 2);
|
||||||
|
float f3 = cofactor(a, 0, 3);
|
||||||
|
return
|
||||||
|
a[0][0] * f0 +
|
||||||
|
a[0][1] * f1 +
|
||||||
|
a[0][2] * f2 +
|
||||||
|
a[0][3] * f3;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<4, 4, T> inverse(mat<4, 4, T> const& a)
|
||||||
|
{
|
||||||
|
mat<4, 4, T> m;
|
||||||
|
float idet = 1.0f / determinant(a);
|
||||||
|
m[0][0] = cofactor(a, 0, 0) * idet;
|
||||||
|
m[1][0] = cofactor(a, 0, 1) * idet;
|
||||||
|
m[2][0] = cofactor(a, 0, 2) * idet;
|
||||||
|
m[3][0] = cofactor(a, 0, 3) * idet;
|
||||||
|
m[0][1] = cofactor(a, 1, 0) * idet;
|
||||||
|
m[1][1] = cofactor(a, 1, 1) * idet;
|
||||||
|
m[2][1] = cofactor(a, 1, 2) * idet;
|
||||||
|
m[3][1] = cofactor(a, 1, 3) * idet;
|
||||||
|
m[0][2] = cofactor(a, 2, 0) * idet;
|
||||||
|
m[1][2] = cofactor(a, 2, 1) * idet;
|
||||||
|
m[2][2] = cofactor(a, 2, 2) * idet;
|
||||||
|
m[3][2] = cofactor(a, 2, 3) * idet;
|
||||||
|
m[0][3] = cofactor(a, 3, 0) * idet;
|
||||||
|
m[1][3] = cofactor(a, 3, 1) * idet;
|
||||||
|
m[2][3] = cofactor(a, 3, 2) * idet;
|
||||||
|
m[3][3] = cofactor(a, 3, 3) * idet;
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<4, 4, T> identity()
|
||||||
|
{
|
||||||
|
return mat<4, 4, T>(1.0f, 0.0f, 0.0f, 0.0f,
|
||||||
|
0.0f, 1.0f, 0.0f, 0.0f,
|
||||||
|
0.0f, 0.0f, 1.0f, 0.0f,
|
||||||
|
0.0f, 0.0f, 0.0f, 1.0f);
|
||||||
|
}
|
||||||
167
include/math/transform.hpp
Normal file
167
include/math/transform.hpp
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "vec.hpp"
|
||||||
|
#include "mat.hpp"
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline constexpr mat<4, 4, T> translate(vec<3, T> t)
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
1, 0, 0, t.x,
|
||||||
|
0, 1, 0, t.y,
|
||||||
|
0, 0, 1, t.z,
|
||||||
|
0, 0, 0, 1
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr mat<4, 4, T> scale(vec<3, T> s)
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
s.x, 0, 0, 0,
|
||||||
|
0, s.y, 0, 0,
|
||||||
|
0, 0, s.z, 0,
|
||||||
|
0, 0, 0, 1
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr mat<4, 4, T> scale(T s)
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
s, 0, 0, 0,
|
||||||
|
0, s, 0, 0,
|
||||||
|
0, 0, s, 0,
|
||||||
|
0, 0, 0, 1
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr mat<4, 4, T> rotate_x(T t)
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
1, 0, 0, 0,
|
||||||
|
0, cos(t), -sin(t), 0,
|
||||||
|
0, sin(t), cos(t), 0,
|
||||||
|
0, 0, 0, 1
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr mat<4, 4, T> rotate_y(T t)
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
cos(t), 0, sin(t), 0,
|
||||||
|
0, 1, 0, 0,
|
||||||
|
-sin(t), 0, cos(t), 0,
|
||||||
|
0, 0, 0, 1
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr mat<4, 4, T> rotate_z(T t)
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
cos(t), -sin(t), 0, 0,
|
||||||
|
sin(t), cos(t), 0, 0,
|
||||||
|
0, 0, 1, 0,
|
||||||
|
0, 0, 0, 1
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr mat<4, 4, T> rotate_axis_angle(vec<3, T> u, T t)
|
||||||
|
{
|
||||||
|
T st = sin(t);
|
||||||
|
T ct = cos(t);
|
||||||
|
T oct = 1.0 - ct;
|
||||||
|
|
||||||
|
T xx = u.x * u.x;
|
||||||
|
T xy = u.x * u.y;
|
||||||
|
T xz = u.x * u.z;
|
||||||
|
T yy = u.y * u.y;
|
||||||
|
T yz = u.y * u.z;
|
||||||
|
T zz = u.z * u.z;
|
||||||
|
|
||||||
|
return {
|
||||||
|
xx * oct + ct, xy * oct - u.z * st, xz * oct + u.y * st, 0,
|
||||||
|
xy * oct + u.z * st, yy * oct + ct, yz * oct - u.x * st, 0,
|
||||||
|
xz * oct - u.y * st, yz * oct + u.x * st, zz * oct + ct, 0,
|
||||||
|
0, 0, 0, 0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr mat<4, 4, T> rotate_axis_angle(vec<4, T> u)
|
||||||
|
{
|
||||||
|
return rotate_axis_angle({u.x, u.y, u.z}, u.w);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr mat<4, 4, T> rotate_quaternion(vec<4, T> r)
|
||||||
|
{
|
||||||
|
T xx2 = 2 * r.x * r.x;
|
||||||
|
T xy2 = 2 * r.x * r.y;
|
||||||
|
T xz2 = 2 * r.x * r.z;
|
||||||
|
T xw2 = 2 * r.x * r.w;
|
||||||
|
T yy2 = 2 * r.y * r.y;
|
||||||
|
T yz2 = 2 * r.y * r.z;
|
||||||
|
T yw2 = 2 * r.y * r.w;
|
||||||
|
T zz2 = 2 * r.z * r.z;
|
||||||
|
T zw2 = 2 * r.z * r.w;
|
||||||
|
|
||||||
|
return {
|
||||||
|
1 - yy2 - zz2, xy2 - zw2, xz2 + yw2, 0,
|
||||||
|
xy2 + zw2, 1 - xx2 - zz2, yz2 - xw2, 0,
|
||||||
|
xz2 - yw2, yz2 + xw2, 1 - xx2 - yy2, 0,
|
||||||
|
0, 0, 0, 1,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr mat<4, 4, T> look_at(vec<3, T> eye, vec<3, T> center, vec<3, T> up)
|
||||||
|
{
|
||||||
|
vec<3, T> z = normalize(eye - center);
|
||||||
|
vec<3, T> y = up;
|
||||||
|
vec<3, T> x = cross(y, z);
|
||||||
|
y = cross(z, x);
|
||||||
|
x = normalize(x);
|
||||||
|
y = normalize(y);
|
||||||
|
|
||||||
|
mat<4, 4, T> mat = {
|
||||||
|
x.x, x.y, x.z, -dot(x, eye),
|
||||||
|
y.x, y.y, y.z, -dot(y, eye),
|
||||||
|
z.x, z.y, z.z, -dot(z, eye),
|
||||||
|
0, 0, 0, 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
return mat;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T> normal_multiply(mat<4, 4, T> m, vec<3, T> n)
|
||||||
|
{
|
||||||
|
vec<4, T> n4 = m * (vec<4, T>){n.x, n.y, n.z, 0.0};
|
||||||
|
return {n4.x, n4.y, n4.z};
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr T inverse_length(vec<3, T> v)
|
||||||
|
{
|
||||||
|
float f = dot(v, v);
|
||||||
|
return 1.0f / sqrt(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr T screen_transform(T x, T y)
|
||||||
|
{
|
||||||
|
T x2 = x / 2.0;
|
||||||
|
T y2 = y / 2.0;
|
||||||
|
|
||||||
|
return {
|
||||||
|
y2, 0, 0, x2,
|
||||||
|
0, y2, 0, y2,
|
||||||
|
0, 0, 1, 0,
|
||||||
|
0, 0, 0, 1
|
||||||
|
};
|
||||||
|
}
|
||||||
29
include/math/vec.hpp
Normal file
29
include/math/vec.hpp
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
template <int L, typename T>
|
||||||
|
struct vec;
|
||||||
|
|
||||||
|
template <int L, typename T>
|
||||||
|
inline constexpr T magnitude(vec<L, T> const& v)
|
||||||
|
{
|
||||||
|
return sqrt(dot(v, v));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <int L, typename T>
|
||||||
|
inline constexpr T magnitude_squared(vec<L, T> const& v)
|
||||||
|
{
|
||||||
|
return dot(v, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <int L, typename T>
|
||||||
|
inline constexpr vec<L, T> normalize(vec<L, T> const& v)
|
||||||
|
{
|
||||||
|
T d = 1.0f / magnitude(v);
|
||||||
|
return v * d;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <int L, typename T>
|
||||||
|
inline constexpr vec<3, T> reflect(vec<L, T> const& i, vec<L, T> const& n)
|
||||||
|
{
|
||||||
|
return i - dot(n, i) * n * static_cast<T>(2.0);
|
||||||
|
}
|
||||||
154
include/math/vec2.hpp
Normal file
154
include/math/vec2.hpp
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "vec.hpp"
|
||||||
|
|
||||||
|
//
|
||||||
|
// vec3
|
||||||
|
//
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct vec<2, T>
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
T val[2];
|
||||||
|
struct { T x, y; };
|
||||||
|
struct { T u, v; };
|
||||||
|
};
|
||||||
|
|
||||||
|
inline constexpr vec();
|
||||||
|
inline constexpr vec(T scalar);
|
||||||
|
inline constexpr vec(T _x, T _y);
|
||||||
|
|
||||||
|
constexpr inline vec<2, T> operator-() const;
|
||||||
|
inline constexpr T & operator[](int i);
|
||||||
|
inline constexpr T const& operator[](int i) const;
|
||||||
|
inline constexpr vec<2, T>& operator=(vec<2, T> const& v);
|
||||||
|
inline constexpr vec<2, T>& operator+=(vec<2, T> const& v);
|
||||||
|
inline constexpr vec<2, T>& operator-=(vec<2, T> const& v);
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<2, T>::vec()
|
||||||
|
: x(0), y(0)
|
||||||
|
{}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<2, T>::vec(T scalar)
|
||||||
|
: x(scalar), y(scalar)
|
||||||
|
{}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<2, T>::vec(T _x, T _y)
|
||||||
|
: x(_x), y(_y)
|
||||||
|
{}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
constexpr inline vec<2, T> vec<2, T>::operator-() const
|
||||||
|
{
|
||||||
|
return vec<2, T>(-x, -y);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr T & vec<2, T>::operator[](int i)
|
||||||
|
{
|
||||||
|
return val[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr T const& vec<2, T>::operator[](int i) const
|
||||||
|
{
|
||||||
|
return val[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<2, T>& vec<2, T>::operator=(vec<2, T> const& v)
|
||||||
|
{
|
||||||
|
this->x = static_cast<T>(v.x);
|
||||||
|
this->y = static_cast<T>(v.y);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<2, T>& vec<2, T>::operator+=(vec<2, T> const& v)
|
||||||
|
{
|
||||||
|
*this = *this + vec<2, T>(v);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<2, T>& vec<2, T>::operator-=(vec<2, T> const& v)
|
||||||
|
{
|
||||||
|
*this = *this - vec<2, T>(v);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<2, T> operator+(vec<2, T> const& v1, vec<2, T> const& v2)
|
||||||
|
{
|
||||||
|
return vec<2, T>(v1.x + v2.x,
|
||||||
|
v1.y + v2.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<2, T> operator-(vec<2, T> const& v1, vec<2, T> const& v2)
|
||||||
|
{
|
||||||
|
return vec<2, T>(v1.x - v2.x,
|
||||||
|
v1.y - v2.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<2, T> operator*(vec<2, T> const& v1, vec<2, T> const& v2)
|
||||||
|
{
|
||||||
|
return vec<2, T>(v1.x * v2.x,
|
||||||
|
v1.y * v2.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<2, T> operator*(vec<2, T> const& v1, T const& scalar)
|
||||||
|
{
|
||||||
|
return v1 * vec<2, T>(scalar);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<2, T> operator*(T const& scalar, vec<2, T> const& v1)
|
||||||
|
{
|
||||||
|
return vec<2, T>(scalar) * v1;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<2, T> operator/(vec<2, T> const& v1, vec<2, T> const& v2)
|
||||||
|
{
|
||||||
|
return vec<2, T>(v1.x / v2.x,
|
||||||
|
v1.y / v2.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<2, T> operator/(vec<2, T> const& v1, T const& scalar)
|
||||||
|
{
|
||||||
|
return v1 / vec<2, T>(scalar);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr T dot(vec<2, T> const& v1, vec<2, T> const& v2)
|
||||||
|
{
|
||||||
|
vec<2, T> tmp(v1 * v2);
|
||||||
|
return tmp.x + tmp.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr T cross(vec<2, T> const& v1, vec<2, T> const& v2)
|
||||||
|
{
|
||||||
|
return v1.x * v2.y - v2.x * v1.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<2, T> functor1(T (&func) (T const& x), vec<2, T> const& v)
|
||||||
|
{
|
||||||
|
return vec<2, T>(func(v.x), func(v.y));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, typename U>
|
||||||
|
inline constexpr vec<2, U> functor1(U (&func) (T const& x), vec<2, T> const& v)
|
||||||
|
{
|
||||||
|
return vec<2, U>(func(v.x), func(v.y));
|
||||||
|
}
|
||||||
171
include/math/vec3.hpp
Normal file
171
include/math/vec3.hpp
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "vec.hpp"
|
||||||
|
|
||||||
|
//
|
||||||
|
// vec3
|
||||||
|
//
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct vec<3, T>
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
T val[3];
|
||||||
|
struct { T x, y, z; };
|
||||||
|
struct { T r, g, b; };
|
||||||
|
};
|
||||||
|
|
||||||
|
inline constexpr vec();
|
||||||
|
inline constexpr vec(T scalar);
|
||||||
|
inline constexpr vec(T _x, T _y, T _z);
|
||||||
|
|
||||||
|
constexpr inline vec<3, T> operator-() const;
|
||||||
|
inline constexpr T & operator[](int i);
|
||||||
|
inline constexpr T const& operator[](int i) const;
|
||||||
|
inline constexpr vec<3, T>& operator=(vec<3, T> const& v);
|
||||||
|
inline constexpr vec<3, T>& operator+=(vec<3, T> const& v);
|
||||||
|
inline constexpr vec<3, T>& operator-=(vec<3, T> const& v);
|
||||||
|
inline constexpr vec<3, T>& operator*=(T const& scalar);
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T>::vec()
|
||||||
|
: x(0), y(0), z(0)
|
||||||
|
{}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T>::vec(T scalar)
|
||||||
|
: x(scalar), y(scalar), z(scalar)
|
||||||
|
{}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T>::vec(T _x, T _y, T _z)
|
||||||
|
: x(_x), y(_y), z(_z)
|
||||||
|
{}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
constexpr inline vec<3, T> vec<3, T>::operator-() const
|
||||||
|
{
|
||||||
|
return vec<3, T>(-x, -y, -z);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr T & vec<3, T>::operator[](int i)
|
||||||
|
{
|
||||||
|
return val[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr T const& vec<3, T>::operator[](int i) const
|
||||||
|
{
|
||||||
|
return val[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T>& vec<3, T>::operator=(vec<3, T> const& v)
|
||||||
|
{
|
||||||
|
this->x = static_cast<T>(v.x);
|
||||||
|
this->y = static_cast<T>(v.y);
|
||||||
|
this->z = static_cast<T>(v.z);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T>& vec<3, T>::operator+=(vec<3, T> const& v)
|
||||||
|
{
|
||||||
|
*this = *this + vec<3, T>(v);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T>& vec<3, T>::operator-=(vec<3, T> const& v)
|
||||||
|
{
|
||||||
|
*this = *this - vec<3, T>(v);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T>& vec<3, T>::operator*=(T const& scalar)
|
||||||
|
{
|
||||||
|
*this = *this * scalar;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T> operator+(vec<3, T> const& v1, vec<3, T> const& v2)
|
||||||
|
{
|
||||||
|
return vec<3, T>(v1.x + v2.x,
|
||||||
|
v1.y + v2.y,
|
||||||
|
v1.z + v2.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T> operator-(vec<3, T> const& v1, vec<3, T> const& v2)
|
||||||
|
{
|
||||||
|
return vec<3, T>(v1.x - v2.x,
|
||||||
|
v1.y - v2.y,
|
||||||
|
v1.z - v2.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T> operator*(vec<3, T> const& v1, vec<3, T> const& v2)
|
||||||
|
{
|
||||||
|
return vec<3, T>(v1.x * v2.x,
|
||||||
|
v1.y * v2.y,
|
||||||
|
v1.z * v2.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T> operator*(vec<3, T> const& v1, T const& scalar)
|
||||||
|
{
|
||||||
|
return v1 * vec<3, T>(scalar);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T> operator*(T const& scalar, vec<3, T> const& v1)
|
||||||
|
{
|
||||||
|
return vec<3, T>(scalar) * v1;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T> operator/(vec<3, T> const& v1, vec<3, T> const& v2)
|
||||||
|
{
|
||||||
|
return vec<3, T>(v1.x / v2.x,
|
||||||
|
v1.y / v2.y,
|
||||||
|
v1.z / v2.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T> operator/(vec<3, T> const& v1, T const& scalar)
|
||||||
|
{
|
||||||
|
return v1 / vec<3, T>(scalar);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr T dot(vec<3, T> const& v1, vec<3, T> const& v2)
|
||||||
|
{
|
||||||
|
return
|
||||||
|
v1.x * v2.x +
|
||||||
|
v1.y * v2.y +
|
||||||
|
v1.z * v2.z;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T> cross(vec<3, T> const& v1, vec<3, T> const& v2)
|
||||||
|
{
|
||||||
|
return vec<3, T>(v1.y * v2.z - v2.y * v1.z,
|
||||||
|
v1.z * v2.x - v2.z * v1.x,
|
||||||
|
v1.x * v2.y - v2.x * v1.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<3, T> functor1(T (&func) (T const& x), vec<3, T> const& v)
|
||||||
|
{
|
||||||
|
return vec<3, T>(func(v.x), func(v.y), func(v.z));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, typename U>
|
||||||
|
inline constexpr vec<3, U> functor1(U (&func) (T const& x), vec<3, T> const& v)
|
||||||
|
{
|
||||||
|
return vec<3, U>(func(v.x), func(v.y), func(v.z));
|
||||||
|
}
|
||||||
164
include/math/vec4.hpp
Normal file
164
include/math/vec4.hpp
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "vec.hpp"
|
||||||
|
|
||||||
|
//
|
||||||
|
// vec4
|
||||||
|
//
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct vec<4, T>
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
T val[4];
|
||||||
|
struct { T x, y, z, w; };
|
||||||
|
struct { T a, r, g, b; };
|
||||||
|
};
|
||||||
|
|
||||||
|
inline constexpr vec();
|
||||||
|
inline constexpr vec(T scalar);
|
||||||
|
inline constexpr vec(T _x, T _y, T _z, T _w);
|
||||||
|
inline constexpr vec(const vec<3, T>& v);
|
||||||
|
|
||||||
|
constexpr inline vec<4, T> operator-() const;
|
||||||
|
inline constexpr T & operator[](int i);
|
||||||
|
inline constexpr T const& operator[](int i) const;
|
||||||
|
inline constexpr vec<4, T>& operator=(vec<4, T> const& v);
|
||||||
|
inline constexpr vec<4, T>& operator+=(vec<4, T> const& v);
|
||||||
|
inline constexpr vec<4, T>& operator-=(vec<4, T> const& v);
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<4, T>::vec()
|
||||||
|
: x(0), y(0), z(0), w(0)
|
||||||
|
{}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<4, T>::vec(T scalar)
|
||||||
|
: x(scalar), y(scalar), z(scalar), w(scalar)
|
||||||
|
{}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<4, T>::vec(T _x, T _y, T _z, T _w)
|
||||||
|
: x(_x), y(_y), z(_z), w(_w)
|
||||||
|
{}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<4, T>::vec(const vec<3, T>& v)
|
||||||
|
: x(v.x), y(v.y), z(v.z), w(1.f)
|
||||||
|
{}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
constexpr inline vec<4, T> vec<4, T>::operator-() const
|
||||||
|
{
|
||||||
|
return vec<4, T>(-x, -y, -z, -w);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr T & vec<4, T>::operator[](int i)
|
||||||
|
{
|
||||||
|
return val[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr T const& vec<4, T>::operator[](int i) const
|
||||||
|
{
|
||||||
|
return val[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<4, T>& vec<4, T>::operator=(vec<4, T> const& v)
|
||||||
|
{
|
||||||
|
this->x = static_cast<T>(v.x);
|
||||||
|
this->y = static_cast<T>(v.y);
|
||||||
|
this->z = static_cast<T>(v.z);
|
||||||
|
this->w = static_cast<T>(v.w);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<4, T>& vec<4, T>::operator+=(vec<4, T> const& v)
|
||||||
|
{
|
||||||
|
*this = *this + vec<4, T>(v);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<4, T>& vec<4, T>::operator-=(vec<4, T> const& v)
|
||||||
|
{
|
||||||
|
*this = *this - vec<4, T>(v);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<4, T> operator+(vec<4, T> const& v1, vec<4, T> const& v2)
|
||||||
|
{
|
||||||
|
return vec<4, T>(v1.x + v2.x,
|
||||||
|
v1.y + v2.y,
|
||||||
|
v1.z + v2.z,
|
||||||
|
v1.w + v2.w);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<4, T> operator-(vec<4, T> const& v1, vec<4, T> const& v2)
|
||||||
|
{
|
||||||
|
return vec<4, T>(v1.x - v2.x,
|
||||||
|
v1.y - v2.y,
|
||||||
|
v1.z - v2.z,
|
||||||
|
v1.w - v2.w);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<4, T> operator*(vec<4, T> const& v1, vec<4, T> const& v2)
|
||||||
|
{
|
||||||
|
return vec<4, T>(v1.x * v2.x,
|
||||||
|
v1.y * v2.y,
|
||||||
|
v1.z * v2.z,
|
||||||
|
v1.w * v2.w);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<4, T> operator*(vec<4, T> const& v1, T const& scalar)
|
||||||
|
{
|
||||||
|
return v1 * vec<4, T>(scalar);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<4, T> operator*(T const& scalar, vec<4, T> const& v1)
|
||||||
|
{
|
||||||
|
return vec<4, T>(scalar) * v1;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<4, T> operator/(vec<4, T> const& v1, vec<4, T> const& v2)
|
||||||
|
{
|
||||||
|
return vec<4, T>(v1.x / v2.x,
|
||||||
|
v1.y / v2.y,
|
||||||
|
v1.z / v2.z,
|
||||||
|
v1.w / v2.w);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<4, T> operator/(vec<4, T> const& v1, T const& scalar)
|
||||||
|
{
|
||||||
|
return v1 / vec<4, T>(scalar);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr T dot(vec<4, T> const& v1, vec<4, T> const& v2)
|
||||||
|
{
|
||||||
|
vec<4, T> tmp(v1 * v2);
|
||||||
|
return tmp.x + tmp.y + tmp.z + tmp.w;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline constexpr vec<4, T> functor1(T (&func) (T const& x), vec<4, T> const& v)
|
||||||
|
{
|
||||||
|
return vec<4, T>(func(v.x), func(v.y), func(v.z), func(v.w));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, typename U>
|
||||||
|
inline constexpr vec<4, U> functor1(U (&func) (T const& x), vec<4, T> const& v)
|
||||||
|
{
|
||||||
|
return vec<4, U>(func(v.x), func(v.y), func(v.z), func(v.w));
|
||||||
|
}
|
||||||
808
include/model/brick.h
Normal file
808
include/model/brick.h
Normal file
@ -0,0 +1,808 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
const int brick_Cube_triangles[] = {
|
||||||
|
0, 1, 2,
|
||||||
|
3, 4, 5,
|
||||||
|
6, 7, 8,
|
||||||
|
9, 10, 11,
|
||||||
|
12, 13, 14,
|
||||||
|
15, 16, 17,
|
||||||
|
18, 19, 20,
|
||||||
|
21, 22, 23,
|
||||||
|
24, 25, 26,
|
||||||
|
27, 28, 29,
|
||||||
|
30, 31, 32,
|
||||||
|
33, 34, 35,
|
||||||
|
36, 37, 38,
|
||||||
|
39, 40, 41,
|
||||||
|
42, 43, 44,
|
||||||
|
45, 46, 47,
|
||||||
|
48, 49, 50,
|
||||||
|
51, 52, 53,
|
||||||
|
54, 55, 56,
|
||||||
|
57, 58, 59,
|
||||||
|
60, 61, 62,
|
||||||
|
63, 64, 65,
|
||||||
|
66, 67, 68,
|
||||||
|
69, 70, 71,
|
||||||
|
72, 73, 74,
|
||||||
|
75, 76, 77,
|
||||||
|
78, 79, 80,
|
||||||
|
81, 82, 83,
|
||||||
|
84, 85, 86,
|
||||||
|
87, 88, 89,
|
||||||
|
90, 91, 92,
|
||||||
|
93, 94, 95,
|
||||||
|
96, 97, 98,
|
||||||
|
99, 100, 101,
|
||||||
|
102, 103, 104,
|
||||||
|
105, 106, 107,
|
||||||
|
108, 109, 110,
|
||||||
|
111, 112, 113,
|
||||||
|
114, 115, 116,
|
||||||
|
117, 118, 119,
|
||||||
|
120, 121, 122,
|
||||||
|
123, 124, 125,
|
||||||
|
126, 127, 128,
|
||||||
|
129, 130, 131,
|
||||||
|
132, 133, 134,
|
||||||
|
135, 136, 137,
|
||||||
|
138, 139, 140,
|
||||||
|
141, 142, 143,
|
||||||
|
144, 145, 146,
|
||||||
|
147, 148, 149,
|
||||||
|
150, 151, 152,
|
||||||
|
153, 154, 155,
|
||||||
|
156, 157, 158,
|
||||||
|
159, 160, 161,
|
||||||
|
162, 163, 164,
|
||||||
|
165, 166, 167,
|
||||||
|
168, 169, 170,
|
||||||
|
171, 172, 173,
|
||||||
|
174, 175, 176,
|
||||||
|
177, 178, 179,
|
||||||
|
180, 181, 182,
|
||||||
|
183, 184, 185,
|
||||||
|
186, 187, 188,
|
||||||
|
189, 190, 191,
|
||||||
|
192, 193, 194,
|
||||||
|
195, 196, 197,
|
||||||
|
198, 199, 200,
|
||||||
|
201, 202, 203,
|
||||||
|
204, 205, 206,
|
||||||
|
207, 208, 209,
|
||||||
|
210, 211, 212,
|
||||||
|
213, 214, 215,
|
||||||
|
216, 217, 218,
|
||||||
|
219, 220, 221,
|
||||||
|
222, 223, 224,
|
||||||
|
225, 226, 227,
|
||||||
|
228, 229, 230,
|
||||||
|
231, 232, 233,
|
||||||
|
234, 235, 236,
|
||||||
|
237, 238, 239,
|
||||||
|
240, 241, 242,
|
||||||
|
243, 244, 245,
|
||||||
|
246, 247, 248,
|
||||||
|
249, 250, 251,
|
||||||
|
252, 253, 254,
|
||||||
|
255, 256, 257,
|
||||||
|
258, 259, 260,
|
||||||
|
261, 262, 263,
|
||||||
|
264, 265, 266,
|
||||||
|
267, 268, 269,
|
||||||
|
270, 271, 272,
|
||||||
|
273, 274, 275,
|
||||||
|
276, 277, 278,
|
||||||
|
279, 280, 281,
|
||||||
|
282, 283, 284,
|
||||||
|
285, 286, 287,
|
||||||
|
288, 289, 290,
|
||||||
|
291, 292, 293,
|
||||||
|
294, 295, 296,
|
||||||
|
297, 298, 299,
|
||||||
|
300, 301, 302,
|
||||||
|
303, 304, 305,
|
||||||
|
306, 307, 308,
|
||||||
|
309, 310, 311,
|
||||||
|
312, 313, 314,
|
||||||
|
315, 316, 317,
|
||||||
|
2, 318, 319,
|
||||||
|
319, 320, 321,
|
||||||
|
321, 322, 323,
|
||||||
|
323, 324, 0,
|
||||||
|
0, 325, 326,
|
||||||
|
326, 327, 1,
|
||||||
|
1, 328, 329,
|
||||||
|
329, 330, 2,
|
||||||
|
2, 319, 321,
|
||||||
|
321, 323, 0,
|
||||||
|
0, 326, 1,
|
||||||
|
1, 329, 2,
|
||||||
|
2, 321, 0,
|
||||||
|
331, 332, 333,
|
||||||
|
334, 335, 336,
|
||||||
|
337, 338, 339,
|
||||||
|
12, 340, 13,
|
||||||
|
341, 342, 343,
|
||||||
|
344, 345, 346,
|
||||||
|
347, 348, 349,
|
||||||
|
350, 351, 352,
|
||||||
|
353, 354, 355,
|
||||||
|
356, 357, 358,
|
||||||
|
359, 360, 361,
|
||||||
|
362, 363, 364,
|
||||||
|
365, 366, 367,
|
||||||
|
368, 369, 370,
|
||||||
|
371, 372, 373,
|
||||||
|
374, 375, 376,
|
||||||
|
377, 378, 379,
|
||||||
|
380, 381, 382,
|
||||||
|
383, 384, 385,
|
||||||
|
386, 387, 388,
|
||||||
|
389, 390, 391,
|
||||||
|
392, 393, 394,
|
||||||
|
395, 396, 397,
|
||||||
|
398, 399, 400,
|
||||||
|
401, 402, 403,
|
||||||
|
404, 405, 406,
|
||||||
|
407, 408, 409,
|
||||||
|
410, 411, 412,
|
||||||
|
99, 413, 100,
|
||||||
|
102, 414, 103,
|
||||||
|
105, 415, 106,
|
||||||
|
108, 416, 109,
|
||||||
|
111, 417, 112,
|
||||||
|
114, 418, 115,
|
||||||
|
117, 419, 118,
|
||||||
|
120, 420, 121,
|
||||||
|
123, 421, 124,
|
||||||
|
126, 422, 127,
|
||||||
|
129, 423, 130,
|
||||||
|
132, 424, 133,
|
||||||
|
425, 426, 427,
|
||||||
|
428, 429, 430,
|
||||||
|
141, 431, 142,
|
||||||
|
432, 433, 434,
|
||||||
|
435, 436, 437,
|
||||||
|
438, 439, 440,
|
||||||
|
441, 442, 443,
|
||||||
|
156, 444, 157,
|
||||||
|
159, 445, 160,
|
||||||
|
446, 447, 448,
|
||||||
|
165, 449, 166,
|
||||||
|
450, 451, 452,
|
||||||
|
453, 454, 455,
|
||||||
|
456, 457, 458,
|
||||||
|
459, 460, 461,
|
||||||
|
462, 463, 464,
|
||||||
|
465, 466, 467,
|
||||||
|
468, 469, 470,
|
||||||
|
471, 472, 473,
|
||||||
|
474, 475, 476,
|
||||||
|
477, 478, 479,
|
||||||
|
480, 481, 482,
|
||||||
|
483, 484, 485,
|
||||||
|
486, 487, 488,
|
||||||
|
489, 490, 491,
|
||||||
|
492, 493, 494,
|
||||||
|
495, 496, 497,
|
||||||
|
498, 499, 500,
|
||||||
|
501, 502, 503,
|
||||||
|
504, 505, 506,
|
||||||
|
507, 508, 509,
|
||||||
|
510, 511, 512,
|
||||||
|
513, 514, 515,
|
||||||
|
516, 517, 518,
|
||||||
|
519, 520, 521,
|
||||||
|
522, 523, 524,
|
||||||
|
525, 526, 527,
|
||||||
|
528, 529, 530,
|
||||||
|
531, 532, 533,
|
||||||
|
534, 535, 536,
|
||||||
|
537, 538, 539,
|
||||||
|
540, 541, 542,
|
||||||
|
543, 544, 545,
|
||||||
|
546, 547, 548,
|
||||||
|
549, 550, 551,
|
||||||
|
552, 553, 554,
|
||||||
|
555, 556, 557,
|
||||||
|
558, 559, 560,
|
||||||
|
279, 561, 280,
|
||||||
|
282, 562, 283,
|
||||||
|
285, 563, 286,
|
||||||
|
288, 564, 289,
|
||||||
|
291, 565, 292,
|
||||||
|
294, 566, 295,
|
||||||
|
297, 567, 298,
|
||||||
|
300, 568, 301,
|
||||||
|
303, 569, 304,
|
||||||
|
306, 570, 307,
|
||||||
|
309, 571, 310,
|
||||||
|
312, 572, 313,
|
||||||
|
573, 574, 575,
|
||||||
|
};
|
||||||
|
|
||||||
|
const int brick_Cube_triangles_length = (sizeof (brick_Cube_triangles)) / (sizeof (brick_Cube_triangles[0]));
|
||||||
|
|
||||||
|
const float brick_vertices[] = {
|
||||||
|
-0.817802f, 0.000000f, -0.831219f, 0.044995f, 0.962648f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
0.831219f, 0.000000f, -0.803721f, 0.962429f, 0.947171f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
0.817802f, 0.000000f, 0.831219f, 0.955005f, 0.037352f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
0.653358f, 0.454219f, -0.400308f, 1.000000f, 0.967273f, 0.7923f, 0.5855f, -0.1715f,
|
||||||
|
0.873530f, 0.050904f, -0.760079f, 1.000000f, 0.947586f, 0.7923f, 0.5855f, -0.1715f,
|
||||||
|
0.864231f, 0.050306f, -0.805079f, 0.998435f, 0.975457f, 0.7923f, 0.5855f, -0.1715f,
|
||||||
|
0.625297f, 0.458580f, 0.428311f, 0.977775f, 0.000000f, 0.5441f, 0.7184f, 0.4334f,
|
||||||
|
0.864231f, 0.050306f, 0.805079f, 0.998435f, 0.024543f, 0.5441f, 0.7184f, 0.4334f,
|
||||||
|
0.653358f, 0.454219f, 0.400308f, 1.000000f, 0.032727f, 0.5441f, 0.7184f, 0.4334f,
|
||||||
|
-0.593538f, 0.452916f, -0.447084f, 0.048994f, 1.000000f, -0.2348f, 0.7466f, -0.6225f,
|
||||||
|
-0.838522f, 0.049848f, -0.838097f, 0.019196f, 0.998032f, -0.2348f, 0.7466f, -0.6225f,
|
||||||
|
-0.625297f, 0.458580f, -0.428311f, 0.022225f, 1.000000f, -0.2348f, 0.7466f, -0.6225f,
|
||||||
|
0.573413f, 0.500000f, 0.333413f, 0.947979f, 0.083234f, -0.0000f, 1.0000f, -0.0000f,
|
||||||
|
-0.573413f, 0.500000f, -0.333413f, 0.052021f, 0.916766f, -0.0000f, 1.0000f, -0.0000f,
|
||||||
|
-0.573413f, 0.500000f, 0.333413f, 0.052021f, 0.083234f, -0.0000f, 1.0000f, -0.0000f,
|
||||||
|
0.653358f, 0.454219f, -0.400308f, 1.000000f, 0.967273f, 0.7282f, 0.6745f, -0.1215f,
|
||||||
|
0.645925f, 0.469791f, -0.358414f, 1.000000f, 0.934301f, 0.7282f, 0.6745f, -0.1215f,
|
||||||
|
0.670720f, 0.440923f, -0.370061f, 1.000000f, 0.924907f, 0.7282f, 0.6745f, -0.1215f,
|
||||||
|
0.653358f, 0.454219f, -0.400308f, 1.000000f, 0.967273f, 0.5040f, 0.7407f, -0.4442f,
|
||||||
|
0.617215f, 0.476518f, -0.404137f, 0.978658f, 1.000000f, 0.5040f, 0.7407f, -0.4442f,
|
||||||
|
0.635801f, 0.474526f, -0.386369f, 1.000000f, 0.971374f, 0.5040f, 0.7407f, -0.4442f,
|
||||||
|
0.587151f, 0.475900f, -0.414338f, 0.954276f, 1.000000f, 0.1743f, 0.8216f, -0.5427f,
|
||||||
|
0.625297f, 0.458580f, -0.428311f, 0.977775f, 1.000000f, 0.1743f, 0.8216f, -0.5427f,
|
||||||
|
0.593538f, 0.452916f, -0.447084f, 0.951006f, 1.000000f, 0.1743f, 0.8216f, -0.5427f,
|
||||||
|
0.587151f, 0.475900f, -0.414338f, 0.954276f, 1.000000f, 0.0997f, 0.9314f, -0.3501f,
|
||||||
|
0.612471f, 0.486997f, -0.377607f, 0.978493f, 0.972008f, 0.0997f, 0.9314f, -0.3501f,
|
||||||
|
0.617215f, 0.476518f, -0.404137f, 0.978658f, 1.000000f, 0.0997f, 0.9314f, -0.3501f,
|
||||||
|
0.610465f, 0.491320f, -0.345059f, 0.976926f, 0.931324f, 0.1837f, 0.9729f, -0.1406f,
|
||||||
|
0.579800f, 0.493098f, -0.372820f, 0.952969f, 0.966026f, 0.1837f, 0.9729f, -0.1406f,
|
||||||
|
0.573413f, 0.500000f, -0.333413f, 0.947979f, 0.916766f, 0.1837f, 0.9729f, -0.1406f,
|
||||||
|
0.645925f, 0.469791f, -0.358414f, 1.000000f, 0.934301f, 0.4936f, 0.8655f, -0.0845f,
|
||||||
|
0.612471f, 0.486997f, -0.377607f, 0.978493f, 0.972008f, 0.4936f, 0.8655f, -0.0845f,
|
||||||
|
0.610465f, 0.491320f, -0.345059f, 0.976926f, 0.931324f, 0.4936f, 0.8655f, -0.0845f,
|
||||||
|
0.635801f, 0.474526f, -0.386369f, 1.000000f, 0.971374f, 0.3667f, 0.8858f, -0.2843f,
|
||||||
|
0.617215f, 0.476518f, -0.404137f, 0.978658f, 1.000000f, 0.3667f, 0.8858f, -0.2843f,
|
||||||
|
0.612471f, 0.486997f, -0.377607f, 0.978493f, 0.972008f, 0.3667f, 0.8858f, -0.2843f,
|
||||||
|
-0.645925f, 0.469791f, -0.358414f, 0.000000f, 0.934302f, -0.7282f, 0.6745f, -0.1215f,
|
||||||
|
-0.653358f, 0.454219f, -0.400308f, 0.000000f, 0.967273f, -0.7282f, 0.6745f, -0.1215f,
|
||||||
|
-0.670720f, 0.440923f, -0.370061f, 0.000000f, 0.924907f, -0.7282f, 0.6745f, -0.1215f,
|
||||||
|
-0.645925f, 0.469791f, -0.358414f, 0.000000f, 0.934302f, -0.4658f, 0.8847f, -0.0188f,
|
||||||
|
-0.612471f, 0.486997f, -0.377607f, 0.021507f, 0.972008f, -0.4658f, 0.8847f, -0.0188f,
|
||||||
|
-0.635801f, 0.474526f, -0.386368f, 0.000000f, 0.971374f, -0.4658f, 0.8847f, -0.0188f,
|
||||||
|
-0.579800f, 0.493098f, -0.372820f, 0.047031f, 0.966026f, -0.1837f, 0.9729f, -0.1406f,
|
||||||
|
-0.610465f, 0.491320f, -0.345059f, 0.023074f, 0.931324f, -0.1837f, 0.9729f, -0.1406f,
|
||||||
|
-0.573413f, 0.500000f, -0.333413f, 0.052021f, 0.916766f, -0.1837f, 0.9729f, -0.1406f,
|
||||||
|
-0.587151f, 0.475900f, -0.414338f, 0.045724f, 1.000000f, -0.1197f, 0.9246f, -0.3618f,
|
||||||
|
-0.612471f, 0.486997f, -0.377607f, 0.021507f, 0.972008f, -0.1197f, 0.9246f, -0.3618f,
|
||||||
|
-0.579800f, 0.493098f, -0.372820f, 0.047031f, 0.966026f, -0.1197f, 0.9246f, -0.3618f,
|
||||||
|
-0.625297f, 0.458580f, -0.428311f, 0.022225f, 1.000000f, -0.1743f, 0.8216f, -0.5427f,
|
||||||
|
-0.587151f, 0.475900f, -0.414338f, 0.045724f, 1.000000f, -0.1743f, 0.8216f, -0.5427f,
|
||||||
|
-0.593538f, 0.452916f, -0.447084f, 0.048994f, 1.000000f, -0.1743f, 0.8216f, -0.5427f,
|
||||||
|
-0.653358f, 0.454219f, -0.400308f, 0.000000f, 0.967273f, -0.5124f, 0.7627f, -0.3947f,
|
||||||
|
-0.617215f, 0.476518f, -0.404137f, 0.021342f, 1.000000f, -0.5124f, 0.7627f, -0.3947f,
|
||||||
|
-0.625297f, 0.458580f, -0.428311f, 0.022225f, 1.000000f, -0.5124f, 0.7627f, -0.3947f,
|
||||||
|
-0.635801f, 0.474526f, -0.386368f, 0.000000f, 0.971374f, -0.3667f, 0.8858f, -0.2843f,
|
||||||
|
-0.612471f, 0.486997f, -0.377607f, 0.021507f, 0.972008f, -0.3667f, 0.8858f, -0.2843f,
|
||||||
|
-0.617215f, 0.476518f, -0.404137f, 0.021342f, 1.000000f, -0.3667f, 0.8858f, -0.2843f,
|
||||||
|
0.645925f, 0.469791f, 0.358414f, 1.000000f, 0.065698f, 0.7282f, 0.6745f, 0.1215f,
|
||||||
|
0.653358f, 0.454219f, 0.400308f, 1.000000f, 0.032727f, 0.7282f, 0.6745f, 0.1215f,
|
||||||
|
0.670720f, 0.440923f, 0.370061f, 1.000000f, 0.075093f, 0.7282f, 0.6745f, 0.1215f,
|
||||||
|
0.645925f, 0.469791f, 0.358414f, 1.000000f, 0.065698f, 0.4658f, 0.8847f, 0.0188f,
|
||||||
|
0.612471f, 0.486997f, 0.377607f, 0.978493f, 0.027992f, 0.4658f, 0.8847f, 0.0188f,
|
||||||
|
0.635801f, 0.474526f, 0.386368f, 1.000000f, 0.028626f, 0.4658f, 0.8847f, 0.0188f,
|
||||||
|
0.579800f, 0.493098f, 0.372820f, 0.952969f, 0.033974f, 0.1837f, 0.9729f, 0.1406f,
|
||||||
|
0.610465f, 0.491320f, 0.345059f, 0.976926f, 0.068676f, 0.1837f, 0.9729f, 0.1406f,
|
||||||
|
0.573413f, 0.500000f, 0.333413f, 0.947979f, 0.083234f, 0.1837f, 0.9729f, 0.1406f,
|
||||||
|
0.587151f, 0.475900f, 0.414338f, 0.954276f, 0.000000f, 0.1197f, 0.9246f, 0.3618f,
|
||||||
|
0.612471f, 0.486997f, 0.377607f, 0.978493f, 0.027992f, 0.1197f, 0.9246f, 0.3618f,
|
||||||
|
0.579800f, 0.493098f, 0.372820f, 0.952969f, 0.033974f, 0.1197f, 0.9246f, 0.3618f,
|
||||||
|
0.625297f, 0.458580f, 0.428311f, 0.977775f, 0.000000f, 0.1743f, 0.8216f, 0.5427f,
|
||||||
|
0.587151f, 0.475900f, 0.414338f, 0.954276f, 0.000000f, 0.1743f, 0.8216f, 0.5427f,
|
||||||
|
0.593538f, 0.452916f, 0.447084f, 0.951006f, 0.000000f, 0.1743f, 0.8216f, 0.5427f,
|
||||||
|
0.653358f, 0.454219f, 0.400308f, 1.000000f, 0.032727f, 0.5124f, 0.7627f, 0.3947f,
|
||||||
|
0.617215f, 0.476518f, 0.404137f, 0.978658f, 0.000000f, 0.5124f, 0.7627f, 0.3947f,
|
||||||
|
0.625297f, 0.458580f, 0.428311f, 0.977775f, 0.000000f, 0.5124f, 0.7627f, 0.3947f,
|
||||||
|
0.635801f, 0.474526f, 0.386368f, 1.000000f, 0.028626f, 0.3667f, 0.8858f, 0.2843f,
|
||||||
|
0.612471f, 0.486997f, 0.377607f, 0.978493f, 0.027992f, 0.3667f, 0.8858f, 0.2843f,
|
||||||
|
0.617215f, 0.476518f, 0.404137f, 0.978658f, 0.000000f, 0.3667f, 0.8858f, 0.2843f,
|
||||||
|
-0.587151f, 0.475900f, 0.414338f, 0.045724f, 0.000000f, -0.1743f, 0.8216f, 0.5427f,
|
||||||
|
-0.625297f, 0.458580f, 0.428311f, 0.022225f, 0.000000f, -0.1743f, 0.8216f, 0.5427f,
|
||||||
|
-0.593538f, 0.452916f, 0.447084f, 0.048994f, 0.000000f, -0.1743f, 0.8216f, 0.5427f,
|
||||||
|
-0.587151f, 0.475900f, 0.414338f, 0.045724f, 0.000000f, -0.0997f, 0.9314f, 0.3501f,
|
||||||
|
-0.612471f, 0.486997f, 0.377607f, 0.021507f, 0.027992f, -0.0997f, 0.9314f, 0.3501f,
|
||||||
|
-0.617215f, 0.476518f, 0.404137f, 0.021342f, 0.000000f, -0.0997f, 0.9314f, 0.3501f,
|
||||||
|
-0.610465f, 0.491320f, 0.345059f, 0.023074f, 0.068676f, -0.1837f, 0.9729f, 0.1406f,
|
||||||
|
-0.579800f, 0.493098f, 0.372820f, 0.047031f, 0.033974f, -0.1837f, 0.9729f, 0.1406f,
|
||||||
|
-0.573413f, 0.500000f, 0.333413f, 0.052021f, 0.083234f, -0.1837f, 0.9729f, 0.1406f,
|
||||||
|
-0.645925f, 0.469791f, 0.358414f, 0.000000f, 0.065698f, -0.4936f, 0.8655f, 0.0845f,
|
||||||
|
-0.612471f, 0.486997f, 0.377607f, 0.021507f, 0.027992f, -0.4936f, 0.8655f, 0.0845f,
|
||||||
|
-0.610465f, 0.491320f, 0.345059f, 0.023074f, 0.068676f, -0.4936f, 0.8655f, 0.0845f,
|
||||||
|
-0.653358f, 0.454219f, 0.400308f, 0.000000f, 0.032727f, -0.7282f, 0.6745f, 0.1215f,
|
||||||
|
-0.645925f, 0.469791f, 0.358414f, 0.000000f, 0.065698f, -0.7282f, 0.6745f, 0.1215f,
|
||||||
|
-0.670720f, 0.440923f, 0.370061f, 0.000000f, 0.075093f, -0.7282f, 0.6745f, 0.1215f,
|
||||||
|
-0.653358f, 0.454219f, 0.400308f, 0.000000f, 0.032727f, -0.5040f, 0.7407f, 0.4442f,
|
||||||
|
-0.617215f, 0.476518f, 0.404137f, 0.021342f, 0.000000f, -0.5040f, 0.7407f, 0.4442f,
|
||||||
|
-0.635801f, 0.474526f, 0.386369f, 0.000000f, 0.028626f, -0.5040f, 0.7407f, 0.4442f,
|
||||||
|
-0.617215f, 0.476518f, 0.404137f, 0.021342f, 0.000000f, -0.3667f, 0.8858f, 0.2843f,
|
||||||
|
-0.612471f, 0.486997f, 0.377607f, 0.021507f, 0.027992f, -0.3667f, 0.8858f, 0.2843f,
|
||||||
|
-0.635801f, 0.474526f, 0.386369f, 0.000000f, 0.028626f, -0.3667f, 0.8858f, 0.2843f,
|
||||||
|
0.670720f, 0.440923f, -0.370061f, 1.000000f, 0.924907f, 0.7586f, 0.6516f, -0.0000f,
|
||||||
|
0.645925f, 0.469791f, 0.358414f, 1.000000f, 0.065698f, 0.7586f, 0.6516f, -0.0000f,
|
||||||
|
0.670720f, 0.440923f, 0.370061f, 1.000000f, 0.075093f, 0.7586f, 0.6516f, -0.0000f,
|
||||||
|
0.645925f, 0.469791f, -0.358414f, 1.000000f, 0.934301f, 0.5190f, 0.8548f, -0.0000f,
|
||||||
|
0.610465f, 0.491320f, 0.345059f, 0.976926f, 0.068676f, 0.5190f, 0.8548f, -0.0000f,
|
||||||
|
0.645925f, 0.469791f, 0.358414f, 1.000000f, 0.065698f, 0.5190f, 0.8548f, -0.0000f,
|
||||||
|
0.610465f, 0.491320f, 0.345059f, 0.976926f, 0.068676f, 0.2281f, 0.9736f, -0.0000f,
|
||||||
|
0.573413f, 0.500000f, -0.333413f, 0.947979f, 0.916766f, 0.2281f, 0.9736f, -0.0000f,
|
||||||
|
0.573413f, 0.500000f, 0.333413f, 0.947979f, 0.083234f, 0.2281f, 0.9736f, -0.0000f,
|
||||||
|
0.593538f, 0.452916f, 0.447084f, 0.951006f, 0.000000f, -0.0000f, 0.8185f, 0.5745f,
|
||||||
|
-0.587151f, 0.475900f, 0.414338f, 0.045724f, 0.000000f, -0.0000f, 0.8185f, 0.5745f,
|
||||||
|
-0.593538f, 0.452916f, 0.447084f, 0.048994f, 0.000000f, -0.0000f, 0.8185f, 0.5745f,
|
||||||
|
-0.587151f, 0.475900f, 0.414338f, 0.045724f, 0.000000f, -0.0000f, 0.9239f, 0.3827f,
|
||||||
|
0.579800f, 0.493098f, 0.372820f, 0.952969f, 0.033974f, -0.0000f, 0.9239f, 0.3827f,
|
||||||
|
-0.579800f, 0.493098f, 0.372820f, 0.047031f, 0.033974f, -0.0000f, 0.9239f, 0.3827f,
|
||||||
|
0.579800f, 0.493098f, 0.372820f, 0.952969f, 0.033974f, -0.0000f, 0.9850f, 0.1725f,
|
||||||
|
-0.573413f, 0.500000f, 0.333413f, 0.052021f, 0.083234f, -0.0000f, 0.9850f, 0.1725f,
|
||||||
|
-0.579800f, 0.493098f, 0.372820f, 0.047031f, 0.033974f, -0.0000f, 0.9850f, 0.1725f,
|
||||||
|
-0.670720f, 0.440923f, 0.370061f, 0.000000f, 0.075093f, -0.7586f, 0.6516f, -0.0000f,
|
||||||
|
-0.645925f, 0.469791f, -0.358414f, 0.000000f, 0.934302f, -0.7586f, 0.6516f, -0.0000f,
|
||||||
|
-0.670720f, 0.440923f, -0.370061f, 0.000000f, 0.924907f, -0.7586f, 0.6516f, -0.0000f,
|
||||||
|
-0.645925f, 0.469791f, 0.358414f, 0.000000f, 0.065698f, -0.5190f, 0.8548f, -0.0000f,
|
||||||
|
-0.610465f, 0.491320f, -0.345059f, 0.023074f, 0.931324f, -0.5190f, 0.8548f, -0.0000f,
|
||||||
|
-0.645925f, 0.469791f, -0.358414f, 0.000000f, 0.934302f, -0.5190f, 0.8548f, -0.0000f,
|
||||||
|
-0.610465f, 0.491320f, -0.345059f, 0.023074f, 0.931324f, -0.2281f, 0.9736f, -0.0000f,
|
||||||
|
-0.573413f, 0.500000f, 0.333413f, 0.052021f, 0.083234f, -0.2281f, 0.9736f, -0.0000f,
|
||||||
|
-0.573413f, 0.500000f, -0.333413f, 0.052021f, 0.916766f, -0.2281f, 0.9736f, -0.0000f,
|
||||||
|
-0.593538f, 0.452916f, -0.447084f, 0.048994f, 1.000000f, -0.0000f, 0.8185f, -0.5745f,
|
||||||
|
0.587151f, 0.475900f, -0.414338f, 0.954276f, 1.000000f, -0.0000f, 0.8185f, -0.5745f,
|
||||||
|
0.593538f, 0.452916f, -0.447084f, 0.951006f, 1.000000f, -0.0000f, 0.8185f, -0.5745f,
|
||||||
|
0.587151f, 0.475900f, -0.414338f, 0.954276f, 1.000000f, -0.0000f, 0.9239f, -0.3827f,
|
||||||
|
-0.579800f, 0.493098f, -0.372820f, 0.047031f, 0.966026f, -0.0000f, 0.9239f, -0.3827f,
|
||||||
|
0.579800f, 0.493098f, -0.372820f, 0.952969f, 0.966026f, -0.0000f, 0.9239f, -0.3827f,
|
||||||
|
-0.579800f, 0.493098f, -0.372820f, 0.047031f, 0.966026f, -0.0000f, 0.9850f, -0.1725f,
|
||||||
|
0.573413f, 0.500000f, -0.333413f, 0.947979f, 0.916766f, -0.0000f, 0.9850f, -0.1725f,
|
||||||
|
0.579800f, 0.493098f, -0.372820f, 0.952969f, 0.966026f, -0.0000f, 0.9850f, -0.1725f,
|
||||||
|
-0.864231f, 0.050306f, 0.805079f, 0.001565f, 0.024543f, -0.5441f, 0.7184f, 0.4334f,
|
||||||
|
-0.625297f, 0.458580f, 0.428311f, 0.022225f, 0.000000f, -0.5441f, 0.7184f, 0.4334f,
|
||||||
|
-0.653358f, 0.454219f, 0.400308f, 0.000000f, 0.032727f, -0.5441f, 0.7184f, 0.4334f,
|
||||||
|
-0.873530f, 0.050904f, 0.760079f, 0.000000f, 0.052414f, -0.7820f, 0.5943f, 0.1876f,
|
||||||
|
-0.653358f, 0.454219f, 0.400308f, 0.000000f, 0.032727f, -0.7820f, 0.5943f, 0.1876f,
|
||||||
|
-0.670720f, 0.440923f, 0.370061f, 0.000000f, 0.075093f, -0.7820f, 0.5943f, 0.1876f,
|
||||||
|
0.593538f, 0.452916f, 0.447084f, 0.951006f, 0.000000f, -0.0000f, 0.7071f, 0.7071f,
|
||||||
|
-0.803194f, 0.049732f, 0.850268f, 0.040466f, 0.000000f, -0.0000f, 0.7071f, 0.7071f,
|
||||||
|
0.803194f, 0.049732f, 0.850268f, 0.959534f, 0.000000f, -0.0000f, 0.7071f, 0.7071f,
|
||||||
|
-0.838522f, 0.049848f, 0.838097f, 0.019196f, 0.001968f, -0.2348f, 0.7466f, 0.6225f,
|
||||||
|
-0.593538f, 0.452916f, 0.447084f, 0.048994f, 0.000000f, -0.2348f, 0.7466f, 0.6225f,
|
||||||
|
-0.625297f, 0.458580f, 0.428311f, 0.022225f, 0.000000f, -0.2348f, 0.7466f, 0.6225f,
|
||||||
|
0.593538f, 0.452916f, 0.447084f, 0.951006f, 0.000000f, 0.2348f, 0.7466f, 0.6225f,
|
||||||
|
0.838522f, 0.049848f, 0.838097f, 0.980804f, 0.001968f, 0.2348f, 0.7466f, 0.6225f,
|
||||||
|
0.625297f, 0.458580f, 0.428311f, 0.977775f, 0.000000f, 0.2348f, 0.7466f, 0.6225f,
|
||||||
|
-0.625297f, 0.458580f, -0.428311f, 0.022225f, 1.000000f, -0.5441f, 0.7184f, -0.4334f,
|
||||||
|
-0.864231f, 0.050306f, -0.805079f, 0.001565f, 0.975457f, -0.5441f, 0.7184f, -0.4334f,
|
||||||
|
-0.653358f, 0.454219f, -0.400308f, 0.000000f, 0.967273f, -0.5441f, 0.7184f, -0.4334f,
|
||||||
|
0.653358f, 0.454219f, 0.400308f, 1.000000f, 0.032727f, 0.7820f, 0.5943f, 0.1876f,
|
||||||
|
0.873530f, 0.050904f, 0.760079f, 1.000000f, 0.052414f, 0.7820f, 0.5943f, 0.1876f,
|
||||||
|
0.670720f, 0.440923f, 0.370061f, 1.000000f, 0.075093f, 0.7820f, 0.5943f, 0.1876f,
|
||||||
|
-0.670720f, 0.440923f, -0.370061f, 0.000000f, 0.924907f, -0.8872f, 0.4614f, -0.0000f,
|
||||||
|
-0.873530f, 0.050904f, 0.760079f, 0.000000f, 0.052414f, -0.8872f, 0.4614f, -0.0000f,
|
||||||
|
-0.670720f, 0.440923f, 0.370061f, 0.000000f, 0.075093f, -0.8872f, 0.4614f, -0.0000f,
|
||||||
|
-0.593538f, 0.452916f, -0.447084f, 0.048994f, 1.000000f, -0.0000f, 0.7071f, -0.7071f,
|
||||||
|
0.803194f, 0.049732f, -0.850268f, 0.959534f, 1.000000f, -0.0000f, 0.7071f, -0.7071f,
|
||||||
|
-0.803194f, 0.049732f, -0.850268f, 0.040466f, 1.000000f, -0.0000f, 0.7071f, -0.7071f,
|
||||||
|
-0.653358f, 0.454219f, -0.400308f, 0.000000f, 0.967273f, -0.7820f, 0.5943f, -0.1876f,
|
||||||
|
-0.873530f, 0.050904f, -0.760079f, 0.000000f, 0.947586f, -0.7820f, 0.5943f, -0.1876f,
|
||||||
|
-0.670720f, 0.440923f, -0.370061f, 0.000000f, 0.924907f, -0.7820f, 0.5943f, -0.1876f,
|
||||||
|
0.670720f, 0.440923f, 0.370061f, 1.000000f, 0.075093f, 0.8872f, 0.4614f, -0.0000f,
|
||||||
|
0.873530f, 0.050904f, -0.760079f, 1.000000f, 0.947586f, 0.8872f, 0.4614f, -0.0000f,
|
||||||
|
0.670720f, 0.440923f, -0.370061f, 1.000000f, 0.924907f, 0.8872f, 0.4614f, -0.0000f,
|
||||||
|
0.625297f, 0.458580f, -0.428311f, 0.977775f, 1.000000f, 0.5440f, 0.7184f, -0.4335f,
|
||||||
|
0.864231f, 0.050306f, -0.805079f, 0.998435f, 0.975457f, 0.5440f, 0.7184f, -0.4335f,
|
||||||
|
0.838522f, 0.049848f, -0.838097f, 0.980804f, 0.998032f, 0.5440f, 0.7184f, -0.4335f,
|
||||||
|
-0.831219f, 0.000000f, 0.803721f, 0.037571f, 0.052829f, -0.2201f, -0.9745f, 0.0444f,
|
||||||
|
-0.855035f, 0.006740f, 0.833636f, 0.023691f, 0.035704f, -0.2201f, -0.9745f, 0.0444f,
|
||||||
|
-0.862063f, 0.006820f, 0.800532f, 0.020471f, 0.054779f, -0.2201f, -0.9745f, 0.0444f,
|
||||||
|
-0.862063f, 0.006820f, 0.800532f, 0.020471f, 0.054779f, -0.8244f, -0.5402f, 0.1691f,
|
||||||
|
-0.868805f, 0.025153f, 0.826239f, 0.002578f, 0.022467f, -0.8244f, -0.5402f, 0.1691f,
|
||||||
|
-0.877550f, 0.025452f, 0.784558f, 0.000085f, 0.048821f, -0.8244f, -0.5402f, 0.1691f,
|
||||||
|
-0.877550f, 0.025452f, 0.784558f, 0.000085f, 0.048821f, -0.9224f, 0.3333f, 0.1950f,
|
||||||
|
-0.864231f, 0.050306f, 0.805079f, 0.001565f, 0.024543f, -0.9224f, 0.3333f, 0.1950f,
|
||||||
|
-0.873530f, 0.050904f, 0.760079f, 0.000000f, 0.052414f, -0.9224f, 0.3333f, 0.1950f,
|
||||||
|
-0.826613f, -0.000000f, 0.825289f, 0.040011f, 0.040618f, -0.1876f, -0.9714f, 0.1455f,
|
||||||
|
-0.840471f, 0.006678f, 0.852013f, 0.032047f, 0.025150f, -0.1876f, -0.9714f, 0.1455f,
|
||||||
|
-0.855035f, 0.006740f, 0.833636f, 0.023691f, 0.035704f, -0.1876f, -0.9714f, 0.1455f,
|
||||||
|
-0.855035f, 0.006740f, 0.833636f, 0.023691f, 0.035704f, -0.7452f, -0.3228f, 0.5835f,
|
||||||
|
-0.846012f, 0.024924f, 0.855217f, 0.019436f, 0.002175f, -0.7452f, -0.3228f, 0.5835f,
|
||||||
|
-0.868805f, 0.025153f, 0.826239f, 0.002578f, 0.022467f, -0.7452f, -0.3228f, 0.5835f,
|
||||||
|
-0.868805f, 0.025153f, 0.826239f, 0.002578f, 0.022467f, -0.6535f, 0.5533f, 0.5165f,
|
||||||
|
-0.838522f, 0.049848f, 0.838097f, 0.019196f, 0.001968f, -0.6535f, 0.5533f, 0.5165f,
|
||||||
|
-0.864231f, 0.050306f, 0.805079f, 0.001565f, 0.024543f, -0.6535f, 0.5533f, 0.5165f,
|
||||||
|
-0.823382f, -0.000000f, 0.829343f, 0.041831f, 0.038350f, -0.0776f, -0.9707f, 0.2274f,
|
||||||
|
-0.819963f, 0.006663f, 0.858947f, 0.043890f, 0.021812f, -0.0776f, -0.9707f, 0.2274f,
|
||||||
|
-0.840471f, 0.006678f, 0.852013f, 0.032047f, 0.025150f, -0.0776f, -0.9707f, 0.2274f,
|
||||||
|
-0.819963f, 0.006663f, 0.858947f, 0.043890f, 0.021812f, -0.3099f, -0.2550f, 0.9159f,
|
||||||
|
-0.846012f, 0.024924f, 0.855217f, 0.019436f, 0.002175f, -0.3099f, -0.2550f, 0.9159f,
|
||||||
|
-0.840471f, 0.006678f, 0.852013f, 0.032047f, 0.025150f, -0.3099f, -0.2550f, 0.9159f,
|
||||||
|
-0.814616f, 0.024866f, 0.865919f, 0.039098f, 0.000065f, -0.2575f, 0.5985f, 0.7586f,
|
||||||
|
-0.838522f, 0.049848f, 0.838097f, 0.019196f, 0.001968f, -0.2575f, 0.5985f, 0.7586f,
|
||||||
|
-0.846012f, 0.024924f, 0.855217f, 0.019436f, 0.002175f, -0.2575f, 0.5985f, 0.7586f,
|
||||||
|
0.823382f, 0.000000f, 0.829343f, 0.958169f, 0.038350f, 0.0764f, -0.9708f, 0.2273f,
|
||||||
|
0.819963f, 0.006663f, 0.858947f, 0.956110f, 0.021812f, 0.0764f, -0.9708f, 0.2273f,
|
||||||
|
0.817802f, 0.000000f, 0.831219f, 0.955005f, 0.037352f, 0.0764f, -0.9708f, 0.2273f,
|
||||||
|
0.819963f, 0.006663f, 0.858947f, 0.956110f, 0.021812f, 0.3121f, -0.2585f, 0.9142f,
|
||||||
|
0.846012f, 0.024924f, 0.855217f, 0.980564f, 0.002175f, 0.3121f, -0.2585f, 0.9142f,
|
||||||
|
0.814616f, 0.024866f, 0.865919f, 0.960902f, 0.000065f, 0.3121f, -0.2585f, 0.9142f,
|
||||||
|
0.814616f, 0.024866f, 0.865919f, 0.960902f, 0.000065f, 0.2595f, 0.5970f, 0.7591f,
|
||||||
|
0.838522f, 0.049848f, 0.838097f, 0.980804f, 0.001968f, 0.2595f, 0.5970f, 0.7591f,
|
||||||
|
0.803194f, 0.049732f, 0.850268f, 0.959534f, 0.000000f, 0.2595f, 0.5970f, 0.7591f,
|
||||||
|
0.826613f, 0.000000f, 0.825289f, 0.959989f, 0.040618f, 0.1846f, -0.9717f, 0.1471f,
|
||||||
|
0.840471f, 0.006678f, 0.852013f, 0.967953f, 0.025150f, 0.1846f, -0.9717f, 0.1471f,
|
||||||
|
0.823382f, 0.000000f, 0.829343f, 0.958169f, 0.038350f, 0.1846f, -0.9717f, 0.1471f,
|
||||||
|
0.855035f, 0.006740f, 0.833636f, 0.976309f, 0.035704f, 0.7409f, -0.3280f, 0.5861f,
|
||||||
|
0.846012f, 0.024924f, 0.855217f, 0.980564f, 0.002175f, 0.7409f, -0.3280f, 0.5861f,
|
||||||
|
0.840471f, 0.006678f, 0.852013f, 0.967953f, 0.025150f, 0.7409f, -0.3280f, 0.5861f,
|
||||||
|
0.868805f, 0.025153f, 0.826239f, 0.997422f, 0.022467f, 0.6532f, 0.5522f, 0.5181f,
|
||||||
|
0.838522f, 0.049848f, 0.838097f, 0.980804f, 0.001968f, 0.6532f, 0.5522f, 0.5181f,
|
||||||
|
0.846012f, 0.024924f, 0.855217f, 0.980564f, 0.002175f, 0.6532f, 0.5522f, 0.5181f,
|
||||||
|
0.831219f, -0.000000f, 0.803721f, 0.962429f, 0.052829f, 0.2175f, -0.9749f, 0.0465f,
|
||||||
|
0.855035f, 0.006740f, 0.833636f, 0.976309f, 0.035704f, 0.2175f, -0.9749f, 0.0465f,
|
||||||
|
0.826613f, 0.000000f, 0.825289f, 0.959989f, 0.040618f, 0.2175f, -0.9749f, 0.0465f,
|
||||||
|
0.862063f, 0.006820f, 0.800532f, 0.979529f, 0.054779f, 0.8208f, -0.5443f, 0.1729f,
|
||||||
|
0.868805f, 0.025153f, 0.826239f, 0.997422f, 0.022467f, 0.8208f, -0.5443f, 0.1729f,
|
||||||
|
0.855035f, 0.006740f, 0.833636f, 0.976309f, 0.035704f, 0.8208f, -0.5443f, 0.1729f,
|
||||||
|
0.877550f, 0.025452f, 0.784558f, 0.999915f, 0.048821f, 0.9225f, 0.3326f, 0.1959f,
|
||||||
|
0.864231f, 0.050306f, 0.805079f, 0.998435f, 0.024543f, 0.9225f, 0.3326f, 0.1959f,
|
||||||
|
0.868805f, 0.025153f, 0.826239f, 0.997422f, 0.022467f, 0.9225f, 0.3326f, 0.1959f,
|
||||||
|
-0.823382f, 0.000000f, -0.829343f, 0.041831f, 0.961650f, -0.0764f, -0.9708f, -0.2273f,
|
||||||
|
-0.819963f, 0.006663f, -0.858947f, 0.043890f, 0.978188f, -0.0764f, -0.9708f, -0.2273f,
|
||||||
|
-0.817802f, 0.000000f, -0.831219f, 0.044995f, 0.962648f, -0.0764f, -0.9708f, -0.2273f,
|
||||||
|
-0.819963f, 0.006663f, -0.858947f, 0.043890f, 0.978188f, -0.3121f, -0.2585f, -0.9142f,
|
||||||
|
-0.846012f, 0.024924f, -0.855217f, 0.019436f, 0.997825f, -0.3121f, -0.2585f, -0.9142f,
|
||||||
|
-0.814616f, 0.024866f, -0.865919f, 0.039098f, 0.999935f, -0.3121f, -0.2585f, -0.9142f,
|
||||||
|
-0.814616f, 0.024866f, -0.865919f, 0.039098f, 0.999935f, -0.2595f, 0.5970f, -0.7591f,
|
||||||
|
-0.838522f, 0.049848f, -0.838097f, 0.019196f, 0.998032f, -0.2595f, 0.5970f, -0.7591f,
|
||||||
|
-0.803194f, 0.049732f, -0.850268f, 0.040466f, 1.000000f, -0.2595f, 0.5970f, -0.7591f,
|
||||||
|
-0.826613f, 0.000000f, -0.825289f, 0.040011f, 0.959383f, -0.1846f, -0.9717f, -0.1471f,
|
||||||
|
-0.840471f, 0.006678f, -0.852013f, 0.032047f, 0.974849f, -0.1846f, -0.9717f, -0.1471f,
|
||||||
|
-0.823382f, 0.000000f, -0.829343f, 0.041831f, 0.961650f, -0.1846f, -0.9717f, -0.1471f,
|
||||||
|
-0.855035f, 0.006740f, -0.833636f, 0.023691f, 0.964296f, -0.7409f, -0.3280f, -0.5861f,
|
||||||
|
-0.846012f, 0.024924f, -0.855217f, 0.019436f, 0.997825f, -0.7409f, -0.3280f, -0.5861f,
|
||||||
|
-0.840471f, 0.006678f, -0.852013f, 0.032047f, 0.974849f, -0.7409f, -0.3280f, -0.5861f,
|
||||||
|
-0.868805f, 0.025153f, -0.826239f, 0.002578f, 0.977533f, -0.6532f, 0.5522f, -0.5181f,
|
||||||
|
-0.838522f, 0.049848f, -0.838097f, 0.019196f, 0.998032f, -0.6532f, 0.5522f, -0.5181f,
|
||||||
|
-0.846012f, 0.024924f, -0.855217f, 0.019436f, 0.997825f, -0.6532f, 0.5522f, -0.5181f,
|
||||||
|
-0.831219f, -0.000000f, -0.803721f, 0.037571f, 0.947172f, -0.2175f, -0.9749f, -0.0465f,
|
||||||
|
-0.855035f, 0.006740f, -0.833636f, 0.023691f, 0.964296f, -0.2175f, -0.9749f, -0.0465f,
|
||||||
|
-0.826613f, 0.000000f, -0.825289f, 0.040011f, 0.959383f, -0.2175f, -0.9749f, -0.0465f,
|
||||||
|
-0.862063f, 0.006820f, -0.800532f, 0.020471f, 0.945221f, -0.8208f, -0.5443f, -0.1729f,
|
||||||
|
-0.868805f, 0.025153f, -0.826239f, 0.002578f, 0.977533f, -0.8208f, -0.5443f, -0.1729f,
|
||||||
|
-0.855035f, 0.006740f, -0.833636f, 0.023691f, 0.964296f, -0.8208f, -0.5443f, -0.1729f,
|
||||||
|
-0.877550f, 0.025452f, -0.784558f, 0.000085f, 0.951179f, -0.9225f, 0.3326f, -0.1959f,
|
||||||
|
-0.864231f, 0.050306f, -0.805079f, 0.001565f, 0.975457f, -0.9225f, 0.3326f, -0.1959f,
|
||||||
|
-0.868805f, 0.025153f, -0.826239f, 0.002578f, 0.977533f, -0.9225f, 0.3326f, -0.1959f,
|
||||||
|
0.823382f, -0.000000f, -0.829343f, 0.958169f, 0.961650f, 0.0776f, -0.9707f, -0.2274f,
|
||||||
|
0.819963f, 0.006663f, -0.858947f, 0.956110f, 0.978188f, 0.0776f, -0.9707f, -0.2274f,
|
||||||
|
0.840471f, 0.006678f, -0.852013f, 0.967953f, 0.974850f, 0.0776f, -0.9707f, -0.2274f,
|
||||||
|
0.819963f, 0.006663f, -0.858947f, 0.956110f, 0.978188f, 0.3099f, -0.2550f, -0.9159f,
|
||||||
|
0.846012f, 0.024924f, -0.855217f, 0.980564f, 0.997825f, 0.3099f, -0.2550f, -0.9159f,
|
||||||
|
0.840471f, 0.006678f, -0.852013f, 0.967953f, 0.974850f, 0.3099f, -0.2550f, -0.9159f,
|
||||||
|
0.814616f, 0.024866f, -0.865919f, 0.960902f, 0.999935f, 0.2575f, 0.5985f, -0.7586f,
|
||||||
|
0.838522f, 0.049848f, -0.838097f, 0.980804f, 0.998032f, 0.2575f, 0.5985f, -0.7586f,
|
||||||
|
0.846012f, 0.024924f, -0.855217f, 0.980564f, 0.997825f, 0.2575f, 0.5985f, -0.7586f,
|
||||||
|
0.826613f, -0.000000f, -0.825289f, 0.959989f, 0.959382f, 0.1876f, -0.9714f, -0.1455f,
|
||||||
|
0.840471f, 0.006678f, -0.852013f, 0.967953f, 0.974850f, 0.1876f, -0.9714f, -0.1455f,
|
||||||
|
0.855035f, 0.006740f, -0.833636f, 0.976309f, 0.964296f, 0.1876f, -0.9714f, -0.1455f,
|
||||||
|
0.855035f, 0.006740f, -0.833636f, 0.976309f, 0.964296f, 0.7452f, -0.3228f, -0.5835f,
|
||||||
|
0.846012f, 0.024924f, -0.855217f, 0.980564f, 0.997825f, 0.7452f, -0.3228f, -0.5835f,
|
||||||
|
0.868805f, 0.025153f, -0.826239f, 0.997422f, 0.977533f, 0.7452f, -0.3228f, -0.5835f,
|
||||||
|
0.868805f, 0.025153f, -0.826239f, 0.997422f, 0.977533f, 0.6535f, 0.5533f, -0.5165f,
|
||||||
|
0.838522f, 0.049848f, -0.838097f, 0.980804f, 0.998032f, 0.6535f, 0.5533f, -0.5165f,
|
||||||
|
0.864231f, 0.050306f, -0.805079f, 0.998435f, 0.975457f, 0.6535f, 0.5533f, -0.5165f,
|
||||||
|
0.831219f, 0.000000f, -0.803721f, 0.962429f, 0.947171f, 0.2201f, -0.9745f, -0.0444f,
|
||||||
|
0.855035f, 0.006740f, -0.833636f, 0.976309f, 0.964296f, 0.2201f, -0.9745f, -0.0444f,
|
||||||
|
0.862063f, 0.006820f, -0.800532f, 0.979529f, 0.945221f, 0.2201f, -0.9745f, -0.0444f,
|
||||||
|
0.862063f, 0.006820f, -0.800532f, 0.979529f, 0.945221f, 0.8244f, -0.5402f, -0.1691f,
|
||||||
|
0.868805f, 0.025153f, -0.826239f, 0.997422f, 0.977533f, 0.8244f, -0.5402f, -0.1691f,
|
||||||
|
0.877550f, 0.025452f, -0.784558f, 0.999915f, 0.951179f, 0.8244f, -0.5402f, -0.1691f,
|
||||||
|
0.877550f, 0.025452f, -0.784558f, 0.999915f, 0.951179f, 0.9224f, 0.3333f, -0.1950f,
|
||||||
|
0.864231f, 0.050306f, -0.805079f, 0.998435f, 0.975457f, 0.9224f, 0.3333f, -0.1950f,
|
||||||
|
0.873530f, 0.050904f, -0.760079f, 1.000000f, 0.947586f, 0.9224f, 0.3333f, -0.1950f,
|
||||||
|
0.831219f, 0.000000f, -0.803721f, 0.962429f, 0.947171f, 0.2159f, -0.9764f, -0.0000f,
|
||||||
|
0.862063f, 0.006820f, 0.800532f, 0.979529f, 0.054779f, 0.2159f, -0.9764f, -0.0000f,
|
||||||
|
0.831219f, -0.000000f, 0.803721f, 0.962429f, 0.052829f, 0.2159f, -0.9764f, -0.0000f,
|
||||||
|
0.862063f, 0.006820f, -0.800532f, 0.979529f, 0.945221f, 0.7690f, -0.6392f, -0.0000f,
|
||||||
|
0.877550f, 0.025452f, 0.784558f, 0.999915f, 0.048821f, 0.7690f, -0.6392f, -0.0000f,
|
||||||
|
0.862063f, 0.006820f, 0.800532f, 0.979529f, 0.054779f, 0.7690f, -0.6392f, -0.0000f,
|
||||||
|
0.877550f, 0.025452f, -0.784558f, 0.999915f, 0.951179f, 0.9878f, 0.1560f, -0.0000f,
|
||||||
|
0.873530f, 0.050904f, 0.760079f, 1.000000f, 0.052414f, 0.9878f, 0.1560f, -0.0000f,
|
||||||
|
0.877550f, 0.025452f, 0.784558f, 0.999915f, 0.048821f, 0.9878f, 0.1560f, -0.0000f,
|
||||||
|
-0.817802f, 0.000000f, -0.831219f, 0.044995f, 0.962648f, -0.0000f, -0.9723f, -0.2336f,
|
||||||
|
0.819963f, 0.006663f, -0.858947f, 0.956110f, 0.978188f, -0.0000f, -0.9723f, -0.2336f,
|
||||||
|
0.817802f, -0.000000f, -0.831219f, 0.955005f, 0.962648f, -0.0000f, -0.9723f, -0.2336f,
|
||||||
|
-0.819963f, 0.006663f, -0.858947f, 0.043890f, 0.978188f, -0.0000f, -0.3577f, -0.9338f,
|
||||||
|
0.814616f, 0.024866f, -0.865919f, 0.960902f, 0.999935f, -0.0000f, -0.3577f, -0.9338f,
|
||||||
|
0.819963f, 0.006663f, -0.858947f, 0.956110f, 0.978188f, -0.0000f, -0.3577f, -0.9338f,
|
||||||
|
-0.814616f, 0.024866f, -0.865919f, 0.039098f, 0.999935f, -0.0000f, 0.5327f, -0.8463f,
|
||||||
|
0.803194f, 0.049732f, -0.850268f, 0.959534f, 1.000000f, -0.0000f, 0.5327f, -0.8463f,
|
||||||
|
0.814616f, 0.024866f, -0.865919f, 0.960902f, 0.999935f, -0.0000f, 0.5327f, -0.8463f,
|
||||||
|
-0.831219f, 0.000000f, 0.803721f, 0.037571f, 0.052829f, -0.2159f, -0.9764f, -0.0000f,
|
||||||
|
-0.862063f, 0.006820f, -0.800532f, 0.020471f, 0.945221f, -0.2159f, -0.9764f, -0.0000f,
|
||||||
|
-0.831219f, -0.000000f, -0.803721f, 0.037571f, 0.947172f, -0.2159f, -0.9764f, -0.0000f,
|
||||||
|
-0.862063f, 0.006820f, 0.800532f, 0.020471f, 0.054779f, -0.7690f, -0.6392f, -0.0000f,
|
||||||
|
-0.877550f, 0.025452f, -0.784558f, 0.000085f, 0.951179f, -0.7690f, -0.6392f, -0.0000f,
|
||||||
|
-0.862063f, 0.006820f, -0.800532f, 0.020471f, 0.945221f, -0.7690f, -0.6392f, -0.0000f,
|
||||||
|
-0.877550f, 0.025452f, 0.784558f, 0.000085f, 0.048821f, -0.9878f, 0.1560f, -0.0000f,
|
||||||
|
-0.873530f, 0.050904f, -0.760079f, 0.000000f, 0.947586f, -0.9878f, 0.1560f, -0.0000f,
|
||||||
|
-0.877550f, 0.025452f, -0.784558f, 0.000085f, 0.951179f, -0.9878f, 0.1560f, -0.0000f,
|
||||||
|
0.817802f, 0.000000f, 0.831219f, 0.955005f, 0.037352f, -0.0000f, -0.9723f, 0.2336f,
|
||||||
|
-0.819963f, 0.006663f, 0.858947f, 0.043890f, 0.021812f, -0.0000f, -0.9723f, 0.2336f,
|
||||||
|
-0.817802f, -0.000000f, 0.831219f, 0.044995f, 0.037352f, -0.0000f, -0.9723f, 0.2336f,
|
||||||
|
0.819963f, 0.006663f, 0.858947f, 0.956110f, 0.021812f, -0.0000f, -0.3577f, 0.9338f,
|
||||||
|
-0.814616f, 0.024866f, 0.865919f, 0.039098f, 0.000065f, -0.0000f, -0.3577f, 0.9338f,
|
||||||
|
-0.819963f, 0.006663f, 0.858947f, 0.043890f, 0.021812f, -0.0000f, -0.3577f, 0.9338f,
|
||||||
|
0.814616f, 0.024866f, 0.865919f, 0.960902f, 0.000065f, -0.0000f, 0.5327f, 0.8463f,
|
||||||
|
-0.803194f, 0.049732f, 0.850268f, 0.040466f, 0.000000f, -0.0000f, 0.5327f, 0.8463f,
|
||||||
|
-0.814616f, 0.024866f, 0.865919f, 0.039098f, 0.000065f, -0.0000f, 0.5327f, 0.8463f,
|
||||||
|
0.593538f, 0.452916f, -0.447084f, 0.951006f, 1.000000f, 0.2154f, 0.7442f, -0.6322f,
|
||||||
|
0.838522f, 0.049848f, -0.838097f, 0.980804f, 0.998032f, 0.2154f, 0.7442f, -0.6322f,
|
||||||
|
0.803194f, 0.049732f, -0.850268f, 0.959534f, 1.000000f, 0.2154f, 0.7442f, -0.6322f,
|
||||||
|
-0.817802f, -0.000000f, 0.831219f, 0.044995f, 0.037352f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
-0.823382f, -0.000000f, 0.829343f, 0.041831f, 0.038350f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
-0.826613f, -0.000000f, 0.825289f, 0.040011f, 0.040618f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
-0.831219f, 0.000000f, 0.803721f, 0.037571f, 0.052829f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
-0.831219f, -0.000000f, -0.803721f, 0.037571f, 0.947172f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
-0.826613f, 0.000000f, -0.825289f, 0.040011f, 0.959383f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
-0.823382f, 0.000000f, -0.829343f, 0.041831f, 0.961650f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
0.817802f, -0.000000f, -0.831219f, 0.955005f, 0.962648f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
0.823382f, -0.000000f, -0.829343f, 0.958169f, 0.961650f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
0.826613f, -0.000000f, -0.825289f, 0.959989f, 0.959382f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
0.831219f, -0.000000f, 0.803721f, 0.962429f, 0.052829f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
0.826613f, 0.000000f, 0.825289f, 0.959989f, 0.040618f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
0.823382f, 0.000000f, 0.829343f, 0.958169f, 0.038350f, -0.0000f, -1.0000f, -0.0000f,
|
||||||
|
0.653358f, 0.454219f, -0.400308f, 1.000000f, 0.967273f, 0.7820f, 0.5943f, -0.1876f,
|
||||||
|
0.670720f, 0.440923f, -0.370061f, 1.000000f, 0.924907f, 0.7820f, 0.5943f, -0.1876f,
|
||||||
|
0.873530f, 0.050904f, -0.760079f, 1.000000f, 0.947586f, 0.7820f, 0.5943f, -0.1876f,
|
||||||
|
0.625297f, 0.458580f, 0.428311f, 0.977775f, 0.000000f, 0.5440f, 0.7184f, 0.4335f,
|
||||||
|
0.838522f, 0.049848f, 0.838097f, 0.980804f, 0.001968f, 0.5440f, 0.7184f, 0.4335f,
|
||||||
|
0.864231f, 0.050306f, 0.805079f, 0.998435f, 0.024543f, 0.5440f, 0.7184f, 0.4335f,
|
||||||
|
-0.593538f, 0.452916f, -0.447084f, 0.048994f, 1.000000f, -0.2154f, 0.7442f, -0.6322f,
|
||||||
|
-0.803194f, 0.049732f, -0.850268f, 0.040466f, 1.000000f, -0.2154f, 0.7442f, -0.6322f,
|
||||||
|
-0.838522f, 0.049848f, -0.838097f, 0.019196f, 0.998032f, -0.2154f, 0.7442f, -0.6322f,
|
||||||
|
0.573413f, 0.500000f, -0.333413f, 0.947979f, 0.916766f, -0.0000f, 1.0000f, -0.0000f,
|
||||||
|
0.653358f, 0.454219f, -0.400308f, 1.000000f, 0.967273f, 0.7016f, 0.6996f, -0.1356f,
|
||||||
|
0.635801f, 0.474526f, -0.386369f, 1.000000f, 0.971374f, 0.7016f, 0.6996f, -0.1356f,
|
||||||
|
0.645925f, 0.469791f, -0.358414f, 1.000000f, 0.934301f, 0.7016f, 0.6996f, -0.1356f,
|
||||||
|
0.653358f, 0.454219f, -0.400308f, 1.000000f, 0.967273f, 0.5124f, 0.7627f, -0.3947f,
|
||||||
|
0.625297f, 0.458580f, -0.428311f, 0.977775f, 1.000000f, 0.5124f, 0.7627f, -0.3947f,
|
||||||
|
0.617215f, 0.476518f, -0.404137f, 0.978658f, 1.000000f, 0.5124f, 0.7627f, -0.3947f,
|
||||||
|
0.587151f, 0.475900f, -0.414338f, 0.954276f, 1.000000f, 0.1698f, 0.8177f, -0.5500f,
|
||||||
|
0.617215f, 0.476518f, -0.404137f, 0.978658f, 1.000000f, 0.1698f, 0.8177f, -0.5500f,
|
||||||
|
0.625297f, 0.458580f, -0.428311f, 0.977775f, 1.000000f, 0.1698f, 0.8177f, -0.5500f,
|
||||||
|
0.587151f, 0.475900f, -0.414338f, 0.954276f, 1.000000f, 0.1197f, 0.9246f, -0.3618f,
|
||||||
|
0.579800f, 0.493098f, -0.372820f, 0.952969f, 0.966026f, 0.1197f, 0.9246f, -0.3618f,
|
||||||
|
0.612471f, 0.486997f, -0.377607f, 0.978493f, 0.972008f, 0.1197f, 0.9246f, -0.3618f,
|
||||||
|
0.610465f, 0.491320f, -0.345059f, 0.976926f, 0.931324f, 0.1653f, 0.9789f, -0.1198f,
|
||||||
|
0.612471f, 0.486997f, -0.377607f, 0.978493f, 0.972008f, 0.1653f, 0.9789f, -0.1198f,
|
||||||
|
0.579800f, 0.493098f, -0.372820f, 0.952969f, 0.966026f, 0.1653f, 0.9789f, -0.1198f,
|
||||||
|
0.645925f, 0.469791f, -0.358414f, 1.000000f, 0.934301f, 0.4658f, 0.8847f, -0.0188f,
|
||||||
|
0.635801f, 0.474526f, -0.386369f, 1.000000f, 0.971374f, 0.4658f, 0.8847f, -0.0188f,
|
||||||
|
0.612471f, 0.486997f, -0.377607f, 0.978493f, 0.972008f, 0.4658f, 0.8847f, -0.0188f,
|
||||||
|
-0.645925f, 0.469791f, -0.358414f, 0.000000f, 0.934302f, -0.7016f, 0.6996f, -0.1356f,
|
||||||
|
-0.635801f, 0.474526f, -0.386368f, 0.000000f, 0.971374f, -0.7016f, 0.6996f, -0.1356f,
|
||||||
|
-0.653358f, 0.454219f, -0.400308f, 0.000000f, 0.967273f, -0.7016f, 0.6996f, -0.1356f,
|
||||||
|
-0.645925f, 0.469791f, -0.358414f, 0.000000f, 0.934302f, -0.4936f, 0.8655f, -0.0845f,
|
||||||
|
-0.610465f, 0.491320f, -0.345059f, 0.023074f, 0.931324f, -0.4936f, 0.8655f, -0.0845f,
|
||||||
|
-0.612471f, 0.486997f, -0.377607f, 0.021507f, 0.972008f, -0.4936f, 0.8655f, -0.0845f,
|
||||||
|
-0.579800f, 0.493098f, -0.372820f, 0.047031f, 0.966026f, -0.1653f, 0.9789f, -0.1198f,
|
||||||
|
-0.612471f, 0.486997f, -0.377607f, 0.021507f, 0.972008f, -0.1653f, 0.9789f, -0.1198f,
|
||||||
|
-0.610465f, 0.491320f, -0.345059f, 0.023074f, 0.931324f, -0.1653f, 0.9789f, -0.1198f,
|
||||||
|
-0.587151f, 0.475900f, -0.414338f, 0.045724f, 1.000000f, -0.0997f, 0.9314f, -0.3501f,
|
||||||
|
-0.617215f, 0.476518f, -0.404137f, 0.021342f, 1.000000f, -0.0997f, 0.9314f, -0.3501f,
|
||||||
|
-0.612471f, 0.486997f, -0.377607f, 0.021507f, 0.972008f, -0.0997f, 0.9314f, -0.3501f,
|
||||||
|
-0.625297f, 0.458580f, -0.428311f, 0.022225f, 1.000000f, -0.1698f, 0.8177f, -0.5500f,
|
||||||
|
-0.617215f, 0.476518f, -0.404137f, 0.021342f, 1.000000f, -0.1698f, 0.8177f, -0.5500f,
|
||||||
|
-0.587151f, 0.475900f, -0.414338f, 0.045724f, 1.000000f, -0.1698f, 0.8177f, -0.5500f,
|
||||||
|
-0.653358f, 0.454219f, -0.400308f, 0.000000f, 0.967273f, -0.5040f, 0.7407f, -0.4442f,
|
||||||
|
-0.635801f, 0.474526f, -0.386368f, 0.000000f, 0.971374f, -0.5040f, 0.7407f, -0.4442f,
|
||||||
|
-0.617215f, 0.476518f, -0.404137f, 0.021342f, 1.000000f, -0.5040f, 0.7407f, -0.4442f,
|
||||||
|
0.645925f, 0.469791f, 0.358414f, 1.000000f, 0.065698f, 0.7016f, 0.6996f, 0.1356f,
|
||||||
|
0.635801f, 0.474526f, 0.386368f, 1.000000f, 0.028626f, 0.7016f, 0.6996f, 0.1356f,
|
||||||
|
0.653358f, 0.454219f, 0.400308f, 1.000000f, 0.032727f, 0.7016f, 0.6996f, 0.1356f,
|
||||||
|
0.645925f, 0.469791f, 0.358414f, 1.000000f, 0.065698f, 0.4936f, 0.8655f, 0.0845f,
|
||||||
|
0.610465f, 0.491320f, 0.345059f, 0.976926f, 0.068676f, 0.4936f, 0.8655f, 0.0845f,
|
||||||
|
0.612471f, 0.486997f, 0.377607f, 0.978493f, 0.027992f, 0.4936f, 0.8655f, 0.0845f,
|
||||||
|
0.579800f, 0.493098f, 0.372820f, 0.952969f, 0.033974f, 0.1653f, 0.9789f, 0.1198f,
|
||||||
|
0.612471f, 0.486997f, 0.377607f, 0.978493f, 0.027992f, 0.1653f, 0.9789f, 0.1198f,
|
||||||
|
0.610465f, 0.491320f, 0.345059f, 0.976926f, 0.068676f, 0.1653f, 0.9789f, 0.1198f,
|
||||||
|
0.587151f, 0.475900f, 0.414338f, 0.954276f, 0.000000f, 0.0997f, 0.9314f, 0.3501f,
|
||||||
|
0.617215f, 0.476518f, 0.404137f, 0.978658f, 0.000000f, 0.0997f, 0.9314f, 0.3501f,
|
||||||
|
0.612471f, 0.486997f, 0.377607f, 0.978493f, 0.027992f, 0.0997f, 0.9314f, 0.3501f,
|
||||||
|
0.625297f, 0.458580f, 0.428311f, 0.977775f, 0.000000f, 0.1698f, 0.8177f, 0.5500f,
|
||||||
|
0.617215f, 0.476518f, 0.404137f, 0.978658f, 0.000000f, 0.1698f, 0.8177f, 0.5500f,
|
||||||
|
0.587151f, 0.475900f, 0.414338f, 0.954276f, 0.000000f, 0.1698f, 0.8177f, 0.5500f,
|
||||||
|
0.653358f, 0.454219f, 0.400308f, 1.000000f, 0.032727f, 0.5040f, 0.7407f, 0.4442f,
|
||||||
|
0.635801f, 0.474526f, 0.386368f, 1.000000f, 0.028626f, 0.5040f, 0.7407f, 0.4442f,
|
||||||
|
0.617215f, 0.476518f, 0.404137f, 0.978658f, 0.000000f, 0.5040f, 0.7407f, 0.4442f,
|
||||||
|
-0.587151f, 0.475900f, 0.414338f, 0.045724f, 0.000000f, -0.1698f, 0.8177f, 0.5500f,
|
||||||
|
-0.617215f, 0.476518f, 0.404137f, 0.021342f, 0.000000f, -0.1698f, 0.8177f, 0.5500f,
|
||||||
|
-0.625297f, 0.458580f, 0.428311f, 0.022225f, 0.000000f, -0.1698f, 0.8177f, 0.5500f,
|
||||||
|
-0.587151f, 0.475900f, 0.414338f, 0.045724f, 0.000000f, -0.1197f, 0.9246f, 0.3618f,
|
||||||
|
-0.579800f, 0.493098f, 0.372820f, 0.047031f, 0.033974f, -0.1197f, 0.9246f, 0.3618f,
|
||||||
|
-0.612471f, 0.486997f, 0.377607f, 0.021507f, 0.027992f, -0.1197f, 0.9246f, 0.3618f,
|
||||||
|
-0.610465f, 0.491320f, 0.345059f, 0.023074f, 0.068676f, -0.1653f, 0.9789f, 0.1198f,
|
||||||
|
-0.612471f, 0.486997f, 0.377607f, 0.021507f, 0.027992f, -0.1653f, 0.9789f, 0.1198f,
|
||||||
|
-0.579800f, 0.493098f, 0.372820f, 0.047031f, 0.033974f, -0.1653f, 0.9789f, 0.1198f,
|
||||||
|
-0.645925f, 0.469791f, 0.358414f, 0.000000f, 0.065698f, -0.4658f, 0.8847f, 0.0188f,
|
||||||
|
-0.635801f, 0.474526f, 0.386369f, 0.000000f, 0.028626f, -0.4658f, 0.8847f, 0.0188f,
|
||||||
|
-0.612471f, 0.486997f, 0.377607f, 0.021507f, 0.027992f, -0.4658f, 0.8847f, 0.0188f,
|
||||||
|
-0.653358f, 0.454219f, 0.400308f, 0.000000f, 0.032727f, -0.7016f, 0.6996f, 0.1356f,
|
||||||
|
-0.635801f, 0.474526f, 0.386369f, 0.000000f, 0.028626f, -0.7016f, 0.6996f, 0.1356f,
|
||||||
|
-0.645925f, 0.469791f, 0.358414f, 0.000000f, 0.065698f, -0.7016f, 0.6996f, 0.1356f,
|
||||||
|
-0.653358f, 0.454219f, 0.400308f, 0.000000f, 0.032727f, -0.5124f, 0.7627f, 0.3947f,
|
||||||
|
-0.625297f, 0.458580f, 0.428311f, 0.022225f, 0.000000f, -0.5124f, 0.7627f, 0.3947f,
|
||||||
|
-0.617215f, 0.476518f, 0.404137f, 0.021342f, 0.000000f, -0.5124f, 0.7627f, 0.3947f,
|
||||||
|
0.645925f, 0.469791f, -0.358414f, 1.000000f, 0.934301f, 0.7586f, 0.6516f, -0.0000f,
|
||||||
|
0.610465f, 0.491320f, -0.345059f, 0.976926f, 0.931324f, 0.5190f, 0.8548f, -0.0000f,
|
||||||
|
0.610465f, 0.491320f, -0.345059f, 0.976926f, 0.931324f, 0.2281f, 0.9736f, -0.0000f,
|
||||||
|
0.587151f, 0.475900f, 0.414338f, 0.954276f, 0.000000f, -0.0000f, 0.8185f, 0.5745f,
|
||||||
|
0.587151f, 0.475900f, 0.414338f, 0.954276f, 0.000000f, -0.0000f, 0.9239f, 0.3827f,
|
||||||
|
0.573413f, 0.500000f, 0.333413f, 0.947979f, 0.083234f, -0.0000f, 0.9850f, 0.1725f,
|
||||||
|
-0.645925f, 0.469791f, 0.358414f, 0.000000f, 0.065698f, -0.7586f, 0.6516f, -0.0000f,
|
||||||
|
-0.610465f, 0.491320f, 0.345059f, 0.023074f, 0.068676f, -0.5190f, 0.8548f, -0.0000f,
|
||||||
|
-0.610465f, 0.491320f, 0.345059f, 0.023074f, 0.068676f, -0.2281f, 0.9736f, -0.0000f,
|
||||||
|
-0.587151f, 0.475900f, -0.414338f, 0.045724f, 1.000000f, -0.0000f, 0.8185f, -0.5745f,
|
||||||
|
-0.587151f, 0.475900f, -0.414338f, 0.045724f, 1.000000f, -0.0000f, 0.9239f, -0.3827f,
|
||||||
|
-0.573413f, 0.500000f, -0.333413f, 0.052021f, 0.916766f, -0.0000f, 0.9850f, -0.1725f,
|
||||||
|
-0.864231f, 0.050306f, 0.805079f, 0.001565f, 0.024543f, -0.5440f, 0.7184f, 0.4335f,
|
||||||
|
-0.838522f, 0.049848f, 0.838097f, 0.019196f, 0.001968f, -0.5440f, 0.7184f, 0.4335f,
|
||||||
|
-0.625297f, 0.458580f, 0.428311f, 0.022225f, 0.000000f, -0.5440f, 0.7184f, 0.4335f,
|
||||||
|
-0.873530f, 0.050904f, 0.760079f, 0.000000f, 0.052414f, -0.7923f, 0.5855f, 0.1715f,
|
||||||
|
-0.864231f, 0.050306f, 0.805079f, 0.001565f, 0.024543f, -0.7923f, 0.5855f, 0.1715f,
|
||||||
|
-0.653358f, 0.454219f, 0.400308f, 0.000000f, 0.032727f, -0.7923f, 0.5855f, 0.1715f,
|
||||||
|
-0.593538f, 0.452916f, 0.447084f, 0.048994f, 0.000000f, -0.0000f, 0.7071f, 0.7071f,
|
||||||
|
-0.838522f, 0.049848f, 0.838097f, 0.019196f, 0.001968f, -0.2154f, 0.7442f, 0.6322f,
|
||||||
|
-0.803194f, 0.049732f, 0.850268f, 0.040466f, 0.000000f, -0.2154f, 0.7442f, 0.6322f,
|
||||||
|
-0.593538f, 0.452916f, 0.447084f, 0.048994f, 0.000000f, -0.2154f, 0.7442f, 0.6322f,
|
||||||
|
0.593538f, 0.452916f, 0.447084f, 0.951006f, 0.000000f, 0.2154f, 0.7442f, 0.6322f,
|
||||||
|
0.803194f, 0.049732f, 0.850268f, 0.959534f, 0.000000f, 0.2154f, 0.7442f, 0.6322f,
|
||||||
|
0.838522f, 0.049848f, 0.838097f, 0.980804f, 0.001968f, 0.2154f, 0.7442f, 0.6322f,
|
||||||
|
-0.625297f, 0.458580f, -0.428311f, 0.022225f, 1.000000f, -0.5440f, 0.7184f, -0.4335f,
|
||||||
|
-0.838522f, 0.049848f, -0.838097f, 0.019196f, 0.998032f, -0.5440f, 0.7184f, -0.4335f,
|
||||||
|
-0.864231f, 0.050306f, -0.805079f, 0.001565f, 0.975457f, -0.5440f, 0.7184f, -0.4335f,
|
||||||
|
0.653358f, 0.454219f, 0.400308f, 1.000000f, 0.032727f, 0.7923f, 0.5855f, 0.1715f,
|
||||||
|
0.864231f, 0.050306f, 0.805079f, 0.998435f, 0.024543f, 0.7923f, 0.5855f, 0.1715f,
|
||||||
|
0.873530f, 0.050904f, 0.760079f, 1.000000f, 0.052414f, 0.7923f, 0.5855f, 0.1715f,
|
||||||
|
-0.873530f, 0.050904f, -0.760079f, 0.000000f, 0.947586f, -0.8872f, 0.4614f, -0.0000f,
|
||||||
|
0.593538f, 0.452916f, -0.447084f, 0.951006f, 1.000000f, -0.0000f, 0.7071f, -0.7071f,
|
||||||
|
-0.653358f, 0.454219f, -0.400308f, 0.000000f, 0.967273f, -0.7923f, 0.5855f, -0.1715f,
|
||||||
|
-0.864231f, 0.050306f, -0.805079f, 0.001565f, 0.975457f, -0.7923f, 0.5855f, -0.1715f,
|
||||||
|
-0.873530f, 0.050904f, -0.760079f, 0.000000f, 0.947586f, -0.7923f, 0.5855f, -0.1715f,
|
||||||
|
0.873530f, 0.050904f, 0.760079f, 1.000000f, 0.052414f, 0.8872f, 0.4614f, -0.0000f,
|
||||||
|
0.625297f, 0.458580f, -0.428311f, 0.977775f, 1.000000f, 0.5441f, 0.7184f, -0.4334f,
|
||||||
|
0.653358f, 0.454219f, -0.400308f, 1.000000f, 0.967273f, 0.5441f, 0.7184f, -0.4334f,
|
||||||
|
0.864231f, 0.050306f, -0.805079f, 0.998435f, 0.975457f, 0.5441f, 0.7184f, -0.4334f,
|
||||||
|
-0.831219f, 0.000000f, 0.803721f, 0.037571f, 0.052829f, -0.2175f, -0.9749f, 0.0465f,
|
||||||
|
-0.826613f, -0.000000f, 0.825289f, 0.040011f, 0.040618f, -0.2175f, -0.9749f, 0.0465f,
|
||||||
|
-0.855035f, 0.006740f, 0.833636f, 0.023691f, 0.035704f, -0.2175f, -0.9749f, 0.0465f,
|
||||||
|
-0.862063f, 0.006820f, 0.800532f, 0.020471f, 0.054779f, -0.8208f, -0.5443f, 0.1730f,
|
||||||
|
-0.855035f, 0.006740f, 0.833636f, 0.023691f, 0.035704f, -0.8208f, -0.5443f, 0.1730f,
|
||||||
|
-0.868805f, 0.025153f, 0.826239f, 0.002578f, 0.022467f, -0.8208f, -0.5443f, 0.1730f,
|
||||||
|
-0.877550f, 0.025452f, 0.784558f, 0.000085f, 0.048821f, -0.9225f, 0.3326f, 0.1959f,
|
||||||
|
-0.868805f, 0.025153f, 0.826239f, 0.002578f, 0.022467f, -0.9225f, 0.3326f, 0.1959f,
|
||||||
|
-0.864231f, 0.050306f, 0.805079f, 0.001565f, 0.024543f, -0.9225f, 0.3326f, 0.1959f,
|
||||||
|
-0.826613f, -0.000000f, 0.825289f, 0.040011f, 0.040618f, -0.1846f, -0.9717f, 0.1471f,
|
||||||
|
-0.823382f, -0.000000f, 0.829343f, 0.041831f, 0.038350f, -0.1846f, -0.9717f, 0.1471f,
|
||||||
|
-0.840471f, 0.006678f, 0.852013f, 0.032047f, 0.025150f, -0.1846f, -0.9717f, 0.1471f,
|
||||||
|
-0.855035f, 0.006740f, 0.833636f, 0.023691f, 0.035704f, -0.7409f, -0.3280f, 0.5861f,
|
||||||
|
-0.840471f, 0.006678f, 0.852013f, 0.032047f, 0.025150f, -0.7409f, -0.3280f, 0.5861f,
|
||||||
|
-0.846012f, 0.024924f, 0.855217f, 0.019436f, 0.002175f, -0.7409f, -0.3280f, 0.5861f,
|
||||||
|
-0.868805f, 0.025153f, 0.826239f, 0.002578f, 0.022467f, -0.6532f, 0.5522f, 0.5181f,
|
||||||
|
-0.846012f, 0.024924f, 0.855217f, 0.019436f, 0.002175f, -0.6532f, 0.5522f, 0.5181f,
|
||||||
|
-0.838522f, 0.049848f, 0.838097f, 0.019196f, 0.001968f, -0.6532f, 0.5522f, 0.5181f,
|
||||||
|
-0.823382f, -0.000000f, 0.829343f, 0.041831f, 0.038350f, -0.0764f, -0.9708f, 0.2273f,
|
||||||
|
-0.817802f, -0.000000f, 0.831219f, 0.044995f, 0.037352f, -0.0764f, -0.9708f, 0.2273f,
|
||||||
|
-0.819963f, 0.006663f, 0.858947f, 0.043890f, 0.021812f, -0.0764f, -0.9708f, 0.2273f,
|
||||||
|
-0.819963f, 0.006663f, 0.858947f, 0.043890f, 0.021812f, -0.3121f, -0.2585f, 0.9142f,
|
||||||
|
-0.814616f, 0.024866f, 0.865919f, 0.039098f, 0.000065f, -0.3121f, -0.2585f, 0.9142f,
|
||||||
|
-0.846012f, 0.024924f, 0.855217f, 0.019436f, 0.002175f, -0.3121f, -0.2585f, 0.9142f,
|
||||||
|
-0.814616f, 0.024866f, 0.865919f, 0.039098f, 0.000065f, -0.2595f, 0.5970f, 0.7591f,
|
||||||
|
-0.803194f, 0.049732f, 0.850268f, 0.040466f, 0.000000f, -0.2595f, 0.5970f, 0.7591f,
|
||||||
|
-0.838522f, 0.049848f, 0.838097f, 0.019196f, 0.001968f, -0.2595f, 0.5970f, 0.7591f,
|
||||||
|
0.823382f, 0.000000f, 0.829343f, 0.958169f, 0.038350f, 0.0776f, -0.9707f, 0.2274f,
|
||||||
|
0.840471f, 0.006678f, 0.852013f, 0.967953f, 0.025150f, 0.0776f, -0.9707f, 0.2274f,
|
||||||
|
0.819963f, 0.006663f, 0.858947f, 0.956110f, 0.021812f, 0.0776f, -0.9707f, 0.2274f,
|
||||||
|
0.819963f, 0.006663f, 0.858947f, 0.956110f, 0.021812f, 0.3099f, -0.2550f, 0.9159f,
|
||||||
|
0.840471f, 0.006678f, 0.852013f, 0.967953f, 0.025150f, 0.3099f, -0.2550f, 0.9159f,
|
||||||
|
0.846012f, 0.024924f, 0.855217f, 0.980564f, 0.002175f, 0.3099f, -0.2550f, 0.9159f,
|
||||||
|
0.814616f, 0.024866f, 0.865919f, 0.960902f, 0.000065f, 0.2575f, 0.5985f, 0.7586f,
|
||||||
|
0.846012f, 0.024924f, 0.855217f, 0.980564f, 0.002175f, 0.2575f, 0.5985f, 0.7586f,
|
||||||
|
0.838522f, 0.049848f, 0.838097f, 0.980804f, 0.001968f, 0.2575f, 0.5985f, 0.7586f,
|
||||||
|
0.826613f, 0.000000f, 0.825289f, 0.959989f, 0.040618f, 0.1876f, -0.9714f, 0.1455f,
|
||||||
|
0.855035f, 0.006740f, 0.833636f, 0.976309f, 0.035704f, 0.1876f, -0.9714f, 0.1455f,
|
||||||
|
0.840471f, 0.006678f, 0.852013f, 0.967953f, 0.025150f, 0.1876f, -0.9714f, 0.1455f,
|
||||||
|
0.855035f, 0.006740f, 0.833636f, 0.976309f, 0.035704f, 0.7452f, -0.3228f, 0.5835f,
|
||||||
|
0.868805f, 0.025153f, 0.826239f, 0.997422f, 0.022467f, 0.7452f, -0.3228f, 0.5835f,
|
||||||
|
0.846012f, 0.024924f, 0.855217f, 0.980564f, 0.002175f, 0.7452f, -0.3228f, 0.5835f,
|
||||||
|
0.868805f, 0.025153f, 0.826239f, 0.997422f, 0.022467f, 0.6535f, 0.5533f, 0.5165f,
|
||||||
|
0.864231f, 0.050306f, 0.805079f, 0.998435f, 0.024543f, 0.6535f, 0.5533f, 0.5165f,
|
||||||
|
0.838522f, 0.049848f, 0.838097f, 0.980804f, 0.001968f, 0.6535f, 0.5533f, 0.5165f,
|
||||||
|
0.831219f, -0.000000f, 0.803721f, 0.962429f, 0.052829f, 0.2201f, -0.9745f, 0.0444f,
|
||||||
|
0.862063f, 0.006820f, 0.800532f, 0.979529f, 0.054779f, 0.2201f, -0.9745f, 0.0444f,
|
||||||
|
0.855035f, 0.006740f, 0.833636f, 0.976309f, 0.035704f, 0.2201f, -0.9745f, 0.0444f,
|
||||||
|
0.862063f, 0.006820f, 0.800532f, 0.979529f, 0.054779f, 0.8244f, -0.5402f, 0.1691f,
|
||||||
|
0.877550f, 0.025452f, 0.784558f, 0.999915f, 0.048821f, 0.8244f, -0.5402f, 0.1691f,
|
||||||
|
0.868805f, 0.025153f, 0.826239f, 0.997422f, 0.022467f, 0.8244f, -0.5402f, 0.1691f,
|
||||||
|
0.877550f, 0.025452f, 0.784558f, 0.999915f, 0.048821f, 0.9224f, 0.3333f, 0.1950f,
|
||||||
|
0.873530f, 0.050904f, 0.760079f, 1.000000f, 0.052414f, 0.9224f, 0.3333f, 0.1950f,
|
||||||
|
0.864231f, 0.050306f, 0.805079f, 0.998435f, 0.024543f, 0.9224f, 0.3333f, 0.1950f,
|
||||||
|
-0.823382f, 0.000000f, -0.829343f, 0.041831f, 0.961650f, -0.0776f, -0.9707f, -0.2274f,
|
||||||
|
-0.840471f, 0.006678f, -0.852013f, 0.032047f, 0.974849f, -0.0776f, -0.9707f, -0.2274f,
|
||||||
|
-0.819963f, 0.006663f, -0.858947f, 0.043890f, 0.978188f, -0.0776f, -0.9707f, -0.2274f,
|
||||||
|
-0.819963f, 0.006663f, -0.858947f, 0.043890f, 0.978188f, -0.3099f, -0.2550f, -0.9159f,
|
||||||
|
-0.840471f, 0.006678f, -0.852013f, 0.032047f, 0.974849f, -0.3099f, -0.2550f, -0.9159f,
|
||||||
|
-0.846012f, 0.024924f, -0.855217f, 0.019436f, 0.997825f, -0.3099f, -0.2550f, -0.9159f,
|
||||||
|
-0.814616f, 0.024866f, -0.865919f, 0.039098f, 0.999935f, -0.2575f, 0.5985f, -0.7586f,
|
||||||
|
-0.846012f, 0.024924f, -0.855217f, 0.019436f, 0.997825f, -0.2575f, 0.5985f, -0.7586f,
|
||||||
|
-0.838522f, 0.049848f, -0.838097f, 0.019196f, 0.998032f, -0.2575f, 0.5985f, -0.7586f,
|
||||||
|
-0.826613f, 0.000000f, -0.825289f, 0.040011f, 0.959383f, -0.1876f, -0.9714f, -0.1455f,
|
||||||
|
-0.855035f, 0.006740f, -0.833636f, 0.023691f, 0.964296f, -0.1876f, -0.9714f, -0.1455f,
|
||||||
|
-0.840471f, 0.006678f, -0.852013f, 0.032047f, 0.974849f, -0.1876f, -0.9714f, -0.1455f,
|
||||||
|
-0.855035f, 0.006740f, -0.833636f, 0.023691f, 0.964296f, -0.7452f, -0.3228f, -0.5835f,
|
||||||
|
-0.868805f, 0.025153f, -0.826239f, 0.002578f, 0.977533f, -0.7452f, -0.3228f, -0.5835f,
|
||||||
|
-0.846012f, 0.024924f, -0.855217f, 0.019436f, 0.997825f, -0.7452f, -0.3228f, -0.5835f,
|
||||||
|
-0.868805f, 0.025153f, -0.826239f, 0.002578f, 0.977533f, -0.6535f, 0.5533f, -0.5165f,
|
||||||
|
-0.864231f, 0.050306f, -0.805079f, 0.001565f, 0.975457f, -0.6535f, 0.5533f, -0.5165f,
|
||||||
|
-0.838522f, 0.049848f, -0.838097f, 0.019196f, 0.998032f, -0.6535f, 0.5533f, -0.5165f,
|
||||||
|
-0.831219f, -0.000000f, -0.803721f, 0.037571f, 0.947172f, -0.2201f, -0.9745f, -0.0444f,
|
||||||
|
-0.862063f, 0.006820f, -0.800532f, 0.020471f, 0.945221f, -0.2201f, -0.9745f, -0.0444f,
|
||||||
|
-0.855035f, 0.006740f, -0.833636f, 0.023691f, 0.964296f, -0.2201f, -0.9745f, -0.0444f,
|
||||||
|
-0.862063f, 0.006820f, -0.800532f, 0.020471f, 0.945221f, -0.8244f, -0.5402f, -0.1691f,
|
||||||
|
-0.877550f, 0.025452f, -0.784558f, 0.000085f, 0.951179f, -0.8244f, -0.5402f, -0.1691f,
|
||||||
|
-0.868805f, 0.025153f, -0.826239f, 0.002578f, 0.977533f, -0.8244f, -0.5402f, -0.1691f,
|
||||||
|
-0.877550f, 0.025452f, -0.784558f, 0.000085f, 0.951179f, -0.9224f, 0.3333f, -0.1950f,
|
||||||
|
-0.873530f, 0.050904f, -0.760079f, 0.000000f, 0.947586f, -0.9224f, 0.3333f, -0.1950f,
|
||||||
|
-0.864231f, 0.050306f, -0.805079f, 0.001565f, 0.975457f, -0.9224f, 0.3333f, -0.1950f,
|
||||||
|
0.823382f, -0.000000f, -0.829343f, 0.958169f, 0.961650f, 0.0764f, -0.9708f, -0.2273f,
|
||||||
|
0.817802f, -0.000000f, -0.831219f, 0.955005f, 0.962648f, 0.0764f, -0.9708f, -0.2273f,
|
||||||
|
0.819963f, 0.006663f, -0.858947f, 0.956110f, 0.978188f, 0.0764f, -0.9708f, -0.2273f,
|
||||||
|
0.819963f, 0.006663f, -0.858947f, 0.956110f, 0.978188f, 0.3121f, -0.2585f, -0.9142f,
|
||||||
|
0.814616f, 0.024866f, -0.865919f, 0.960902f, 0.999935f, 0.3121f, -0.2585f, -0.9142f,
|
||||||
|
0.846012f, 0.024924f, -0.855217f, 0.980564f, 0.997825f, 0.3121f, -0.2585f, -0.9142f,
|
||||||
|
0.814616f, 0.024866f, -0.865919f, 0.960902f, 0.999935f, 0.2595f, 0.5970f, -0.7591f,
|
||||||
|
0.803194f, 0.049732f, -0.850268f, 0.959534f, 1.000000f, 0.2595f, 0.5970f, -0.7591f,
|
||||||
|
0.838522f, 0.049848f, -0.838097f, 0.980804f, 0.998032f, 0.2595f, 0.5970f, -0.7591f,
|
||||||
|
0.826613f, -0.000000f, -0.825289f, 0.959989f, 0.959382f, 0.1846f, -0.9717f, -0.1471f,
|
||||||
|
0.823382f, -0.000000f, -0.829343f, 0.958169f, 0.961650f, 0.1846f, -0.9717f, -0.1471f,
|
||||||
|
0.840471f, 0.006678f, -0.852013f, 0.967953f, 0.974850f, 0.1846f, -0.9717f, -0.1471f,
|
||||||
|
0.855035f, 0.006740f, -0.833636f, 0.976309f, 0.964296f, 0.7409f, -0.3280f, -0.5861f,
|
||||||
|
0.840471f, 0.006678f, -0.852013f, 0.967953f, 0.974850f, 0.7409f, -0.3280f, -0.5861f,
|
||||||
|
0.846012f, 0.024924f, -0.855217f, 0.980564f, 0.997825f, 0.7409f, -0.3280f, -0.5861f,
|
||||||
|
0.868805f, 0.025153f, -0.826239f, 0.997422f, 0.977533f, 0.6532f, 0.5522f, -0.5181f,
|
||||||
|
0.846012f, 0.024924f, -0.855217f, 0.980564f, 0.997825f, 0.6532f, 0.5522f, -0.5181f,
|
||||||
|
0.838522f, 0.049848f, -0.838097f, 0.980804f, 0.998032f, 0.6532f, 0.5522f, -0.5181f,
|
||||||
|
0.831219f, 0.000000f, -0.803721f, 0.962429f, 0.947171f, 0.2175f, -0.9749f, -0.0465f,
|
||||||
|
0.826613f, -0.000000f, -0.825289f, 0.959989f, 0.959382f, 0.2175f, -0.9749f, -0.0465f,
|
||||||
|
0.855035f, 0.006740f, -0.833636f, 0.976309f, 0.964296f, 0.2175f, -0.9749f, -0.0465f,
|
||||||
|
0.862063f, 0.006820f, -0.800532f, 0.979529f, 0.945221f, 0.8208f, -0.5443f, -0.1730f,
|
||||||
|
0.855035f, 0.006740f, -0.833636f, 0.976309f, 0.964296f, 0.8208f, -0.5443f, -0.1730f,
|
||||||
|
0.868805f, 0.025153f, -0.826239f, 0.997422f, 0.977533f, 0.8208f, -0.5443f, -0.1730f,
|
||||||
|
0.877550f, 0.025452f, -0.784558f, 0.999915f, 0.951179f, 0.9225f, 0.3326f, -0.1959f,
|
||||||
|
0.868805f, 0.025153f, -0.826239f, 0.997422f, 0.977533f, 0.9225f, 0.3326f, -0.1959f,
|
||||||
|
0.864231f, 0.050306f, -0.805079f, 0.998435f, 0.975457f, 0.9225f, 0.3326f, -0.1959f,
|
||||||
|
0.862063f, 0.006820f, -0.800532f, 0.979529f, 0.945221f, 0.2159f, -0.9764f, -0.0000f,
|
||||||
|
0.877550f, 0.025452f, -0.784558f, 0.999915f, 0.951179f, 0.7690f, -0.6392f, -0.0000f,
|
||||||
|
0.873530f, 0.050904f, -0.760079f, 1.000000f, 0.947586f, 0.9878f, 0.1560f, -0.0000f,
|
||||||
|
-0.819963f, 0.006663f, -0.858947f, 0.043890f, 0.978188f, -0.0000f, -0.9723f, -0.2336f,
|
||||||
|
-0.814616f, 0.024866f, -0.865919f, 0.039098f, 0.999935f, -0.0000f, -0.3577f, -0.9338f,
|
||||||
|
-0.803194f, 0.049732f, -0.850268f, 0.040466f, 1.000000f, -0.0000f, 0.5327f, -0.8463f,
|
||||||
|
-0.862063f, 0.006820f, 0.800532f, 0.020471f, 0.054779f, -0.2159f, -0.9764f, -0.0000f,
|
||||||
|
-0.877550f, 0.025452f, 0.784558f, 0.000085f, 0.048821f, -0.7690f, -0.6392f, -0.0000f,
|
||||||
|
-0.873530f, 0.050904f, 0.760079f, 0.000000f, 0.052414f, -0.9878f, 0.1560f, -0.0000f,
|
||||||
|
0.819963f, 0.006663f, 0.858947f, 0.956110f, 0.021812f, -0.0000f, -0.9723f, 0.2336f,
|
||||||
|
0.814616f, 0.024866f, 0.865919f, 0.960902f, 0.000065f, -0.0000f, -0.3577f, 0.9338f,
|
||||||
|
0.803194f, 0.049732f, 0.850268f, 0.959534f, 0.000000f, -0.0000f, 0.5327f, 0.8463f,
|
||||||
|
0.593538f, 0.452916f, -0.447084f, 0.951006f, 1.000000f, 0.2348f, 0.7466f, -0.6225f,
|
||||||
|
0.625297f, 0.458580f, -0.428311f, 0.977775f, 1.000000f, 0.2348f, 0.7466f, -0.6225f,
|
||||||
|
0.838522f, 0.049848f, -0.838097f, 0.980804f, 0.998032f, 0.2348f, 0.7466f, -0.6225f,
|
||||||
|
};
|
||||||
|
|
||||||
|
const int brick_vertices_length = (sizeof (brick_vertices)) / (sizeof (brick_vertices[0]));
|
||||||
|
|
||||||
637
include/model/brick.obj
Normal file
637
include/model/brick.obj
Normal file
@ -0,0 +1,637 @@
|
|||||||
|
# Blender 4.4.3
|
||||||
|
# www.blender.org
|
||||||
|
mtllib brick.mtl
|
||||||
|
o Cube
|
||||||
|
v 0.670720 0.440923 -0.370061
|
||||||
|
v 0.593538 0.452916 -0.447084
|
||||||
|
v 0.573413 0.500000 -0.333413
|
||||||
|
v 0.653358 0.454219 -0.400308
|
||||||
|
v 0.645925 0.469791 -0.358414
|
||||||
|
v 0.635801 0.474526 -0.386369
|
||||||
|
v 0.587151 0.475900 -0.414338
|
||||||
|
v 0.625297 0.458580 -0.428311
|
||||||
|
v 0.617215 0.476518 -0.404137
|
||||||
|
v 0.610465 0.491320 -0.345059
|
||||||
|
v 0.579800 0.493098 -0.372820
|
||||||
|
v 0.612471 0.486997 -0.377607
|
||||||
|
v -0.670720 0.440923 -0.370061
|
||||||
|
v -0.573413 0.500000 -0.333413
|
||||||
|
v -0.593538 0.452916 -0.447084
|
||||||
|
v -0.645925 0.469791 -0.358414
|
||||||
|
v -0.653358 0.454219 -0.400308
|
||||||
|
v -0.635801 0.474526 -0.386368
|
||||||
|
v -0.579800 0.493098 -0.372820
|
||||||
|
v -0.610465 0.491320 -0.345059
|
||||||
|
v -0.612471 0.486997 -0.377607
|
||||||
|
v -0.625297 0.458580 -0.428311
|
||||||
|
v -0.587151 0.475900 -0.414338
|
||||||
|
v -0.617215 0.476518 -0.404137
|
||||||
|
v 0.670720 0.440923 0.370061
|
||||||
|
v 0.573413 0.500000 0.333413
|
||||||
|
v 0.593538 0.452916 0.447084
|
||||||
|
v 0.645925 0.469791 0.358414
|
||||||
|
v 0.653358 0.454219 0.400308
|
||||||
|
v 0.635801 0.474526 0.386368
|
||||||
|
v 0.579800 0.493098 0.372820
|
||||||
|
v 0.610465 0.491320 0.345059
|
||||||
|
v 0.612471 0.486997 0.377607
|
||||||
|
v 0.625297 0.458580 0.428311
|
||||||
|
v 0.587151 0.475900 0.414338
|
||||||
|
v 0.617215 0.476518 0.404137
|
||||||
|
v -0.593538 0.452916 0.447084
|
||||||
|
v -0.573413 0.500000 0.333413
|
||||||
|
v -0.670720 0.440923 0.370061
|
||||||
|
v -0.587151 0.475900 0.414338
|
||||||
|
v -0.625297 0.458580 0.428311
|
||||||
|
v -0.617215 0.476518 0.404137
|
||||||
|
v -0.610465 0.491320 0.345059
|
||||||
|
v -0.579800 0.493098 0.372820
|
||||||
|
v -0.612471 0.486997 0.377607
|
||||||
|
v -0.653358 0.454219 0.400308
|
||||||
|
v -0.645925 0.469791 0.358414
|
||||||
|
v -0.635801 0.474526 0.386369
|
||||||
|
v 0.817802 -0.000000 -0.831219
|
||||||
|
v 0.803194 0.049732 -0.850268
|
||||||
|
v 0.819963 0.006663 -0.858947
|
||||||
|
v 0.814616 0.024866 -0.865919
|
||||||
|
v 0.831219 0.000000 -0.803721
|
||||||
|
v 0.873530 0.050904 -0.760079
|
||||||
|
v 0.862063 0.006820 -0.800532
|
||||||
|
v 0.877550 0.025452 -0.784558
|
||||||
|
v 0.823382 -0.000000 -0.829343
|
||||||
|
v 0.838522 0.049848 -0.838097
|
||||||
|
v 0.840471 0.006678 -0.852013
|
||||||
|
v 0.846012 0.024924 -0.855217
|
||||||
|
v 0.826613 -0.000000 -0.825289
|
||||||
|
v 0.864231 0.050306 -0.805079
|
||||||
|
v 0.855035 0.006740 -0.833636
|
||||||
|
v 0.868805 0.025153 -0.826239
|
||||||
|
v -0.831219 -0.000000 -0.803721
|
||||||
|
v -0.873530 0.050904 -0.760079
|
||||||
|
v -0.862063 0.006820 -0.800532
|
||||||
|
v -0.877550 0.025452 -0.784558
|
||||||
|
v -0.817802 0.000000 -0.831219
|
||||||
|
v -0.803194 0.049732 -0.850268
|
||||||
|
v -0.819963 0.006663 -0.858947
|
||||||
|
v -0.814616 0.024866 -0.865919
|
||||||
|
v -0.826613 0.000000 -0.825289
|
||||||
|
v -0.864231 0.050306 -0.805079
|
||||||
|
v -0.855035 0.006740 -0.833636
|
||||||
|
v -0.868805 0.025153 -0.826239
|
||||||
|
v -0.823382 0.000000 -0.829343
|
||||||
|
v -0.838522 0.049848 -0.838097
|
||||||
|
v -0.840471 0.006678 -0.852013
|
||||||
|
v -0.846012 0.024924 -0.855217
|
||||||
|
v 0.831219 -0.000000 0.803721
|
||||||
|
v 0.873530 0.050904 0.760079
|
||||||
|
v 0.862063 0.006820 0.800532
|
||||||
|
v 0.877550 0.025452 0.784558
|
||||||
|
v 0.817802 0.000000 0.831219
|
||||||
|
v 0.803194 0.049732 0.850268
|
||||||
|
v 0.819963 0.006663 0.858947
|
||||||
|
v 0.814616 0.024866 0.865919
|
||||||
|
v 0.826613 0.000000 0.825289
|
||||||
|
v 0.864231 0.050306 0.805079
|
||||||
|
v 0.855035 0.006740 0.833636
|
||||||
|
v 0.868805 0.025153 0.826239
|
||||||
|
v 0.823382 0.000000 0.829343
|
||||||
|
v 0.838522 0.049848 0.838097
|
||||||
|
v 0.840471 0.006678 0.852013
|
||||||
|
v 0.846012 0.024924 0.855217
|
||||||
|
v -0.817802 -0.000000 0.831219
|
||||||
|
v -0.803194 0.049732 0.850268
|
||||||
|
v -0.819963 0.006663 0.858947
|
||||||
|
v -0.814616 0.024866 0.865919
|
||||||
|
v -0.831219 0.000000 0.803721
|
||||||
|
v -0.873530 0.050904 0.760079
|
||||||
|
v -0.862063 0.006820 0.800532
|
||||||
|
v -0.877550 0.025452 0.784558
|
||||||
|
v -0.823382 -0.000000 0.829343
|
||||||
|
v -0.838522 0.049848 0.838097
|
||||||
|
v -0.840471 0.006678 0.852013
|
||||||
|
v -0.846012 0.024924 0.855217
|
||||||
|
v -0.826613 -0.000000 0.825289
|
||||||
|
v -0.864231 0.050306 0.805079
|
||||||
|
v -0.855035 0.006740 0.833636
|
||||||
|
v -0.868805 0.025153 0.826239
|
||||||
|
vn -0.0000 -1.0000 -0.0000
|
||||||
|
vn 0.7923 0.5855 -0.1715
|
||||||
|
vn 0.5441 0.7184 0.4334
|
||||||
|
vn -0.2348 0.7466 -0.6225
|
||||||
|
vn -0.0000 1.0000 -0.0000
|
||||||
|
vn 0.7282 0.6745 -0.1215
|
||||||
|
vn 0.5040 0.7407 -0.4442
|
||||||
|
vn 0.1743 0.8216 -0.5427
|
||||||
|
vn 0.0997 0.9314 -0.3501
|
||||||
|
vn 0.1837 0.9729 -0.1406
|
||||||
|
vn 0.4936 0.8655 -0.0845
|
||||||
|
vn 0.3667 0.8858 -0.2843
|
||||||
|
vn -0.7282 0.6745 -0.1215
|
||||||
|
vn -0.4658 0.8847 -0.0188
|
||||||
|
vn -0.1837 0.9729 -0.1406
|
||||||
|
vn -0.1197 0.9246 -0.3618
|
||||||
|
vn -0.1743 0.8216 -0.5427
|
||||||
|
vn -0.5124 0.7627 -0.3947
|
||||||
|
vn -0.3667 0.8858 -0.2843
|
||||||
|
vn 0.7282 0.6745 0.1215
|
||||||
|
vn 0.4658 0.8847 0.0188
|
||||||
|
vn 0.1837 0.9729 0.1406
|
||||||
|
vn 0.1197 0.9246 0.3618
|
||||||
|
vn 0.1743 0.8216 0.5427
|
||||||
|
vn 0.5124 0.7627 0.3947
|
||||||
|
vn 0.3667 0.8858 0.2843
|
||||||
|
vn -0.1743 0.8216 0.5427
|
||||||
|
vn -0.0997 0.9314 0.3501
|
||||||
|
vn -0.1837 0.9729 0.1406
|
||||||
|
vn -0.4936 0.8655 0.0845
|
||||||
|
vn -0.7282 0.6745 0.1215
|
||||||
|
vn -0.5040 0.7407 0.4442
|
||||||
|
vn -0.3667 0.8858 0.2843
|
||||||
|
vn 0.7586 0.6516 -0.0000
|
||||||
|
vn 0.5190 0.8548 -0.0000
|
||||||
|
vn 0.2281 0.9736 -0.0000
|
||||||
|
vn -0.0000 0.8185 0.5745
|
||||||
|
vn -0.0000 0.9239 0.3827
|
||||||
|
vn -0.0000 0.9850 0.1725
|
||||||
|
vn -0.7586 0.6516 -0.0000
|
||||||
|
vn -0.5190 0.8548 -0.0000
|
||||||
|
vn -0.2281 0.9736 -0.0000
|
||||||
|
vn -0.0000 0.8185 -0.5745
|
||||||
|
vn -0.0000 0.9239 -0.3827
|
||||||
|
vn -0.0000 0.9850 -0.1725
|
||||||
|
vn -0.5441 0.7184 0.4334
|
||||||
|
vn -0.7820 0.5943 0.1876
|
||||||
|
vn -0.0000 0.7071 0.7071
|
||||||
|
vn -0.2348 0.7466 0.6225
|
||||||
|
vn 0.2348 0.7466 0.6225
|
||||||
|
vn -0.5441 0.7184 -0.4334
|
||||||
|
vn 0.7820 0.5943 0.1876
|
||||||
|
vn -0.8872 0.4614 -0.0000
|
||||||
|
vn -0.0000 0.7071 -0.7071
|
||||||
|
vn -0.7820 0.5943 -0.1876
|
||||||
|
vn 0.8872 0.4614 -0.0000
|
||||||
|
vn 0.5440 0.7184 -0.4335
|
||||||
|
vn -0.2201 -0.9745 0.0444
|
||||||
|
vn -0.8244 -0.5402 0.1691
|
||||||
|
vn -0.9224 0.3333 0.1950
|
||||||
|
vn -0.1876 -0.9714 0.1455
|
||||||
|
vn -0.7452 -0.3228 0.5835
|
||||||
|
vn -0.6535 0.5533 0.5165
|
||||||
|
vn -0.0776 -0.9707 0.2274
|
||||||
|
vn -0.3099 -0.2550 0.9159
|
||||||
|
vn -0.2575 0.5985 0.7586
|
||||||
|
vn 0.0764 -0.9708 0.2273
|
||||||
|
vn 0.3121 -0.2585 0.9142
|
||||||
|
vn 0.2595 0.5970 0.7591
|
||||||
|
vn 0.1846 -0.9717 0.1471
|
||||||
|
vn 0.7409 -0.3280 0.5861
|
||||||
|
vn 0.6532 0.5522 0.5181
|
||||||
|
vn 0.2175 -0.9749 0.0465
|
||||||
|
vn 0.8208 -0.5443 0.1729
|
||||||
|
vn 0.9225 0.3326 0.1959
|
||||||
|
vn -0.0764 -0.9708 -0.2273
|
||||||
|
vn -0.3121 -0.2585 -0.9142
|
||||||
|
vn -0.2595 0.5970 -0.7591
|
||||||
|
vn -0.1846 -0.9717 -0.1471
|
||||||
|
vn -0.7409 -0.3280 -0.5861
|
||||||
|
vn -0.6532 0.5522 -0.5181
|
||||||
|
vn -0.2175 -0.9749 -0.0465
|
||||||
|
vn -0.8208 -0.5443 -0.1729
|
||||||
|
vn -0.9225 0.3326 -0.1959
|
||||||
|
vn 0.0776 -0.9707 -0.2274
|
||||||
|
vn 0.3099 -0.2550 -0.9159
|
||||||
|
vn 0.2575 0.5985 -0.7586
|
||||||
|
vn 0.1876 -0.9714 -0.1455
|
||||||
|
vn 0.7452 -0.3228 -0.5835
|
||||||
|
vn 0.6535 0.5533 -0.5165
|
||||||
|
vn 0.2201 -0.9745 -0.0444
|
||||||
|
vn 0.8244 -0.5402 -0.1691
|
||||||
|
vn 0.9224 0.3333 -0.1950
|
||||||
|
vn 0.2159 -0.9764 -0.0000
|
||||||
|
vn 0.7690 -0.6392 -0.0000
|
||||||
|
vn 0.9878 0.1560 -0.0000
|
||||||
|
vn -0.0000 -0.9723 -0.2336
|
||||||
|
vn -0.0000 -0.3577 -0.9338
|
||||||
|
vn -0.0000 0.5327 -0.8463
|
||||||
|
vn -0.2159 -0.9764 -0.0000
|
||||||
|
vn -0.7690 -0.6392 -0.0000
|
||||||
|
vn -0.9878 0.1560 -0.0000
|
||||||
|
vn -0.0000 -0.9723 0.2336
|
||||||
|
vn -0.0000 -0.3577 0.9338
|
||||||
|
vn -0.0000 0.5327 0.8463
|
||||||
|
vn 0.2154 0.7442 -0.6322
|
||||||
|
vn 0.7820 0.5943 -0.1876
|
||||||
|
vn 0.5440 0.7184 0.4335
|
||||||
|
vn -0.2154 0.7442 -0.6322
|
||||||
|
vn 0.7016 0.6996 -0.1356
|
||||||
|
vn 0.5124 0.7627 -0.3947
|
||||||
|
vn 0.1698 0.8177 -0.5500
|
||||||
|
vn 0.1197 0.9246 -0.3618
|
||||||
|
vn 0.1653 0.9789 -0.1198
|
||||||
|
vn 0.4658 0.8847 -0.0188
|
||||||
|
vn -0.7016 0.6996 -0.1356
|
||||||
|
vn -0.4936 0.8655 -0.0845
|
||||||
|
vn -0.1653 0.9789 -0.1198
|
||||||
|
vn -0.0997 0.9314 -0.3501
|
||||||
|
vn -0.1698 0.8177 -0.5500
|
||||||
|
vn -0.5040 0.7407 -0.4442
|
||||||
|
vn 0.7016 0.6996 0.1356
|
||||||
|
vn 0.4936 0.8655 0.0845
|
||||||
|
vn 0.1653 0.9789 0.1198
|
||||||
|
vn 0.0997 0.9314 0.3501
|
||||||
|
vn 0.1698 0.8177 0.5500
|
||||||
|
vn 0.5040 0.7407 0.4442
|
||||||
|
vn -0.1698 0.8177 0.5500
|
||||||
|
vn -0.1197 0.9246 0.3618
|
||||||
|
vn -0.1653 0.9789 0.1198
|
||||||
|
vn -0.4658 0.8847 0.0188
|
||||||
|
vn -0.7016 0.6996 0.1356
|
||||||
|
vn -0.5124 0.7627 0.3947
|
||||||
|
vn -0.5440 0.7184 0.4335
|
||||||
|
vn -0.7923 0.5855 0.1715
|
||||||
|
vn -0.2154 0.7442 0.6322
|
||||||
|
vn 0.2154 0.7442 0.6322
|
||||||
|
vn -0.5440 0.7184 -0.4335
|
||||||
|
vn 0.7923 0.5855 0.1715
|
||||||
|
vn -0.7923 0.5855 -0.1715
|
||||||
|
vn 0.5441 0.7184 -0.4334
|
||||||
|
vn -0.2175 -0.9749 0.0465
|
||||||
|
vn -0.8208 -0.5443 0.1730
|
||||||
|
vn -0.9225 0.3326 0.1959
|
||||||
|
vn -0.1846 -0.9717 0.1471
|
||||||
|
vn -0.7409 -0.3280 0.5861
|
||||||
|
vn -0.6532 0.5522 0.5181
|
||||||
|
vn -0.0764 -0.9708 0.2273
|
||||||
|
vn -0.3121 -0.2585 0.9142
|
||||||
|
vn -0.2595 0.5970 0.7591
|
||||||
|
vn 0.0776 -0.9707 0.2274
|
||||||
|
vn 0.3099 -0.2550 0.9159
|
||||||
|
vn 0.2575 0.5985 0.7586
|
||||||
|
vn 0.1876 -0.9714 0.1455
|
||||||
|
vn 0.7452 -0.3228 0.5835
|
||||||
|
vn 0.6535 0.5533 0.5165
|
||||||
|
vn 0.2201 -0.9745 0.0444
|
||||||
|
vn 0.8244 -0.5402 0.1691
|
||||||
|
vn 0.9224 0.3333 0.1950
|
||||||
|
vn -0.0776 -0.9707 -0.2274
|
||||||
|
vn -0.3099 -0.2550 -0.9159
|
||||||
|
vn -0.2575 0.5985 -0.7586
|
||||||
|
vn -0.1876 -0.9714 -0.1455
|
||||||
|
vn -0.7452 -0.3228 -0.5835
|
||||||
|
vn -0.6535 0.5533 -0.5165
|
||||||
|
vn -0.2201 -0.9745 -0.0444
|
||||||
|
vn -0.8244 -0.5402 -0.1691
|
||||||
|
vn -0.9224 0.3333 -0.1950
|
||||||
|
vn 0.0764 -0.9708 -0.2273
|
||||||
|
vn 0.3121 -0.2585 -0.9142
|
||||||
|
vn 0.2595 0.5970 -0.7591
|
||||||
|
vn 0.1846 -0.9717 -0.1471
|
||||||
|
vn 0.7409 -0.3280 -0.5861
|
||||||
|
vn 0.6532 0.5522 -0.5181
|
||||||
|
vn 0.2175 -0.9749 -0.0465
|
||||||
|
vn 0.8208 -0.5443 -0.1730
|
||||||
|
vn 0.9225 0.3326 -0.1959
|
||||||
|
vn 0.2348 0.7466 -0.6225
|
||||||
|
vt 0.044995 0.962648
|
||||||
|
vt 0.962429 0.947171
|
||||||
|
vt 0.955005 0.037352
|
||||||
|
vt 1.000000 0.967273
|
||||||
|
vt 1.000000 0.947586
|
||||||
|
vt 0.998435 0.975457
|
||||||
|
vt 0.977775 0.000000
|
||||||
|
vt 0.998435 0.024543
|
||||||
|
vt 1.000000 0.032727
|
||||||
|
vt 0.048994 1.000000
|
||||||
|
vt 0.019196 0.998032
|
||||||
|
vt 0.022225 1.000000
|
||||||
|
vt 0.947979 0.083234
|
||||||
|
vt 0.052021 0.916766
|
||||||
|
vt 0.052021 0.083234
|
||||||
|
vt 1.000000 0.934301
|
||||||
|
vt 1.000000 0.924907
|
||||||
|
vt 0.978658 1.000000
|
||||||
|
vt 1.000000 0.971374
|
||||||
|
vt 0.954276 1.000000
|
||||||
|
vt 0.977775 1.000000
|
||||||
|
vt 0.951006 1.000000
|
||||||
|
vt 0.978493 0.972008
|
||||||
|
vt 0.976926 0.931324
|
||||||
|
vt 0.952969 0.966026
|
||||||
|
vt 0.947979 0.916766
|
||||||
|
vt 0.000000 0.934302
|
||||||
|
vt 0.000000 0.967273
|
||||||
|
vt 0.000000 0.924907
|
||||||
|
vt 0.021507 0.972008
|
||||||
|
vt 0.000000 0.971374
|
||||||
|
vt 0.047031 0.966026
|
||||||
|
vt 0.023074 0.931324
|
||||||
|
vt 0.045724 1.000000
|
||||||
|
vt 0.021342 1.000000
|
||||||
|
vt 1.000000 0.065698
|
||||||
|
vt 1.000000 0.075093
|
||||||
|
vt 0.978493 0.027992
|
||||||
|
vt 1.000000 0.028626
|
||||||
|
vt 0.952969 0.033974
|
||||||
|
vt 0.976926 0.068676
|
||||||
|
vt 0.954276 0.000000
|
||||||
|
vt 0.951006 0.000000
|
||||||
|
vt 0.978658 0.000000
|
||||||
|
vt 0.045724 0.000000
|
||||||
|
vt 0.022225 0.000000
|
||||||
|
vt 0.048994 0.000000
|
||||||
|
vt 0.021507 0.027992
|
||||||
|
vt 0.021342 0.000000
|
||||||
|
vt 0.023074 0.068676
|
||||||
|
vt 0.047031 0.033974
|
||||||
|
vt 0.000000 0.065698
|
||||||
|
vt 0.000000 0.032727
|
||||||
|
vt 0.000000 0.075093
|
||||||
|
vt 0.000000 0.028626
|
||||||
|
vt 0.001565 0.024543
|
||||||
|
vt 0.000000 0.052414
|
||||||
|
vt 0.040466 0.000000
|
||||||
|
vt 0.959534 0.000000
|
||||||
|
vt 0.019196 0.001968
|
||||||
|
vt 0.980804 0.001968
|
||||||
|
vt 0.001565 0.975457
|
||||||
|
vt 1.000000 0.052414
|
||||||
|
vt 0.959534 1.000000
|
||||||
|
vt 0.040466 1.000000
|
||||||
|
vt 0.000000 0.947586
|
||||||
|
vt 1.000000 0.947586
|
||||||
|
vt 0.998435 0.975457
|
||||||
|
vt 0.980804 0.998032
|
||||||
|
vt 0.037571 0.052829
|
||||||
|
vt 0.023691 0.035704
|
||||||
|
vt 0.020471 0.054779
|
||||||
|
vt 0.002578 0.022467
|
||||||
|
vt 0.000085 0.048821
|
||||||
|
vt 0.001565 0.024543
|
||||||
|
vt 0.040011 0.040618
|
||||||
|
vt 0.032047 0.025150
|
||||||
|
vt 0.019436 0.002175
|
||||||
|
vt 0.019196 0.001968
|
||||||
|
vt 0.041831 0.038350
|
||||||
|
vt 0.043890 0.021812
|
||||||
|
vt 0.039098 0.000065
|
||||||
|
vt 0.958169 0.038350
|
||||||
|
vt 0.956110 0.021812
|
||||||
|
vt 0.980564 0.002175
|
||||||
|
vt 0.960902 0.000065
|
||||||
|
vt 0.959989 0.040618
|
||||||
|
vt 0.967953 0.025150
|
||||||
|
vt 0.976309 0.035704
|
||||||
|
vt 0.997422 0.022467
|
||||||
|
vt 0.980804 0.001968
|
||||||
|
vt 0.962429 0.052829
|
||||||
|
vt 0.979529 0.054779
|
||||||
|
vt 0.999915 0.048821
|
||||||
|
vt 0.041831 0.961650
|
||||||
|
vt 0.043890 0.978188
|
||||||
|
vt 0.019436 0.997825
|
||||||
|
vt 0.039098 0.999935
|
||||||
|
vt 0.040011 0.959383
|
||||||
|
vt 0.032047 0.974849
|
||||||
|
vt 0.023691 0.964296
|
||||||
|
vt 0.002578 0.977533
|
||||||
|
vt 0.037571 0.947172
|
||||||
|
vt 0.020471 0.945221
|
||||||
|
vt 0.000085 0.951179
|
||||||
|
vt 0.001565 0.975457
|
||||||
|
vt 0.958169 0.961650
|
||||||
|
vt 0.956110 0.978188
|
||||||
|
vt 0.967953 0.974850
|
||||||
|
vt 0.980564 0.997825
|
||||||
|
vt 0.960902 0.999935
|
||||||
|
vt 0.980804 0.998032
|
||||||
|
vt 0.959989 0.959382
|
||||||
|
vt 0.976309 0.964296
|
||||||
|
vt 0.997422 0.977533
|
||||||
|
vt 0.979529 0.945221
|
||||||
|
vt 0.999915 0.951179
|
||||||
|
vt 1.000000 0.052414
|
||||||
|
vt 0.955005 0.962648
|
||||||
|
vt 0.044995 0.037352
|
||||||
|
vt 0.959534 1.000000
|
||||||
|
vt 0.040466 0.000000
|
||||||
|
s 0
|
||||||
|
f 69/1/1 53/2/1 85/3/1
|
||||||
|
f 4/4/2 54/5/2 62/6/2
|
||||||
|
f 34/7/3 90/8/3 29/9/3
|
||||||
|
f 15/10/4 78/11/4 22/12/4
|
||||||
|
f 26/13/5 14/14/5 38/15/5
|
||||||
|
f 4/4/6 5/16/6 1/17/6
|
||||||
|
f 4/4/7 9/18/7 6/19/7
|
||||||
|
f 7/20/8 8/21/8 2/22/8
|
||||||
|
f 7/20/9 12/23/9 9/18/9
|
||||||
|
f 10/24/10 11/25/10 3/26/10
|
||||||
|
f 5/16/11 12/23/11 10/24/11
|
||||||
|
f 6/19/12 9/18/12 12/23/12
|
||||||
|
f 16/27/13 17/28/13 13/29/13
|
||||||
|
f 16/27/14 21/30/14 18/31/14
|
||||||
|
f 19/32/15 20/33/15 14/14/15
|
||||||
|
f 23/34/16 21/30/16 19/32/16
|
||||||
|
f 22/12/17 23/34/17 15/10/17
|
||||||
|
f 17/28/18 24/35/18 22/12/18
|
||||||
|
f 18/31/19 21/30/19 24/35/19
|
||||||
|
f 28/36/20 29/9/20 25/37/20
|
||||||
|
f 28/36/21 33/38/21 30/39/21
|
||||||
|
f 31/40/22 32/41/22 26/13/22
|
||||||
|
f 35/42/23 33/38/23 31/40/23
|
||||||
|
f 34/7/24 35/42/24 27/43/24
|
||||||
|
f 29/9/25 36/44/25 34/7/25
|
||||||
|
f 30/39/26 33/38/26 36/44/26
|
||||||
|
f 40/45/27 41/46/27 37/47/27
|
||||||
|
f 40/45/28 45/48/28 42/49/28
|
||||||
|
f 43/50/29 44/51/29 38/15/29
|
||||||
|
f 47/52/30 45/48/30 43/50/30
|
||||||
|
f 46/53/31 47/52/31 39/54/31
|
||||||
|
f 46/53/32 42/49/32 48/55/32
|
||||||
|
f 42/49/33 45/48/33 48/55/33
|
||||||
|
f 1/17/34 28/36/34 25/37/34
|
||||||
|
f 5/16/35 32/41/35 28/36/35
|
||||||
|
f 32/41/36 3/26/36 26/13/36
|
||||||
|
f 27/43/37 40/45/37 37/47/37
|
||||||
|
f 40/45/38 31/40/38 44/51/38
|
||||||
|
f 31/40/39 38/15/39 44/51/39
|
||||||
|
f 39/54/40 16/27/40 13/29/40
|
||||||
|
f 47/52/41 20/33/41 16/27/41
|
||||||
|
f 20/33/42 38/15/42 14/14/42
|
||||||
|
f 15/10/43 7/20/43 2/22/43
|
||||||
|
f 7/20/44 19/32/44 11/25/44
|
||||||
|
f 19/32/45 3/26/45 11/25/45
|
||||||
|
f 110/56/46 41/46/46 46/53/46
|
||||||
|
f 102/57/47 46/53/47 39/54/47
|
||||||
|
f 27/43/48 98/58/48 86/59/48
|
||||||
|
f 106/60/49 37/47/49 41/46/49
|
||||||
|
f 27/43/50 94/61/50 34/7/50
|
||||||
|
f 22/12/51 74/62/51 17/28/51
|
||||||
|
f 29/9/52 82/63/52 25/37/52
|
||||||
|
f 13/29/53 102/57/53 39/54/53
|
||||||
|
f 15/10/54 50/64/54 70/65/54
|
||||||
|
f 17/28/55 66/66/55 13/29/55
|
||||||
|
f 25/37/56 54/67/56 1/17/56
|
||||||
|
f 8/21/57 62/68/57 58/69/57
|
||||||
|
f 101/70/58 111/71/58 103/72/58
|
||||||
|
f 103/72/59 112/73/59 104/74/59
|
||||||
|
f 104/74/60 110/75/60 102/57/60
|
||||||
|
f 109/76/61 107/77/61 111/71/61
|
||||||
|
f 111/71/62 108/78/62 112/73/62
|
||||||
|
f 112/73/63 106/79/63 110/56/63
|
||||||
|
f 105/80/64 99/81/64 107/77/64
|
||||||
|
f 99/81/65 108/78/65 107/77/65
|
||||||
|
f 100/82/66 106/60/66 108/78/66
|
||||||
|
f 93/83/67 87/84/67 85/3/67
|
||||||
|
f 87/84/68 96/85/68 88/86/68
|
||||||
|
f 88/86/69 94/61/69 86/59/69
|
||||||
|
f 89/87/70 95/88/70 93/83/70
|
||||||
|
f 91/89/71 96/85/71 95/88/71
|
||||||
|
f 92/90/72 94/91/72 96/85/72
|
||||||
|
f 81/92/73 91/89/73 89/87/73
|
||||||
|
f 83/93/74 92/90/74 91/89/74
|
||||||
|
f 84/94/75 90/8/75 92/90/75
|
||||||
|
f 77/95/76 71/96/76 69/1/76
|
||||||
|
f 71/96/77 80/97/77 72/98/77
|
||||||
|
f 72/98/78 78/11/78 70/65/78
|
||||||
|
f 73/99/79 79/100/79 77/95/79
|
||||||
|
f 75/101/80 80/97/80 79/100/80
|
||||||
|
f 76/102/81 78/11/81 80/97/81
|
||||||
|
f 65/103/82 75/101/82 73/99/82
|
||||||
|
f 67/104/83 76/102/83 75/101/83
|
||||||
|
f 68/105/84 74/106/84 76/102/84
|
||||||
|
f 57/107/85 51/108/85 59/109/85
|
||||||
|
f 51/108/86 60/110/86 59/109/86
|
||||||
|
f 52/111/87 58/112/87 60/110/87
|
||||||
|
f 61/113/88 59/109/88 63/114/88
|
||||||
|
f 63/114/89 60/110/89 64/115/89
|
||||||
|
f 64/115/90 58/69/90 62/68/90
|
||||||
|
f 53/2/91 63/114/91 55/116/91
|
||||||
|
f 55/116/92 64/115/92 56/117/92
|
||||||
|
f 56/117/93 62/6/93 54/5/93
|
||||||
|
f 53/2/94 83/93/94 81/92/94
|
||||||
|
f 55/116/95 84/94/95 83/93/95
|
||||||
|
f 56/117/96 82/118/96 84/94/96
|
||||||
|
f 69/1/97 51/108/97 49/119/97
|
||||||
|
f 71/96/98 52/111/98 51/108/98
|
||||||
|
f 72/98/99 50/64/99 52/111/99
|
||||||
|
f 101/70/100 67/104/100 65/103/100
|
||||||
|
f 103/72/101 68/105/101 67/104/101
|
||||||
|
f 104/74/102 66/66/102 68/105/102
|
||||||
|
f 85/3/103 99/81/103 97/120/103
|
||||||
|
f 87/84/104 100/82/104 99/81/104
|
||||||
|
f 88/86/105 98/58/105 100/82/105
|
||||||
|
f 2/22/106 58/112/106 50/121/106
|
||||||
|
f 85/3/1 97/120/1 105/80/1
|
||||||
|
f 105/80/1 109/76/1 101/70/1
|
||||||
|
f 101/70/1 65/103/1 73/99/1
|
||||||
|
f 73/99/1 77/95/1 69/1/1
|
||||||
|
f 69/1/1 49/119/1 57/107/1
|
||||||
|
f 57/107/1 61/113/1 53/2/1
|
||||||
|
f 53/2/1 81/92/1 89/87/1
|
||||||
|
f 89/87/1 93/83/1 85/3/1
|
||||||
|
f 85/3/1 105/80/1 101/70/1
|
||||||
|
f 101/70/1 73/99/1 69/1/1
|
||||||
|
f 69/1/1 57/107/1 53/2/1
|
||||||
|
f 53/2/1 89/87/1 85/3/1
|
||||||
|
f 85/3/1 101/70/1 69/1/1
|
||||||
|
f 4/4/107 1/17/107 54/5/107
|
||||||
|
f 34/7/108 94/91/108 90/8/108
|
||||||
|
f 15/10/109 70/65/109 78/11/109
|
||||||
|
f 26/13/5 3/26/5 14/14/5
|
||||||
|
f 4/4/110 6/19/110 5/16/110
|
||||||
|
f 4/4/111 8/21/111 9/18/111
|
||||||
|
f 7/20/112 9/18/112 8/21/112
|
||||||
|
f 7/20/113 11/25/113 12/23/113
|
||||||
|
f 10/24/114 12/23/114 11/25/114
|
||||||
|
f 5/16/115 6/19/115 12/23/115
|
||||||
|
f 16/27/116 18/31/116 17/28/116
|
||||||
|
f 16/27/117 20/33/117 21/30/117
|
||||||
|
f 19/32/118 21/30/118 20/33/118
|
||||||
|
f 23/34/119 24/35/119 21/30/119
|
||||||
|
f 22/12/120 24/35/120 23/34/120
|
||||||
|
f 17/28/121 18/31/121 24/35/121
|
||||||
|
f 28/36/122 30/39/122 29/9/122
|
||||||
|
f 28/36/123 32/41/123 33/38/123
|
||||||
|
f 31/40/124 33/38/124 32/41/124
|
||||||
|
f 35/42/125 36/44/125 33/38/125
|
||||||
|
f 34/7/126 36/44/126 35/42/126
|
||||||
|
f 29/9/127 30/39/127 36/44/127
|
||||||
|
f 40/45/128 42/49/128 41/46/128
|
||||||
|
f 40/45/129 44/51/129 45/48/129
|
||||||
|
f 43/50/130 45/48/130 44/51/130
|
||||||
|
f 47/52/131 48/55/131 45/48/131
|
||||||
|
f 46/53/132 48/55/132 47/52/132
|
||||||
|
f 46/53/133 41/46/133 42/49/133
|
||||||
|
f 1/17/34 5/16/34 28/36/34
|
||||||
|
f 5/16/35 10/24/35 32/41/35
|
||||||
|
f 32/41/36 10/24/36 3/26/36
|
||||||
|
f 27/43/37 35/42/37 40/45/37
|
||||||
|
f 40/45/38 35/42/38 31/40/38
|
||||||
|
f 31/40/39 26/13/39 38/15/39
|
||||||
|
f 39/54/40 47/52/40 16/27/40
|
||||||
|
f 47/52/41 43/50/41 20/33/41
|
||||||
|
f 20/33/42 43/50/42 38/15/42
|
||||||
|
f 15/10/43 23/34/43 7/20/43
|
||||||
|
f 7/20/44 23/34/44 19/32/44
|
||||||
|
f 19/32/45 14/14/45 3/26/45
|
||||||
|
f 110/56/134 106/79/134 41/46/134
|
||||||
|
f 102/57/135 110/75/135 46/53/135
|
||||||
|
f 27/43/48 37/47/48 98/58/48
|
||||||
|
f 106/60/136 98/122/136 37/47/136
|
||||||
|
f 27/43/137 86/59/137 94/61/137
|
||||||
|
f 22/12/138 78/11/138 74/62/138
|
||||||
|
f 29/9/139 90/8/139 82/63/139
|
||||||
|
f 13/29/53 66/66/53 102/57/53
|
||||||
|
f 15/10/54 2/22/54 50/64/54
|
||||||
|
f 17/28/140 74/106/140 66/66/140
|
||||||
|
f 25/37/56 82/118/56 54/67/56
|
||||||
|
f 8/21/141 4/4/141 62/68/141
|
||||||
|
f 101/70/142 109/76/142 111/71/142
|
||||||
|
f 103/72/143 111/71/143 112/73/143
|
||||||
|
f 104/74/144 112/73/144 110/75/144
|
||||||
|
f 109/76/145 105/80/145 107/77/145
|
||||||
|
f 111/71/146 107/77/146 108/78/146
|
||||||
|
f 112/73/147 108/78/147 106/79/147
|
||||||
|
f 105/80/148 97/120/148 99/81/148
|
||||||
|
f 99/81/149 100/82/149 108/78/149
|
||||||
|
f 100/82/150 98/122/150 106/60/150
|
||||||
|
f 93/83/151 95/88/151 87/84/151
|
||||||
|
f 87/84/152 95/88/152 96/85/152
|
||||||
|
f 88/86/153 96/85/153 94/61/153
|
||||||
|
f 89/87/154 91/89/154 95/88/154
|
||||||
|
f 91/89/155 92/90/155 96/85/155
|
||||||
|
f 92/90/156 90/8/156 94/91/156
|
||||||
|
f 81/92/157 83/93/157 91/89/157
|
||||||
|
f 83/93/158 84/94/158 92/90/158
|
||||||
|
f 84/94/159 82/63/159 90/8/159
|
||||||
|
f 77/95/160 79/100/160 71/96/160
|
||||||
|
f 71/96/161 79/100/161 80/97/161
|
||||||
|
f 72/98/162 80/97/162 78/11/162
|
||||||
|
f 73/99/163 75/101/163 79/100/163
|
||||||
|
f 75/101/164 76/102/164 80/97/164
|
||||||
|
f 76/102/165 74/62/165 78/11/165
|
||||||
|
f 65/103/166 67/104/166 75/101/166
|
||||||
|
f 67/104/167 68/105/167 76/102/167
|
||||||
|
f 68/105/168 66/66/168 74/106/168
|
||||||
|
f 57/107/169 49/119/169 51/108/169
|
||||||
|
f 51/108/170 52/111/170 60/110/170
|
||||||
|
f 52/111/171 50/121/171 58/112/171
|
||||||
|
f 61/113/172 57/107/172 59/109/172
|
||||||
|
f 63/114/173 59/109/173 60/110/173
|
||||||
|
f 64/115/174 60/110/174 58/69/174
|
||||||
|
f 53/2/175 61/113/175 63/114/175
|
||||||
|
f 55/116/176 63/114/176 64/115/176
|
||||||
|
f 56/117/177 64/115/177 62/6/177
|
||||||
|
f 53/2/94 55/116/94 83/93/94
|
||||||
|
f 55/116/95 56/117/95 84/94/95
|
||||||
|
f 56/117/96 54/67/96 82/118/96
|
||||||
|
f 69/1/97 71/96/97 51/108/97
|
||||||
|
f 71/96/98 72/98/98 52/111/98
|
||||||
|
f 72/98/99 70/65/99 50/64/99
|
||||||
|
f 101/70/100 103/72/100 67/104/100
|
||||||
|
f 103/72/101 104/74/101 68/105/101
|
||||||
|
f 104/74/102 102/57/102 66/66/102
|
||||||
|
f 85/3/103 87/84/103 99/81/103
|
||||||
|
f 87/84/104 88/86/104 100/82/104
|
||||||
|
f 88/86/105 86/59/105 98/58/105
|
||||||
|
f 2/22/178 8/21/178 58/112/178
|
||||||
19
include/render.hpp
Normal file
19
include/render.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef unsigned int uint;
|
||||||
|
|
||||||
|
void render(uint vtx, uint idx,
|
||||||
|
uint attrib_position,
|
||||||
|
uint attrib_normal,
|
||||||
|
uint uniform_trans,
|
||||||
|
uint uniform_normal_trans,
|
||||||
|
uint uniform_base_color,
|
||||||
|
uint uniform_light_pos,
|
||||||
|
int length);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -10,8 +10,8 @@ extern uint32_t _binary_src_shader_vertex_color_fp_glsl_start __asm("_binary_src
|
|||||||
extern uint32_t _binary_src_shader_vertex_color_fp_glsl_end __asm("_binary_src_shader_vertex_color_fp_glsl_end");
|
extern uint32_t _binary_src_shader_vertex_color_fp_glsl_end __asm("_binary_src_shader_vertex_color_fp_glsl_end");
|
||||||
extern uint32_t _binary_src_shader_vertex_color_fp_glsl_size __asm("_binary_src_shader_vertex_color_fp_glsl_size");
|
extern uint32_t _binary_src_shader_vertex_color_fp_glsl_size __asm("_binary_src_shader_vertex_color_fp_glsl_size");
|
||||||
|
|
||||||
#define src_shader_vertex_color_fp_glsl_start ((void *)&_binary_src_shader_vertex_color_fp_glsl_start)
|
#define src_shader_vertex_color_fp_glsl_start ((const char *)&_binary_src_shader_vertex_color_fp_glsl_start)
|
||||||
#define src_shader_vertex_color_fp_glsl_end ((void *)&_binary_src_shader_vertex_color_fp_glsl_end)
|
#define src_shader_vertex_color_fp_glsl_end ((const char *)&_binary_src_shader_vertex_color_fp_glsl_end)
|
||||||
#define src_shader_vertex_color_fp_glsl_size (src_shader_vertex_color_fp_glsl_end - src_shader_vertex_color_fp_glsl_start)
|
#define src_shader_vertex_color_fp_glsl_size (src_shader_vertex_color_fp_glsl_end - src_shader_vertex_color_fp_glsl_start)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@ -10,8 +10,8 @@ extern uint32_t _binary_src_shader_vertex_color_vp_glsl_start __asm("_binary_src
|
|||||||
extern uint32_t _binary_src_shader_vertex_color_vp_glsl_end __asm("_binary_src_shader_vertex_color_vp_glsl_end");
|
extern uint32_t _binary_src_shader_vertex_color_vp_glsl_end __asm("_binary_src_shader_vertex_color_vp_glsl_end");
|
||||||
extern uint32_t _binary_src_shader_vertex_color_vp_glsl_size __asm("_binary_src_shader_vertex_color_vp_glsl_size");
|
extern uint32_t _binary_src_shader_vertex_color_vp_glsl_size __asm("_binary_src_shader_vertex_color_vp_glsl_size");
|
||||||
|
|
||||||
#define src_shader_vertex_color_vp_glsl_start ((void *)&_binary_src_shader_vertex_color_vp_glsl_start)
|
#define src_shader_vertex_color_vp_glsl_start ((const char *)&_binary_src_shader_vertex_color_vp_glsl_start)
|
||||||
#define src_shader_vertex_color_vp_glsl_end ((void *)&_binary_src_shader_vertex_color_vp_glsl_end)
|
#define src_shader_vertex_color_vp_glsl_end ((const char *)&_binary_src_shader_vertex_color_vp_glsl_end)
|
||||||
#define src_shader_vertex_color_vp_glsl_size (src_shader_vertex_color_vp_glsl_end - src_shader_vertex_color_vp_glsl_start)
|
#define src_shader_vertex_color_vp_glsl_size (src_shader_vertex_color_vp_glsl_end - src_shader_vertex_color_vp_glsl_start)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
BIN
src/level/level1.data
Normal file
BIN
src/level/level1.data
Normal file
Binary file not shown.
BIN
src/level/level1.data.pal
Normal file
BIN
src/level/level1.data.pal
Normal file
Binary file not shown.
BIN
src/level/level1.png
Normal file
BIN
src/level/level1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 629 B |
61
src/main.c
61
src/main.c
@ -9,11 +9,12 @@
|
|||||||
#include "shader/vertex_color.vp.glsl.h"
|
#include "shader/vertex_color.vp.glsl.h"
|
||||||
|
|
||||||
#include "opengl.h"
|
#include "opengl.h"
|
||||||
|
#include "render.hpp"
|
||||||
|
|
||||||
static int vp_width = 800;
|
#include "model/brick.h"
|
||||||
static int vp_height = 600;
|
|
||||||
|
|
||||||
typedef unsigned int uint;
|
static int vp_width = 1200;
|
||||||
|
static int vp_height = 1200;
|
||||||
|
|
||||||
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
|
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
|
||||||
{
|
{
|
||||||
@ -64,27 +65,31 @@ int main()
|
|||||||
// buffer initialization
|
// buffer initialization
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/*
|
||||||
uint triangle_vertex_buffer = make_buffer(GL_ARRAY_BUFFER,
|
uint triangle_vertex_buffer = make_buffer(GL_ARRAY_BUFFER,
|
||||||
triangle_vertex_buffer_data,
|
triangle_vertex_buffer_data,
|
||||||
(sizeof (triangle_vertex_buffer_data)));
|
(sizeof (triangle_vertex_buffer_data)));
|
||||||
|
*/
|
||||||
|
|
||||||
uint vertex_color_program = compile_shader(src_shader_vertex_color_vp_glsl_start,
|
uint vtx = make_buffer(GL_ARRAY_BUFFER, brick_vertices, (sizeof (brick_vertices)));
|
||||||
|
uint idx = make_buffer(GL_ELEMENT_ARRAY_BUFFER, brick_Cube_triangles, (sizeof (brick_Cube_triangles)));
|
||||||
|
|
||||||
|
uint program = compile_shader(src_shader_vertex_color_vp_glsl_start,
|
||||||
src_shader_vertex_color_vp_glsl_size,
|
src_shader_vertex_color_vp_glsl_size,
|
||||||
src_shader_vertex_color_fp_glsl_start,
|
src_shader_vertex_color_fp_glsl_start,
|
||||||
src_shader_vertex_color_fp_glsl_size);
|
src_shader_vertex_color_fp_glsl_size);
|
||||||
glUseProgram(vertex_color_program);
|
glUseProgram(program);
|
||||||
uint vertex_color_attrib_position = glGetAttribLocation(vertex_color_program, "position");
|
uint attrib_position = glGetAttribLocation(program, "position");
|
||||||
uint vertex_color_attrib_color = glGetAttribLocation(vertex_color_program, "color");
|
uint attrib_normal = glGetAttribLocation(program, "normal");
|
||||||
|
uint uniform_trans = glGetUniformLocation(program, "trans");
|
||||||
|
uint uniform_normal_trans = glGetUniformLocation(program, "normal_trans");
|
||||||
|
uint uniform_base_color = glGetUniformLocation(program, "base_color");
|
||||||
|
uint uniform_light_pos = glGetUniformLocation(program, "light_pos");
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// main loop
|
// main loop
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
fwrite(src_shader_vertex_color_fp_glsl_start,
|
|
||||||
src_shader_vertex_color_fp_glsl_size,
|
|
||||||
1,
|
|
||||||
stdout);
|
|
||||||
|
|
||||||
const double frame_rate = 60.0;
|
const double frame_rate = 60.0;
|
||||||
const double first_frame = glfwGetTime();
|
const double first_frame = glfwGetTime();
|
||||||
double last_frame = first_frame;
|
double last_frame = first_frame;
|
||||||
@ -93,26 +98,20 @@ int main()
|
|||||||
if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
|
if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
|
||||||
glfwSetWindowShouldClose(window, true);
|
glfwSetWindowShouldClose(window, true);
|
||||||
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, triangle_vertex_buffer);
|
glEnable(GL_DEPTH_TEST);
|
||||||
glVertexAttribPointer(vertex_color_attrib_position,
|
glClearDepth(-1000.0f);
|
||||||
3,
|
glDepthFunc(GL_GREATER);
|
||||||
GL_FLOAT,
|
glClearColor(0.1, 0.2, 0.3, 1.0);
|
||||||
GL_FALSE,
|
|
||||||
(sizeof (float)) * 6,
|
|
||||||
(void*)0
|
|
||||||
);
|
|
||||||
glVertexAttribPointer(vertex_color_attrib_color,
|
|
||||||
3,
|
|
||||||
GL_FLOAT,
|
|
||||||
GL_FALSE,
|
|
||||||
(sizeof (float)) * 6,
|
|
||||||
(void*)(3 * 4)
|
|
||||||
);
|
|
||||||
glEnableVertexAttribArray(vertex_color_attrib_position);
|
|
||||||
glEnableVertexAttribArray(vertex_color_attrib_color);
|
|
||||||
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
glDrawArrays(GL_TRIANGLES, 0, 3);
|
|
||||||
|
render(vtx, idx,
|
||||||
|
attrib_position,
|
||||||
|
attrib_normal,
|
||||||
|
uniform_trans,
|
||||||
|
uniform_normal_trans,
|
||||||
|
uniform_base_color,
|
||||||
|
uniform_light_pos,
|
||||||
|
brick_Cube_triangles_length);
|
||||||
|
|
||||||
glfwSwapBuffers(window);
|
glfwSwapBuffers(window);
|
||||||
glfwPollEvents();
|
glfwPollEvents();
|
||||||
|
|||||||
7
src/model.cpp
Normal file
7
src/model.cpp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#include "model/brick.h"
|
||||||
|
|
||||||
|
void brick_model()
|
||||||
|
{
|
||||||
|
make_buffer(GL_ARRAY_BUFFER, brick_vertices, (sizeof (brick_vertices)));
|
||||||
|
make_buffer(GL_ELEMENT_ARRAY_BUFFER, brick_Cube_triangles, (sizeof (brick_Cube_triangles)));
|
||||||
|
}
|
||||||
144
src/render.cpp
Normal file
144
src/render.cpp
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
#include <math.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
#include "glad/glad.h"
|
||||||
|
|
||||||
|
#include "render.hpp"
|
||||||
|
#include "math/float_types.hpp"
|
||||||
|
#include "math/transform.hpp"
|
||||||
|
|
||||||
|
#include "level/level1.data.h"
|
||||||
|
#include "level/level1.data.pal.h"
|
||||||
|
|
||||||
|
#define PI 3.14159274101257324219f
|
||||||
|
|
||||||
|
mat4x4 perspective(float low1, float high1,
|
||||||
|
float low2, float high2)
|
||||||
|
{
|
||||||
|
float scale = (high2 - low2) / (high1 - low1);
|
||||||
|
|
||||||
|
mat4x4 m1 = mat4x4(1, 0, 0, 0,
|
||||||
|
0, 1, 0, 0,
|
||||||
|
0, 0, 1, -low1,
|
||||||
|
0, 0, 0, 1
|
||||||
|
);
|
||||||
|
|
||||||
|
mat4x4 m2 = mat4x4(1, 0, 0, 0,
|
||||||
|
0, 1, 0, 0,
|
||||||
|
0, 0, 0, 1,
|
||||||
|
0, 0, scale, low2
|
||||||
|
);
|
||||||
|
|
||||||
|
mat4x4 m3 = m2 * m1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
mat4x4 m3 = mat4x4(1, 0, 0, 0,
|
||||||
|
0, 1, 0, 0,
|
||||||
|
0, 0, 0, 1,
|
||||||
|
0, 0, 1, 0
|
||||||
|
);
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (0) {
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
printf("% 2.3f % 2.3f % 2.3f % 2.3f \n", m3[i][0], m3[i][1], m3[i][2], m3[i][3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec4 v = vec4(5, 6, 0.5, 1);
|
||||||
|
vec4 vv = m3 * v;
|
||||||
|
printf("\n% 2.3f % 2.3f % 2.3f % 2.3f \n", vv[0], vv[1], vv[2], vv[3]);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return m3;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
levels are 13x28
|
||||||
|
*/
|
||||||
|
|
||||||
|
void render(uint vtx, uint idx,
|
||||||
|
uint attrib_position,
|
||||||
|
uint attrib_normal,
|
||||||
|
uint uniform_trans,
|
||||||
|
uint uniform_normal_trans,
|
||||||
|
uint uniform_base_color,
|
||||||
|
uint uniform_light_pos,
|
||||||
|
int length)
|
||||||
|
{
|
||||||
|
static float theta = 0;
|
||||||
|
|
||||||
|
theta += 0.01;
|
||||||
|
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, vtx);
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, idx);
|
||||||
|
glVertexAttribPointer(attrib_position,
|
||||||
|
3,
|
||||||
|
GL_FLOAT,
|
||||||
|
GL_FALSE,
|
||||||
|
(sizeof (float)) * 8,
|
||||||
|
(void*)(0 * 4)
|
||||||
|
);
|
||||||
|
/*
|
||||||
|
glVertexAttribPointer(vertex_color_attrib_texture,
|
||||||
|
2,
|
||||||
|
GL_FLOAT,
|
||||||
|
GL_FALSE,
|
||||||
|
(sizeof (float)) * 8,
|
||||||
|
(void*)(3 * 4)
|
||||||
|
);
|
||||||
|
*/
|
||||||
|
glVertexAttribPointer(attrib_normal,
|
||||||
|
3,
|
||||||
|
GL_FLOAT,
|
||||||
|
GL_FALSE,
|
||||||
|
(sizeof (float)) * 8,
|
||||||
|
(void*)(5 * 4)
|
||||||
|
);
|
||||||
|
glEnableVertexAttribArray(attrib_position);
|
||||||
|
glEnableVertexAttribArray(attrib_normal);
|
||||||
|
|
||||||
|
assert(src_level_level1_data_size == 13 * 28);
|
||||||
|
const uint8_t * level = (const uint8_t *)src_level_level1_data_start;
|
||||||
|
const uint8_t * pal = (const uint8_t *)src_level_level1_data_pal_start;
|
||||||
|
|
||||||
|
for (int y = 0; y < 28; y++) {
|
||||||
|
for (int x = 0; x < 13; x++) {
|
||||||
|
char tile = level[y * 13 + x];
|
||||||
|
if (tile == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
const float cs = 1.0f / 255.0f;
|
||||||
|
vec3 base_color = vec3(((float)pal[tile * 3 + 0]) * cs,
|
||||||
|
((float)pal[tile * 3 + 1]) * cs,
|
||||||
|
((float)pal[tile * 3 + 2]) * cs);
|
||||||
|
|
||||||
|
mat4x4 rx = rotate_x(PI / 2.0f);
|
||||||
|
//mat4x4 p = perspective(-1, 1, 0, 1);
|
||||||
|
mat4x4 s = scale(vec3(1.0f / 12.0f,
|
||||||
|
1.0f / 27.0f,
|
||||||
|
1.0f / 27.0f));
|
||||||
|
|
||||||
|
float px = ((float)x / 13.0) * 2.0 - 1.0 + 1.0f / 13.0f;
|
||||||
|
float py = ((float)y / 28.0) * -2.0 + 1.0 - 1.0f / 28.0f;
|
||||||
|
|
||||||
|
mat4x4 t = translate(vec3(px, py, 0.0));
|
||||||
|
|
||||||
|
mat4x4 trans = t * rx * s;
|
||||||
|
|
||||||
|
//mat3x3 normal_trans = transpose(inverse(submatrix(trans, 0, 0)));
|
||||||
|
mat3x3 normal_trans = submatrix(rx, 3, 3);
|
||||||
|
|
||||||
|
vec3 light_pos = normalize(rotate_z(theta) * vec3(1, 1, 1));
|
||||||
|
|
||||||
|
glUniform4fv(uniform_trans, 4, &trans[0][0]);
|
||||||
|
glUniform3fv(uniform_normal_trans, 3, &normal_trans[0][0]);
|
||||||
|
glUniform3fv(uniform_base_color, 1, &base_color[0]);
|
||||||
|
glUniform3fv(uniform_light_pos, 1, &light_pos[0]);
|
||||||
|
|
||||||
|
//glDrawArrays(GL_TRIANGLES, 0, 3);
|
||||||
|
glDrawElements(GL_TRIANGLES, length, GL_UNSIGNED_INT, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,8 +1,24 @@
|
|||||||
#version 120
|
#version 120
|
||||||
|
|
||||||
//varying vec3 color_out;
|
uniform vec3 base_color;
|
||||||
|
uniform vec3 light_pos;
|
||||||
|
|
||||||
|
varying vec3 fp_position;
|
||||||
|
varying vec3 fp_normal;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
gl_FragColor = gl_Color;
|
//vec3 color_normal = fp_normal * 0.5 + 0.5;
|
||||||
|
//vec3 light_pos = vec3(1, 1, 1);
|
||||||
|
|
||||||
|
vec3 light_dir = normalize(light_pos - fp_position);
|
||||||
|
float diffuse = max(dot(fp_normal, light_dir), 0.0);
|
||||||
|
|
||||||
|
vec3 color = (diffuse + 0.5) * base_color;
|
||||||
|
|
||||||
|
gl_FragColor = vec4(color, 1.0);
|
||||||
}
|
}
|
||||||
|
// normal
|
||||||
|
// x (0.0 left 1.0 right)
|
||||||
|
// y (0.0 bot 1.0 top)
|
||||||
|
// z (0.0 far 1.0 near)
|
||||||
|
|||||||
@ -1,10 +1,35 @@
|
|||||||
#version 120
|
#version 120
|
||||||
|
|
||||||
attribute vec3 position;
|
attribute vec3 position;
|
||||||
attribute vec3 color;
|
attribute vec3 normal;
|
||||||
|
|
||||||
|
uniform vec4 trans[4];
|
||||||
|
uniform vec3 normal_trans[3];
|
||||||
|
|
||||||
|
varying vec3 fp_normal;
|
||||||
|
varying vec3 fp_position;
|
||||||
|
|
||||||
|
vec4 transform4(vec4 v)
|
||||||
|
{
|
||||||
|
return vec4(dot(trans[0], v),
|
||||||
|
dot(trans[1], v),
|
||||||
|
dot(trans[2], v),
|
||||||
|
dot(trans[3], v));
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 transform3(vec3 v)
|
||||||
|
{
|
||||||
|
return vec3(dot(normal_trans[0], v),
|
||||||
|
dot(normal_trans[1], v),
|
||||||
|
dot(normal_trans[2], v));
|
||||||
|
}
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
gl_Position = vec4(position, 1);
|
vec4 pos = transform4(vec4(position, 1));
|
||||||
gl_FrontColor = vec4(color, 1);
|
|
||||||
|
fp_normal = normalize(transform3(normal));
|
||||||
|
fp_position = pos.xyz;
|
||||||
|
|
||||||
|
gl_Position = pos;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user