#rectangle #weight #algorithm #aspect #ratio #divide #dividing

rust-rectangle-dividing

用Rust编写的矩形分割算法

5个版本

0.1.4 2024年7月18日
0.1.3 2023年11月10日
0.1.2 2023年11月9日
0.1.1 2023年11月9日
0.1.0 2023年11月9日

149WebAssembly

Download history 64/week @ 2024-07-12 42/week @ 2024-07-19 31/week @ 2024-07-26 4/week @ 2024-08-02

141 每月下载量

MIT 许可证

57KB
1.5K SLoC

rust-rectangle-dividing

一个用Rust编写的矩形分割库。它可以编译成WebAssembly。因此您可以在JavaScript中使用它。

动机

我想根据给定的条件(权重、纵横比等)将矩形分割成更小的矩形。

主要,我想用它为我的react-playground生成地图

在JavaScript中的使用

安装

此包已发布在NPM上 @kitsuyui/rectangle-dividing

$ npm install @kitsuyui/rectangle-dividing
# or
$ yarn add @kitsuyui/rectangle-dividing
# or
$ pnpm add @kitsuyui/rectangle-dividing

示例

import { dividing } from "@kitsuyui/rectangle-dividing";

const rect = { x: 0, y: 0, w: 900, h: 800 };
const weights: Float32Array = Float32Array.from([4, 4, 1, 1, 1, 1]);
const aspectRatio = 1.5;
const verticalFirst = true;
const boustrophedron = true;
const divided = dividing(rect, weights, aspectRatio, verticalFirst, boustrophedron);
for (const d of divided) {
  console.log(d);
}

结果

{ x: 0, y: 0, w: 600, h: 400 }
{ x: 0, y: 400, w: 600, h: 400 }
{ x: 600, y: 600, w: 300, h: 200 }
{ x: 600, y: 400, w: 300, h: 200 }
{ x: 600, y: 200, w: 300, h: 200 }
{ x: 600, y: 0, w: 300, h: 200 }

分割的参数是

  • rect:要分割的矩形
  • weights:每个矩形的权重
  • isVertical:第一次分割的方向
  • aspectRatio:每个矩形的纵横比
  • boustrophedon:同一级别的下一次分割方向

许可证

MIT

依赖关系

~1.2–2MB
~39K SLoC