fixing conflict

This commit is contained in:
Альберт Гадиев 2025-03-01 11:16:52 +06:00
commit 0a37ba49c3
7 changed files with 27 additions and 11 deletions

View File

@ -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,

View File

@ -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>

View File

@ -1,4 +1,5 @@
#include "Physics.h" #include "Physics.h"
#include <cmath>
namespace ZL namespace ZL
{ {

View File

@ -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)
```

View File

@ -29,7 +29,8 @@ namespace ZL {
VAOHolder::~VAOHolder() VAOHolder::~VAOHolder()
{ {
#ifndef EMSCRIPTEN #ifndef EMSCRIPTEN
glDeleteVertexArray(1, &vao); glDeleteVertexArrays(1, &vao);
#endif #endif
} }

View File

@ -1,5 +1,5 @@
#include "Utils.h" #include "Utils.h"
#include <cstring>
#include <iterator> #include <iterator>
#include <vector> #include <vector>
#include <iostream> #include <iostream>

View File

@ -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);