njin
Engine 2D gọn nhẹ để tự tay làm game theo ý mình. Vibe coding cũng ổn luôn
Loading...
Searching...
No Matches
Toán học

Phép toán vec2, hình chữ nhật, hình tròn, nội suy, màu có sẵn. Tiếp...

Namespaces

namespace  njin::colors
 Các màu hay dùng.

Classes

struct  njin::rect
 Hình chữ nhật thẳng trục: pos là góc trên trái, size là rộng và cao. Tiếp...
struct  njin::circle
 Hình tròn. Tiếp...

Các hàm

constexpr f32 njin::dot (vec2 a, vec2 b)
 Tích vô hướng.
constexpr f32 njin::cross (vec2 a, vec2 b)
 Tích có hướng 2D (thành phần z của tích có hướng 3D).
constexpr f32 njin::length_sq (vec2 v)
 Bình phương độ dài.
f32 njin::length (vec2 v)
 Độ dài.
f32 njin::distance (vec2 a, vec2 b)
 Khoảng cách giữa hai điểm.
vec2 njin::normalize (vec2 v)
 Vector cùng hướng, độ dài 1.
vec2 njin::rotate (vec2 v, f32 degrees)
 Xoay vector theo chiều kim đồng hồ trên màn hình (trục y hướng xuống).
vec2 njin::from_angle (f32 degrees)
 Vector độ dài 1 theo một góc, 0 độ là hướng sang phải, tăng theo chiều kim đồng hồ trên màn hình.
f32 njin::angle_of (vec2 v)
 Góc của vector, cùng quy ước với from_angle().
constexpr f32 njin::dot (vec3 a, vec3 b)
 Tích vô hướng.
constexpr vec3 njin::cross (vec3 a, vec3 b)
 Tích có hướng 3D.
constexpr f32 njin::length_sq (vec3 v)
 Bình phương độ dài.
f32 njin::length (vec3 v)
 Độ dài.
f32 njin::distance (vec3 a, vec3 b)
 Khoảng cách giữa hai điểm.
vec3 njin::normalize (vec3 v)
 Vector cùng hướng, độ dài 1.
constexpr vec3 njin::lerp (vec3 a, vec3 b, f32 t)
 Nội suy tuyến tính giữa hai vector.
constexpr f32 njin::clamp (f32 v, f32 lo, f32 hi)
 Giới hạn v trong khoảng [lo, hi].
constexpr vec2 njin::clamp (vec2 v, vec2 lo, vec2 hi)
 Giới hạn từng thành phần của v trong khoảng [lo, hi].
constexpr f32 njin::lerp (f32 a, f32 b, f32 t)
 Nội suy tuyến tính: t = 0 cho a, t = 1 cho b.
constexpr vec2 njin::lerp (vec2 a, vec2 b, f32 t)
 Nội suy tuyến tính giữa hai vector.
constexpr rgba njin::lerp (rgba a, rgba b, f32 t)
 Nội suy tuyến tính giữa hai màu, theo từng kênh.
constexpr f32 njin::move_toward (f32 from, f32 to, f32 max_step)
 Di chuyển from về phía to một đoạn tối đa max_step, không vượt quá.
vec2 njin::move_toward (vec2 from, vec2 to, f32 max_step)
 Di chuyển điểm from về phía to một đoạn tối đa max_step, không vượt quá.
constexpr vec2 njin::rect_center (rect r)
 Tâm của hình chữ nhật.
constexpr rect njin::rect_from_center (vec2 center, vec2 size)
 Tạo hình chữ nhật từ tâm và kích thước.

Các biến

constexpr f32 njin::pi = 3.14159265358979f
 Số pi.

Mô tả chi tiết

Phép toán vec2, hình chữ nhật, hình tròn, nội suy, màu có sẵn.

Thông tin về hàm

◆ dot() [1/2]

f32 njin::dot ( vec2 a,
vec2 b )
constexpr

Tích vô hướng.

Các tham số
aGiá trị thứ nhất.
bGiá trị thứ hai.
Giá trị trả về
a.x * b.x + a.y * b.y.

◆ cross() [1/2]

f32 njin::cross ( vec2 a,
vec2 b )
constexpr

Tích có hướng 2D (thành phần z của tích có hướng 3D).

Các tham số
aGiá trị thứ nhất.
bGiá trị thứ hai.
Giá trị trả về
Dương nếu b nằm theo chiều kim đồng hồ so với a trên màn hình.

◆ length_sq() [1/2]

f32 njin::length_sq ( vec2 v)
constexpr

Bình phương độ dài.

Nhanh hơn length() khi chỉ cần so sánh.

Các tham số
vVector.
Giá trị trả về
Bình phương độ dài của v.

◆ length() [1/2]

f32 njin::length ( vec2 v)
inline

Độ dài.

Các tham số
vVector.
Giá trị trả về
Độ dài của v.

◆ distance() [1/2]

f32 njin::distance ( vec2 a,
vec2 b )
inline

Khoảng cách giữa hai điểm.

Các tham số
aGiá trị thứ nhất.
bGiá trị thứ hai.
Giá trị trả về
Khoảng cách từ a đến b.

◆ normalize() [1/2]

vec2 njin::normalize ( vec2 v)
inline

Vector cùng hướng, độ dài 1.

Các tham số
vVector.
Giá trị trả về
v đã chuẩn hóa, hoặc {0, 0} nếu v có độ dài 0.

◆ rotate()

vec2 njin::rotate ( vec2 v,
f32 degrees )
inline

Xoay vector theo chiều kim đồng hồ trên màn hình (trục y hướng xuống).

