Các phần này chỉ gồm header, không phụ thuộc engine: dùng được cả ngoài system.
njin::vec2 hỗ trợ đầy đủ phép toán:
| Hàm | Trả về |
|---|---|
| njin::dot(), njin::cross() | Tích vô hướng, tích có hướng 2D |
| njin::length(), njin::length_sq(), njin::distance() | Độ dài, bình phương độ dài, khoảng cách |
| njin::normalize() | Vector độ dài 1 ({0,0} giữ nguyên) |
| njin::rotate(), njin::from_angle(), njin::angle_of() | Xoay, vector từ góc, góc của vector |
| njin::lerp(), njin::clamp(), njin::move_toward() | Nội suy, giới hạn, tiến về đích |
Góc tính bằng độ, theo chiều kim đồng hồ trên màn hình (vì trục y hướng xuống): 0 độ là sang phải, 90 độ là xuống dưới. Cùng quy ước với njin::transform::rot.
njin::rect (góc trên trái + kích thước) và njin::circle là hai hình cơ bản. njin::rect_from_center() và njin::rect_center() đổi qua lại với tâm.
Kiểm tra chồng nhau (đúng/sai): njin::point_in_rect(), njin::point_in_circle(), njin::rects_overlap(), njin::circles_overlap(), njin::circle_rect_overlap().
Va chạm có đẩy ra trả về njin::contact: njin::collide_rects(), njin::collide_circles(), njin::collide_circle_rect(). Khi hit đúng, dời vật thứ nhất một đoạn normal * depth thì hai vật vừa chạm mép:
njin::reflect() phản xạ vận tốc qua pháp tuyến: bóng nảy khỏi tường.
njin::random() trả về bộ sinh dùng chung của engine, gieo hạt giống từ thời gian lúc mở game:
njin::rng lặp lại được: cùng hạt giống thì cùng dãy số. Tự tạo một bộ riêng khi cần một dãy độc lập, ví dụ sinh bản đồ từ một mã số: