fixing conflict
This commit is contained in:
commit
0a37ba49c3
16
Math.cpp
16
Math.cpp
@ -513,7 +513,7 @@ namespace ZL {
|
|||||||
mat.m[8] * mat.m[1] * mat.m[6] -
|
mat.m[8] * mat.m[1] * mat.m[6] -
|
||||||
mat.m[8] * mat.m[2] * mat.m[5];
|
mat.m[8] * mat.m[2] * mat.m[5];
|
||||||
|
|
||||||
// Вычисляем детерминант
|
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
det = mat.m[0] * inv.m[0] + mat.m[1] * inv.m[4] + mat.m[2] * inv.m[8] + mat.m[3] * inv.m[12];
|
det = mat.m[0] * inv.m[0] + mat.m[1] * inv.m[4] + mat.m[2] * inv.m[8] + mat.m[3] * inv.m[12];
|
||||||
|
|
||||||
if (std::fabs(det) < 0.01f)
|
if (std::fabs(det) < 0.01f)
|
||||||
@ -521,7 +521,7 @@ namespace ZL {
|
|||||||
throw std::runtime_error("Error: matrix cannot be inversed!");
|
throw std::runtime_error("Error: matrix cannot be inversed!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Делим все элементы на детерминант
|
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
det = 1.0f / det;
|
det = 1.0f / det;
|
||||||
for (int i = 0; i < 16; i++)
|
for (int i = 0; i < 16; i++)
|
||||||
{
|
{
|
||||||
@ -683,10 +683,10 @@ namespace ZL {
|
|||||||
|
|
||||||
Vector4f slerp(const Vector4f& q1, const Vector4f& q2, double t)
|
Vector4f slerp(const Vector4f& q1, const Vector4f& q2, double t)
|
||||||
{
|
{
|
||||||
// Вычисляем косинус угла между кватернионами
|
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
double cosTheta = q1.dot(q2);
|
double cosTheta = q1.dot(q2);
|
||||||
|
|
||||||
// Если cosTheta < 0, меняем знак второго кватерниона, чтобы выбрать кратчайший путь
|
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> cosTheta < 0, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||||
Vector4f q2Adjusted = q2;
|
Vector4f q2Adjusted = q2;
|
||||||
if (cosTheta < 0.0) {
|
if (cosTheta < 0.0) {
|
||||||
//q2Adjusted = { -q2.w, -q2.x, -q2.y, -q2.z };
|
//q2Adjusted = { -q2.w, -q2.x, -q2.y, -q2.z };
|
||||||
@ -697,7 +697,7 @@ namespace ZL {
|
|||||||
cosTheta = -cosTheta;
|
cosTheta = -cosTheta;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Если кватернионы близки, используем линейную интерполяцию
|
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
const double epsilon = 1e-6;
|
const double epsilon = 1e-6;
|
||||||
if (cosTheta > 1.0 - epsilon) {
|
if (cosTheta > 1.0 - epsilon) {
|
||||||
|
|
||||||
@ -717,15 +717,15 @@ namespace ZL {
|
|||||||
return result.normalized();
|
return result.normalized();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Вычисляем угол theta
|
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> theta
|
||||||
double theta = std::acos(cosTheta);
|
double theta = std::acos(cosTheta);
|
||||||
double sinTheta = std::sin(theta);
|
double sinTheta = std::sin(theta);
|
||||||
|
|
||||||
// Вычисляем коэффициенты для интерполяции
|
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
double coeff1 = std::sin((1.0 - t) * theta) / sinTheta;
|
double coeff1 = std::sin((1.0 - t) * theta) / sinTheta;
|
||||||
double coeff2 = std::sin(t * theta) / sinTheta;
|
double coeff2 = std::sin(t * theta) / sinTheta;
|
||||||
|
|
||||||
// Интерполируем
|
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
/*
|
/*
|
||||||
Quaternion result = {
|
Quaternion result = {
|
||||||
coeff1 * q1.w + coeff2 * q2Adjusted.w,
|
coeff1 * q1.w + coeff2 * q2Adjusted.w,
|
||||||
|
|||||||
@ -10,6 +10,12 @@
|
|||||||
#include "emscripten.h"
|
#include "emscripten.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
#include <GL/gl.h>
|
||||||
|
#include <GL/glu.h>
|
||||||
|
#include <GLES3/gl3.h>
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <exception>
|
#include <exception>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
#include "Physics.h"
|
#include "Physics.h"
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
namespace ZL
|
namespace ZL
|
||||||
{
|
{
|
||||||
|
|||||||
@ -34,3 +34,10 @@ https://github.com/Bly7/OBJ-Loader/blob/master/Source/OBJ_Loader.h
|
|||||||
|
|
||||||
https://github.com/gametutorials/tutorials/blob/master/OpenGL/MD3%20Animation/Main.cpp
|
https://github.com/gametutorials/tutorials/blob/master/OpenGL/MD3%20Animation/Main.cpp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
linux:
|
||||||
|
```
|
||||||
|
g++ Game.cpp main.cpp Math.cpp OpenGlExtensions.cpp Physics.cpp Renderer.cpp ShaderManager.cpp TextureManager.cpp Utils.cpp -o sdl_app -O2 -std=c++14 $(pkg-config --cflags --libs sdl2 gl)
|
||||||
|
|
||||||
|
```
|
||||||
@ -29,7 +29,8 @@ namespace ZL {
|
|||||||
VAOHolder::~VAOHolder()
|
VAOHolder::~VAOHolder()
|
||||||
{
|
{
|
||||||
#ifndef EMSCRIPTEN
|
#ifndef EMSCRIPTEN
|
||||||
glDeleteVertexArray(1, &vao);
|
glDeleteVertexArrays(1, &vao);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
#include "Utils.h"
|
#include "Utils.h"
|
||||||
|
#include <cstring>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|||||||
3
Utils.h
3
Utils.h
@ -5,7 +5,8 @@
|
|||||||
#include <exception>
|
#include <exception>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <stack>
|
#include <stack>
|
||||||
|
#include <memory>
|
||||||
|
#include <unordered_map>
|
||||||
namespace ZL
|
namespace ZL
|
||||||
{
|
{
|
||||||
std::string readTextFile(const std::string& filename);
|
std::string readTextFile(const std::string& filename);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user