Euclidean functions

This commit is contained in:
Tomas Richtar 2025-05-30 18:17:43 +02:00
parent 677b8cbf31
commit 896754c48a
3 changed files with 42 additions and 19 deletions

View File

@ -1,16 +1,16 @@
const canvas = document.getElementById("canvas");
// Compute arrow polygon
import { getArrowPolygon } from "./Arrow.js";
import { ARROW_BODY_STYLE_CONSTANT, ARROW_BODY_STYLE_LINEAR, ARROW_BODY_STYLE_EXPONENTIAL } from "./Arrow.js";
import { getCirclePolygon } from "./BasicShapes.js";
import { getRectanglePolygon } from "./BasicShapes.js";
import { getFrontline } from "./Frontline.js";
import { LEFT_SIDE, RIGHT_SIDE, BOTH_SIDES } from "./Frontline.js";
import { getArrowPolygonEuclidean } from "athena-utils/shape/Arrow.js";
import { ARROW_BODY_STYLE_CONSTANT, ARROW_BODY_STYLE_LINEAR, ARROW_BODY_STYLE_EXPONENTIAL } from "athena-utils/shape/Arrow.js";
import { getCirclePolygonEuclidean } from "athena-utils/shape/BasicShapes.js";
import { getRectanglePolygonEuclidean } from "athena-utils/shape/BasicShapes.js";
import { getFrontline } from "athena-utils/shape/Frontline.js";
import { LEFT_SIDE, RIGHT_SIDE, BOTH_SIDES } from "athena-utils/shape/Frontline.js";
// Polygon merge using Turf library
import {mergeTurfPolygons} from "./Polygon.js";
import {addTurfPolygonToMerge} from "./Polygon.js";
import {toTurfPolygon} from "./Polygon.js";
import {drawPolygon} from "./PolygonVisuals.js";
import {mergeTurfPolygons} from "athena-utils/shape/Polygon.js";
import {addTurfPolygonToMerge} from "athena-utils/shape/Polygon.js";
import {toTurfPolygon} from "athena-utils/shape/Polygon.js";
import {drawPolygon} from "athena-utils/shape/PolygonVisuals.js";
const circleCenter = {x:320, y:180};
const circleRadius = 70;
@ -154,13 +154,13 @@ const arrowDataA = {
};
const arrowPolygonA = getArrowPolygon(arrowDataA, styleA, arrowHeadDataA);
const arrowPolygonB = getArrowPolygon(arrowDataB, styleB, arrowHeadDataB);
const arrowPolygonC = getArrowPolygon(arrowDataC, styleC);
const arrowPolygonA = getArrowPolygonEuclidean(arrowDataA, styleA, arrowHeadDataA);
const arrowPolygonB = getArrowPolygonEuclidean(arrowDataB, styleB, arrowHeadDataB);
const arrowPolygonC = getArrowPolygonEuclidean(arrowDataC, styleC);
const circlePolygon = getCirclePolygon(circleCenter, circleRadius, circleDensity);
const circlePolygonB = getCirclePolygon(circleCenterB, circleRadiusB, circleDensityB);
const rectanglePolygon = getRectanglePolygon(rectangleCenter, rectangleSideA, rectangleSideB, rectangleRotation);
const circlePolygon = getCirclePolygonEuclidean(circleCenter, circleRadius, circleDensity);
const circlePolygonB = getCirclePolygonEuclidean(circleCenterB, circleRadiusB, circleDensityB);
const rectanglePolygon = getRectanglePolygonEuclidean(rectangleCenter, rectangleSideA, rectangleSideB, rectangleRotation);
const mergedTurfPoly = mergeTurfPolygons(arrowPolygonA, arrowPolygonC);
const mergedTurfPolyAll = addTurfPolygonToMerge(mergedTurfPoly, arrowPolygonB);
@ -168,7 +168,7 @@ const mergedTurfPolyAll = addTurfPolygonToMerge(mergedTurfPoly, arrowPolygonB);
const mergedTurfPolyRectangle = addTurfPolygonToMerge(mergedTurfPolyAll, rectanglePolygon);
const mergedRectangle = mergeTurfPolygons(circlePolygon, circlePolygonB);
const rectanglePoly = getRectanglePolygon(circleCenter, rectangleSideA, rectangleSideB, rectangleRotation*-1);
const rectanglePoly = getRectanglePolygonEuclidean(circleCenter, rectangleSideA, rectangleSideB, rectangleRotation*-1);
const rectangleToTurfPoly = toTurfPolygon(rectanglePoly);
const frontlinePolygonA = getFrontline(frontlineDataA);

View File

@ -1,3 +1,6 @@
<!--
MAPBOX
-->
<!DOCTYPE html>
<html>
<head>
@ -15,4 +18,24 @@ body { margin: 0; padding: 0; }
<div id="map"></div>
<script type="module" src="MapPolygons.js"></script>
</body>
</html>
</html>
<!--
CANVAS
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite App</title>
</head>
<body>
<div id="app"></div>
<canvas id="canvas" width="800" height="600"></canvas>
<script type="module" src="ArrowPoints.js"></script>
</body>
</html>
-->

2
package-lock.json generated
View File

@ -2718,7 +2718,7 @@
"dev": true
},
"node_modules/athena-utils": {
"resolved": "git+https://git.projectathena.ca/andyaxxe/athena-utils.git#904b62b360",
"resolved": "git+https://git.projectathena.ca/andyaxxe/athena-utils.git#284cea819e",
"dev": true,
"dependencies": {
"@turf/turf": "7.2.0"