Các tham số
vVector cần xoay.
degreesGóc xoay, tính bằng độ.
Giá trị trả về
Vector đã xoay.

◆ from_angle()

vec2 njin::from_angle ( f32 degrees)
inline

Vector độ dài 1 theo một góc, 0 độ là hướng sang phải, tăng theo chiều kim đồng hồ trên màn hình.

Các tham số
degreesGóc, tính bằng độ.
Giá trị trả về
Vector đơn vị.

◆ angle_of()

f32 njin::angle_of ( vec2 v)
inline

Góc của vector, cùng quy ước với from_angle().

Các tham số
vVector.
Giá trị trả về
Góc tính bằng độ, trong khoảng -180 đến 180.

◆ dot() [2/2]

f32 njin::dot ( vec3 a,
vec3 b )
constexpr

Tích vô hướng.

Các tham số
aGiá trị thứ nhất.
bGiá trị thứ hai.
Giá trị trả về
a.x * b.x + a.y * b.y + a.z * b.z.

◆ cross() [2/2]

vec3 njin::cross ( vec3 a,
vec3 b )
constexpr

Tích có hướng 3D.

Các tham số
aGiá trị thứ nhất.
bGiá trị thứ hai.
Giá trị trả về
Vector vuông góc với cả a và b (quy tắc bàn tay phải).

◆ length_sq() [2/2]

f32 njin::length_sq ( vec3 v)
constexpr

Bình phương độ dài.

Nhanh hơn length() khi chỉ cần so sánh.

Các tham số
vVector.
Giá trị trả về
Bình phương độ dài của v.

◆ length() [2/2]

f32 njin::length ( vec3 v)
inline

Độ dài.

Các tham số
vVector.
Giá trị trả về
Độ dài của v.

◆ distance() [2/2]

f32 njin::distance ( vec3 a,
vec3 b )
inline

Khoảng cách giữa hai điểm.

Các tham số
aĐiểm thứ nhất.
bĐiểm thứ hai.
Giá trị trả về
Khoảng cách từ a đến b.

◆ normalize() [2/2]

vec3 njin::normalize ( vec3 v)
inline

Vector cùng hướng, độ dài 1.

Các tham số
vVector.
Giá trị trả về
v chia cho độ dài của nó, hoặc {0, 0, 0} nếu v bằng 0.

◆ lerp() [1/4]

vec3 njin::lerp ( vec3 a,
vec3 b,
f32 t )
constexpr

Nội suy tuyến tính giữa hai vector.

Các tham số
aGiá trị khi t = 0.
bGiá trị khi t = 1.
tTỉ lệ, thường trong 0..1.
Giá trị trả về
a + (b - a) * t.

◆ clamp() [1/2]

f32 njin::clamp ( f32 v,
f32 lo,
f32 hi )
constexpr

Giới hạn v trong khoảng [lo, hi].

Các tham số
vVector.
loCận dưới.
hiCận trên.
Giá trị trả về
lo nếu v < lo, hi nếu v > hi, còn lại là v.

◆ clamp() [2/2]

vec2 njin::clamp ( vec2 v,
vec2 lo,
vec2 hi )
constexpr

Giới hạn từng thành phần của v trong khoảng [lo, hi].

Các tham số
vVector.
loCận dưới.
hiCận trên.
Giá trị trả về
v đã giới hạn.

◆ lerp() [2/4]

f32 njin::lerp ( f32 a,
f32 b,
f32 t )
constexpr

Nội suy tuyến tính: t = 0 cho a, t = 1 cho b.

Các tham số
aGiá trị thứ nhất.
bGiá trị thứ hai.
tTiến độ, từ 0 đến 1.
Giá trị trả về
a + (b - a) * t.

◆ lerp() [3/4]

vec2 njin::lerp ( vec2 a,
vec2 b,
f32 t )
constexpr

Nội suy tuyến tính giữa hai vector.

Các tham số
aGiá trị thứ nhất.
bGiá trị thứ hai.
tTiến độ, từ 0 đến 1.
Giá trị trả về
a + (b - a) * t.

◆ lerp() [4/4]

rgba njin::lerp ( rgba a,
rgba b,
f32 t )
constexpr

Nội suy tuyến tính giữa hai màu, theo từng kênh.

Các tham số
aGiá trị thứ nhất.
bGiá trị thứ hai.
tTiến độ, từ 0 đến 1.
Giá trị trả về
Màu nằm giữa a và b.

◆ move_toward() [1/2]

f32 njin::move_toward ( f32 from,
f32 to,
f32 max_step )
constexpr

Di chuyển from về phía to một đoạn tối đa max_step, không vượt quá.

Các tham số
fromGiá trị hiện tại.
toGiá trị đích.
max_stepBước tối đa, không âm.
Giá trị trả về
Giá trị mới.

◆ move_toward() [2/2]

vec2 njin::move_toward ( vec2 from,
vec2 to,
f32 max_step )
inline

Di chuyển điểm from về phía to một đoạn tối đa max_step, không vượt quá.

Các tham số
fromGiá trị hiện tại.
toGiá trị đích.
max_stepBước tối đa, không âm.
Giá trị trả về
Điểm mới.

◆ rect_center()

vec2 njin::rect_center ( rect r)
constexpr

Tâm của hình chữ nhật.

Các tham số
rHình chữ nhật.
Giá trị trả về
Điểm giữa của r.

◆ rect_from_center()

rect njin::rect_from_center ( vec2 center,
vec2 size )
constexpr

Tạo hình chữ nhật từ tâm và kích thước.

Các tham số
centerTâm.
sizeKích thước.
Giá trị trả về
Hình chữ nhật có tâm center.