Catmull-Rom và Bezier 2D, 3D: đi đều theo khoảng cách, điểm gần nhất, vật đi dọc đường. Tiếp...
Classes | |
| struct | njin::spline3d |
| Một đường cong 3D: đường ray của camera, bục di chuyển, lối bay, đường tuần tra. Tiếp... | |
| struct | njin::spline2d |
| Như njin::spline3d, trên mặt phẳng: đường đi của quái 2D, quỹ đạo đạn cong. Tiếp... | |
| struct | njin::spline_follower |
| Trạng thái của một vật đi dọc đường với tốc độ đều: camera trên ray, bục di chuyển, quái tuần tra. Tiếp... | |
Enumerations | |
| enum | njin::spline_kind { njin::spline_catmull_rom , njin::spline_bezier } |
| Loại đường cong của một spline. Tiếp... | |
| enum | njin::spline_end { njin::spline_stop , njin::spline_loop , njin::spline_ping_pong } |
| Khi đến cuối đường thì làm gì. Tiếp... | |
Các hàm | |
| void | njin::spline_bake (spline3d &spline, i32 steps=64) |
| Lập bảng độ dài sau khi sửa điểm. | |
| void | njin::spline_bake (spline2d &spline, i32 steps=64) |
| Lập bảng độ dài sau khi sửa điểm. | |
| i32 | njin::spline_segment_count (const spline3d &spline) |
| Số đoạn: t của spline_point() chạy từ 0 đến số này. | |
| i32 | njin::spline_segment_count (const spline2d &spline) |
| Số đoạn: t của spline_point() chạy từ 0 đến số này. | |
| vec3 | njin::spline_point (const spline3d &spline, f32 t) |
| Điểm trên đường ở tham số t: phần nguyên là đoạn, phần lẻ là vị trí trong đoạn. | |
| vec2 | njin::spline_point (const spline2d &spline, f32 t) |
| Điểm trên đường ở tham số t: phần nguyên là đoạn, phần lẻ là vị trí trong đoạn. | |
| vec3 | njin::spline_tangent (const spline3d &spline, f32 t) |
| Hướng của đường ở tham số t, độ dài 1. | |
| vec2 | njin::spline_tangent (const spline2d &spline, f32 t) |
| Hướng của đường ở tham số t, độ dài 1. | |
| f32 | njin::spline_length (const spline3d &spline) |
| Độ dài cả đường. | |
| f32 | njin::spline_length (const spline2d &spline) |
| Độ dài cả đường. | |
| f32 | njin::spline_t_at (const spline3d &spline, f32 distance) |
| Tham số t ở khoảng cách distance tính từ đầu đường. | |
| f32 | njin::spline_t_at (const spline2d &spline, f32 distance) |
| Tham số t ở khoảng cách distance tính từ đầu đường. | |
| vec3 | njin::spline_point_at (const spline3d &spline, f32 distance) |
| Điểm ở khoảng cách distance tính từ đầu đường: đi đều theo khoảng cách. | |
| vec2 | njin::spline_point_at (const spline2d &spline, f32 distance) |
| Điểm ở khoảng cách distance tính từ đầu đường: đi đều theo khoảng cách. | |
| vec3 | njin::spline_tangent_at (const spline3d &spline, f32 distance) |
| Hướng ở khoảng cách distance, độ dài 1. | |
| vec2 | njin::spline_tangent_at (const spline2d &spline, f32 distance) |
| Hướng ở khoảng cách distance, độ dài 1. | |
| f32 | njin::spline_nearest (const spline3d &spline, vec3 p, vec3 *out_point=nullptr) |
| Chỗ gần p nhất trên đường: để bám vào đường ray, biết người chơi đã đi được bao xa trên đường đua. | |
| f32 | njin::spline_nearest (const spline2d &spline, vec2 p, vec2 *out_point=nullptr) |
| Chỗ gần p nhất trên đường: để bám vào đường ray, biết người chơi đã đi được bao xa trên đường đua. | |
| vec3 | njin::spline_follow (const spline3d &spline, spline_follower &follower, f32 dt) |
| Đi tiếp dt giây dọc đường và trả về chỗ mới. | |
| vec2 | njin::spline_follow (const spline2d &spline, spline_follower &follower, f32 dt) |
| Đi tiếp dt giây dọc đường và trả về chỗ mới. | |
| void | njin::spline_draw_debug (context &ctx, const spline3d &spline, rgba color={1.0f, 0.8f, 0.2f, 1.0f}) |
| Vẽ đường và các điểm điều khiển bằng gizmo (njin_gizmo.h) trong frame này. | |
| void | njin::spline_draw_debug (context &ctx, const spline2d &spline, rgba color={1.0f, 0.8f, 0.2f, 1.0f}) |
| Vẽ đường và các điểm điều khiển bằng gizmo (njin_gizmo.h) trong frame này. | |
Catmull-Rom và Bezier 2D, 3D: đi đều theo khoảng cách, điểm gần nhất, vật đi dọc đường.
| enum njin::spline_kind |
Loại đường cong của một spline.
| enum njin::spline_end |
Lập bảng độ dài sau khi sửa điểm.
Thiếu bảng thì các hàm theo khoảng cách tự lập một bảng tạm mỗi lần gọi (đúng nhưng chậm).
| spline | Đường cong. |
| steps | Số mẫu mỗi đoạn, 2..1024: nhiều thì khoảng cách chính xác hơn. 64 là đủ cho tốc độ đều trong 1%. |
Lập bảng độ dài sau khi sửa điểm.
Thiếu bảng thì các hàm theo khoảng cách tự lập một bảng tạm mỗi lần gọi (đúng nhưng chậm).
| spline | Đường cong. |
| steps | Số mẫu mỗi đoạn, 2..1024: nhiều thì khoảng cách chính xác hơn. 64 là đủ cho tốc độ đều trong 1%. |
Số đoạn: t của spline_point() chạy từ 0 đến số này.
| spline | Đường cong. |
Số đoạn: t của spline_point() chạy từ 0 đến số này.
| spline | Đường cong. |
Điểm trên đường ở tham số t: phần nguyên là đoạn, phần lẻ là vị trí trong đoạn.
Với Catmull-Rom, t nguyên là đúng điểm điều khiển thứ t. Tốc độ theo t không đều (đoạn dài đi nhanh hơn): đi theo khoảng cách thì dùng spline_point_at().
| spline | Đường cong. |
| t | 0..spline_segment_count(); ngoài khoảng bị kẹp (đường kín thì quay vòng). |
Điểm trên đường ở tham số t: phần nguyên là đoạn, phần lẻ là vị trí trong đoạn.
Với Catmull-Rom, t nguyên là đúng điểm điều khiển thứ t. Tốc độ theo t không đều (đoạn dài đi nhanh hơn): đi theo khoảng cách thì dùng spline_point_at().
| spline | Đường cong. |
| t | 0..spline_segment_count(); ngoài khoảng bị kẹp (đường kín thì quay vòng). |
Hướng của đường ở tham số t, độ dài 1.
| spline | Đường cong. |
| t | Như spline_point(). |
Hướng của đường ở tham số t, độ dài 1.
| spline | Đường cong. |
| t | Như spline_point(). |
Độ dài cả đường.
| spline | Đường cong. |
Độ dài cả đường.
| spline | Đường cong. |
Tham số t ở khoảng cách distance tính từ đầu đường.
| spline | Đường cong. |
| distance | 0..spline_length(); ngoài khoảng bị kẹp (đường kín thì quay vòng). |
Tham số t ở khoảng cách distance tính từ đầu đường.
| spline | Đường cong. |
| distance | 0..spline_length(); ngoài khoảng bị kẹp (đường kín thì quay vòng). |
Điểm ở khoảng cách distance tính từ đầu đường: đi đều theo khoảng cách.
| spline | Đường cong. |
| distance | Như spline_t_at(). |
Điểm ở khoảng cách distance tính từ đầu đường: đi đều theo khoảng cách.
| spline | Đường cong. |
| distance | Như spline_t_at(). |
Hướng ở khoảng cách distance, độ dài 1.
| spline | Đường cong. |
| distance | Như spline_t_at(). |
Hướng ở khoảng cách distance, độ dài 1.
| spline | Đường cong. |
| distance | Như spline_t_at(). |
Chỗ gần p nhất trên đường: để bám vào đường ray, biết người chơi đã đi được bao xa trên đường đua.
| spline | Đường cong. |
| p | Điểm. |
| out_point | Nhận điểm gần nhất, hoặc nullptr. |
Chỗ gần p nhất trên đường: để bám vào đường ray, biết người chơi đã đi được bao xa trên đường đua.
| spline | Đường cong. |
| p | Điểm. |
| out_point | Nhận điểm gần nhất, hoặc nullptr. |
| vec3 njin::spline_follow | ( | const spline3d & | spline, |
| spline_follower & | follower, | ||
| f32 | dt ) |
Đi tiếp dt giây dọc đường và trả về chỗ mới.
Hướng ở đó là spline_tangent_at(spline, follower.distance) (nhân -1 nếu đang đi ngược).
| spline | Đường cong. |
| follower | Trạng thái, được cập nhật. |
| dt | Thời gian, giây (thường là delta()). |
| vec2 njin::spline_follow | ( | const spline2d & | spline, |
| spline_follower & | follower, | ||
| f32 | dt ) |
Đi tiếp dt giây dọc đường và trả về chỗ mới.
Hướng ở đó là spline_tangent_at(spline, follower.distance) (nhân -1 nếu đang đi ngược).
| spline | Đường cong. |
| follower | Trạng thái, được cập nhật. |
| dt | Thời gian, giây (thường là delta()). |
| void njin::spline_draw_debug | ( | context & | ctx, |
| const spline3d & | spline, | ||
| rgba | color = {1.0f, 0.8f, 0.2f, 1.0f} ) |
Vẽ đường và các điểm điều khiển bằng gizmo (njin_gizmo.h) trong frame này.
| ctx | Context của engine. |
| spline | Đường cong. |
| color | Màu. |
| void njin::spline_draw_debug | ( | context & | ctx, |
| const spline2d & | spline, | ||
| rgba | color = {1.0f, 0.8f, 0.2f, 1.0f} ) |
Vẽ đường và các điểm điều khiển bằng gizmo (njin_gizmo.h) trong frame này.
| ctx | Context của engine. |
| spline | Đường cong. |
| color | Màu. |