65 std::unique_ptr<spatial_impl>
impl;
spatial_kind
Cấu trúc bên dưới một njin::spatial_index.
Definition njin_spatial.h:14
void spatial_build(spatial_index &index, const spatial_desc &desc, const spatial_item *items, u32 count)
Dựng (lại) index từ count vật.
u32 spatial_separate(const spatial_index &index, std::vector< vec2 > &push, u32 k=6)
Tính độ đẩy để các vật chồng nhau tách ra: va chạm mềm cho đám đông.
u32 spatial_size(const spatial_index &index)
Số vật trong index.
u32 spatial_nearest(const spatial_index &index, const spatial_query &q, spatial_hit *out, u32 k)
Tìm tối đa k vật gần q.at nhất thỏa q, gần nhất trước.
@ spatial_grid
Lưới đều.
Definition njin_spatial.h:17
@ spatial_quadtree
Quadtree: chia nhỏ chỗ đông, bỏ qua chỗ trống.
Definition njin_spatial.h:20
std::uint8_t u8
Số nguyên không dấu 8 bit.
Definition _types.h:20
float f32
Số thực 32 bit.
Definition _types.h:28
std::uint32_t u32
Số nguyên không dấu 32 bit.
Definition _types.h:22
Hình chữ nhật thẳng trục: pos là góc trên trái, size là rộng và cao.
Definition _math.h:13
Cách dựng một njin::spatial_index.
Definition njin_spatial.h:37
rect bounds
Vùng chứa các vật.
Definition njin_spatial.h:41
u32 max_depth
Quadtree: độ sâu tối đa, để nhiều vật trùng chỗ không chia mãi.
Definition njin_spatial.h:47
f32 cell_size
Lưới: cỡ ô, đơn vị thế giới.
Definition njin_spatial.h:45
spatial_kind kind
Lưới hay quadtree.
Definition njin_spatial.h:38
u32 leaf_size
Quadtree: một lá có hơn chừng này vật thì chia bốn.
Definition njin_spatial.h:46
Một vật tìm thấy.
Definition njin_spatial.h:107
u32 item
Tên của vật: số thứ tự trong mảng đã dựng.
Definition njin_spatial.h:108
f32 distance_sq
Bình phương khoảng cách từ at tới tâm của nó.
Definition njin_spatial.h:109
Index không gian cho hàng nghìn hình tròn: tìm k vật gần nhất và đẩy các vật chồng nhau ra,...
Definition njin_spatial.h:58
spatial_index()
Index rỗng; dựng bằng spatial_build().
spatial_index(spatial_index &&) noexcept
Chuyển index, không chép.
std::unique_ptr< spatial_impl > impl
Bên trong, không đụng tới.
Definition njin_spatial.h:65
~spatial_index()
Giải phóng bộ nhớ của index.
Một vật trong index: hình tròn tâm pos.
Definition njin_spatial.h:25
u32 group
Nhóm, 0 là không nhóm.
Definition njin_spatial.h:30
vec2 pos
Tâm, trong thế giới.
Definition njin_spatial.h:26
bool fixed
spatial_separate() không dời vật này; vật khác chồng lên nó thì tự lùi hết phần chồng: người đang ngồ...
Definition njin_spatial.h:33
f32 radius
Bán kính.
Definition njin_spatial.h:27
Một câu hỏi cho spatial_nearest().
Definition njin_spatial.h:89
u32 skip
Tên một vật bỏ qua, thường là chính người hỏi.
Definition njin_spatial.h:98
u32 group
Khác 0: bỏ qua vật cùng nhóm này.
Definition njin_spatial.h:99
vec2 at
Điểm hỏi.
Definition njin_spatial.h:90
bool(*) filter(u32 item, void *user)
Lọc thêm: trả về false để bỏ qua vật item.
Definition njin_spatial.h:102
bool touching
false: vật được tính khi tâm của nó cách at dưới radius.
Definition njin_spatial.h:97
void * user
Truyền nguyên cho filter.
Definition njin_spatial.h:103
f32 radius
Bán kính tìm quanh at.
Definition njin_spatial.h:93
Vector 2 chiều. Dùng cho vị trí, kích thước, độ dời.
Definition _types.h:39