瀏覽代碼

Merge pull request #4845 from bamless/log-zoom

[examples] use logarithmic zoom scaling in 2d camera examples
pull/4850/head
Ray 1 周之前
committed by GitHub
父節點
當前提交
add4da8fb3
沒有發現已知的金鑰在資料庫的簽署中 GPG 金鑰 ID: B5690EEEBB952194
共有 2 個檔案被更改,包括 10 行新增8 行删除
  1. +3
    -1
      examples/core/core_2d_camera.c
  2. +7
    -7
      examples/core/core_2d_camera_mouse_zoom.c

+ 3
- 1
examples/core/core_2d_camera.c 查看文件

@ -14,6 +14,7 @@
********************************************************************************************/
#include "raylib.h"
#include <math.h>
#define MAX_BUILDINGS 100
@ -81,7 +82,8 @@ int main(void)
else if (camera.rotation < -40) camera.rotation = -40;
// Camera zoom controls
camera.zoom += ((float)GetMouseWheelMove()*0.05f);
// Uses log scaling to provide consistent zoom speed
camera.zoom = expf(logf(camera.zoom) + ((float)GetMouseWheelMove()*0.1f));
if (camera.zoom > 3.0f) camera.zoom = 3.0f;
else if (camera.zoom < 0.1f) camera.zoom = 0.1f;

+ 7
- 7
examples/core/core_2d_camera_mouse_zoom.c 查看文件

@ -73,9 +73,9 @@ int main ()
camera.target = mouseWorldPos;
// Zoom increment
kt">float scaleFactor = 1.0f + (0.25f*fabsf(wheel));
">if (wheel < 0) scaleFactor = 1.0f/scaleFactor;
camera.zoom = Clamp(camera.zoomo">*scaleFactor, 0.125f, 64.0f);
o">// Uses log scaling to provide consistent zoom speed
t">float scale = 0.2f*wheel;
camera.zoom = Clamp(expf(logf(camera.zoomp">)+scale), 0.125f, 64.0f);
}
}
else
@ -96,10 +96,10 @@ int main ()
if (IsMouseButtonDown(MOUSE_BUTTON_RIGHT))
{
// Zoom increment
// Uses log scaling to provide consistent zoom speed
float deltaX = GetMouseDelta().x;
float scaleFactor = 1.0f + (0.01f*fabsf(deltaX));
if (deltaX < 0) scaleFactor = 1.0f/scaleFactor;
camera.zoom = Clamp(camera.zoom*scaleFactor, 0.125f, 64.0f);
float scale = 0.005f*deltaX;
camera.zoom = Clamp(expf(logf(camera.zoom)+scale), 0.125f, 64.0f);
}
}
//----------------------------------------------------------------------------------
@ -143,4 +143,4 @@ int main ()
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}
}

Loading…
取消
儲存