30 lines
956 B
TypeScript
30 lines
956 B
TypeScript
import { Vector2 } from "three";
|
|
|
|
export function computeArea(data: any, type: "zone" | "rooms" | "aisle"): any {
|
|
if (type === "zone") {
|
|
const points3D = data.map((p: any) => new Vector2(p[0], p[2]));
|
|
let area = 0;
|
|
for (let i = 0; i < points3D.length - 1; i++) {
|
|
const current = points3D[i];
|
|
const next = points3D[i + 1];
|
|
area += current.x * next.y - next.x * current.y;
|
|
}
|
|
|
|
return Math.abs(area) / 2;
|
|
}
|
|
|
|
if (type === "rooms") {
|
|
const points2D = data.coordinates.map(
|
|
(coordinate: any) =>
|
|
new Vector2(coordinate.position.x, coordinate.position.z)
|
|
);
|
|
let area = 0;
|
|
for (let i = 0; i < points2D.length - 1; i++) {
|
|
const current = points2D[i];
|
|
const next = points2D[i + 1];
|
|
area += current.x * next.y - next.x * current.y;
|
|
}
|
|
return Math.abs(area) / 2;
|
|
}
|
|
}
|