Crates.io | rust-rectangle-dividing |
lib.rs | rust-rectangle-dividing |
version | 0.1.4 |
source | src |
created_at | 2023-11-09 15:49:33.195832 |
updated_at | 2024-07-18 16:56:00.649428 |
description | A rectangle dividing algorithm written in Rust |
homepage | |
repository | https://github.com/kitsuyui/rust-rectangle-dividing/ |
max_upload_size | |
id | 1030241 |
size | 65,726 |
A library of rectangle dividing written in Rust. It can be compiled to WebAssembly. So you can use it in JavaScript.
I want to divide a rectangle into smaller rectangles by given conditions (weights, aspect ratio, etc.).
Mainly, I want to use this for generating a map for my react-playground
This package is published on 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 }
dividing's arguments are
rect
: The rectangle to be dividedweights
: The weights of each rectangleisVertical
: The direction of the first divisionaspectRatio
: The aspect ratio of each rectangleboustrophedon
: The direction of the next division in the same levelMIT