#2d-grid #line #sight #cells #map #finding #player

line_of_sight

用于在 2D 网格上寻找视距的 crate

1 个不稳定版本

0.2.1 2022 年 6 月 11 日
0.2.0 2022 年 6 月 11 日
0.1.5 2022 年 6 月 11 日
0.0.0 2024 年 2 月 18 日

5#2d-grid 中排名

每月 45 次下载

MIT/Apache

11KB
199

line_of_sight

用于在 2D 网格上寻找视距的 crate。

示例

use line_of_sight::ShadowMap;
use line_of_sight::BLOCK;
use line_of_sight::PLAYER;

// create a 16x17 line of sight map with empty cells by default
let mut map = ShadowMap::new_with_empty_cells(16, 17);

// add some obstacles
let obstacles = vec![
    (3, 3),
    (4, 3),
    (5, 3),
    (8, 7),
    (8, 5),
    (6, 9),
    (6, 10),
    (6, 11),
    (7, 11),
    (7, 10),
    (7, 9),
];

for obstacle in obstacles {
    map.set(obstacle.0, obstacle.1, BLOCK);
}

// set the center to be (4, 5)
let center = (4.0, 5.0);

// fully scan the map in the 20 unit radius (in 4 directions. Use `scan_arc` to only scan in 1 direction)
map.full_scan(center, 20.0);

// set (4, 5) to be the "player cell" for visual purposes
map.set(4, 5, PLAYER);
map.show();

结果

[2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2]
[2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2]
[2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2]
[2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0]
[2, 2, 2, 2, 3, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0]
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0]
[2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 2, 2, 2, 2, 2, 2]
[2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2]
[2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 0, 0, 0, 0, 2]
[2, 2, 2, 2, 2, 2, 1, 1, 0, 2, 2, 2, 2, 0, 0, 0]
[2, 2, 2, 2, 2, 2, 1, 1, 0, 0, 2, 2, 2, 2, 0, 0]
[2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2]
[2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2]
[2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2]
[2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2]
[2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2]

说明

  • 0 -- 不可达的单元格
  • 1 -- 障碍物
  • 2 -- 可达的单元格
  • 3 -- 中心(可选;仅用于视觉目的)

图形结果

Line of sight

说明

  • 白色单元格 -- 可达的单元格
  • 灰色单元格 -- 不可达的单元格
  • 蓝色单元格 -- 障碍物
  • 橙色单元格 -- 中心

无运行时依赖