浏览代码

REMOVED: example: core_quat_conversion

This example requires a complete remake to be more clear. Also current quaternion maths could have issues.
Ray 3 年之前
父节点
当前提交
bf07d17cec
共有 2 个文件被更改,包括 0 次插入135 次删除
  1. 0 135
      examples/core/core_quat_conversion.c
  2. 二进制
      examples/core/core_quat_conversion.png

+ 0 - 135
examples/core/core_quat_conversion.c

@@ -1,135 +0,0 @@
-/*******************************************************************************************
-*
-*   raylib [core] example - quat conversions
-*
-*   Generally you should really stick to eulers OR quats...
-*   This tests that various conversions are equivalent.
-*
-*   This example has been created using raylib 3.5 (www.raylib.com)
-*   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
-*
-*   Example contributed by Chris Camacho (@chriscamacho) and reviewed by Ramon Santamaria (@raysan5)
-*
-*   Copyright (c) 2020-2021 Chris Camacho (@chriscamacho) and Ramon Santamaria (@raysan5)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-
-#include "raymath.h"
-
-//------------------------------------------------------------------------------------
-// Program main entry point
-//------------------------------------------------------------------------------------
-int main(void)
-{
-    // Initialization
-    //--------------------------------------------------------------------------------------
-    const int screenWidth = 800;
-    const int screenHeight = 450;
-
-    InitWindow(screenWidth, screenHeight, "raylib [core] example - quat conversions");
-
-    Camera3D camera = { 0 };
-    camera.position = (Vector3){ 0.0f, 10.0f, 10.0f };  // Camera position
-    camera.target = (Vector3){ 0.0f, 0.0f, 0.0f };      // Camera looking at point
-    camera.up = (Vector3){ 0.0f, 1.0f, 0.0f };          // Camera up vector (rotation towards target)
-    camera.fovy = 45.0f;                                // Camera field-of-view Y
-    camera.projection = CAMERA_PERSPECTIVE;             // Camera mode type
-
-    // Load a cylinder model for testing
-    Model model = LoadModelFromMesh(GenMeshCylinder(0.2f, 1.0f, 32));
-
-    // Generic quaternion for operations
-    Quaternion q1 = { 0 };
-
-    // Transform matrices required to draw 4 cylinders
-    Matrix m1 = { 0 };
-    Matrix m2 = { 0 };
-    Matrix m3 = { 0 };
-    Matrix m4 = { 0 };
-
-    // Generic vectors for rotations
-    Vector3 v1 = { 0 };
-    Vector3 v2 = { 0 };
-
-    SetTargetFPS(60);               // Set our game to run at 60 frames-per-second
-    //--------------------------------------------------------------------------------------
-
-    // Main game loop
-    while (!WindowShouldClose())    // Detect window close button or ESC key
-    {
-        // Update
-        //--------------------------------------------------------------------------------------
-        if (v2.x < 0) v2.x += PI*2;
-        if (v2.y < 0) v2.y += PI*2;
-        if (v2.z < 0) v2.z += PI*2;
-
-        if (!IsKeyDown(KEY_SPACE))
-        {
-            v1.x += 0.01f;
-            v1.y += 0.03f;
-            v1.z += 0.05f;
-        }
-
-        if (v1.x > PI*2) v1.x -= PI*2;
-        if (v1.y > PI*2) v1.y -= PI*2;
-        if (v1.z > PI*2) v1.z -= PI*2;
-
-        q1 = QuaternionFromEuler(v1.x, v1.y, v1.z);
-        m1 = MatrixRotateZYX(v1);
-        m2 = QuaternionToMatrix(q1);
-
-        q1 = QuaternionFromMatrix(m1);
-        m3 = QuaternionToMatrix(q1);
-
-        v2 = QuaternionToEuler(q1);     // Angles returned in radians
-
-        m4 = MatrixRotateZYX(v2);
-        //--------------------------------------------------------------------------------------
-
-        // Draw
-        //----------------------------------------------------------------------------------
-        BeginDrawing();
-
-            ClearBackground(RAYWHITE);
-
-            BeginMode3D(camera);
-
-                model.transform = m1;
-                DrawModel(model, (Vector3){ -1, 0, 0 }, 1.0f, RED);
-
-                model.transform = m2;
-                DrawModel(model, (Vector3){ 1, 0, 0 }, 1.0f, RED);
-
-                model.transform = m3;
-                DrawModel(model, (Vector3){ 0, 0, 0 }, 1.0f, RED);
-
-                model.transform = m4;
-                DrawModel(model, (Vector3){ 0, 0, -1 }, 1.0f, RED);
-
-                DrawGrid(10, 1.0f);
-
-            EndMode3D();
-
-            DrawText(TextFormat("%2.3f", v1.x), 20, 20, 20, (v1.x == v2.x)? GREEN: BLACK);
-            DrawText(TextFormat("%2.3f", v1.y), 20, 40, 20, (v1.y == v2.y)? GREEN: BLACK);
-            DrawText(TextFormat("%2.3f", v1.z), 20, 60, 20, (v1.z == v2.z)? GREEN: BLACK);
-
-            DrawText(TextFormat("%2.3f", v2.x), 200, 20, 20, (v1.x == v2.x)? GREEN: BLACK);
-            DrawText(TextFormat("%2.3f", v2.y), 200, 40, 20, (v1.y == v2.y)? GREEN: BLACK);
-            DrawText(TextFormat("%2.3f", v2.z), 200, 60, 20, (v1.z == v2.z)? GREEN: BLACK);
-
-        EndDrawing();
-        //----------------------------------------------------------------------------------
-    }
-
-    // De-Initialization
-    //--------------------------------------------------------------------------------------
-    UnloadModel(model);   // Unload model data (mesh and materials)
-
-    CloseWindow();        // Close window and OpenGL context
-    //--------------------------------------------------------------------------------------
-
-    return 0;
-}

二进制
examples/core/core_quat_conversion.png