From 0e7f5f473900de1af9f124a806fe1f73b4b3bcb4 Mon Sep 17 00:00:00 2001 From: Tomas Richtar Date: Sun, 4 May 2025 11:31:59 +0200 Subject: [PATCH] Added Linear and Exponential calculations --- ArrowPoints.js | 87 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 64 insertions(+), 23 deletions(-) diff --git a/ArrowPoints.js b/ArrowPoints.js index 8b8d638..f47aaa4 100644 --- a/ArrowPoints.js +++ b/ArrowPoints.js @@ -1,6 +1,7 @@ const canvas = document.getElementById("canvas"); // Compute arrow polygon import { getArrowPolygon } from "athena-utils/Arrow.js"; +import { CalculationStyle } from "athena-utils/Arrow.js"; import { getCirclePolygon } from "athena-utils/BasicShapes.js"; import { getRectanglePolygon } from "athena-utils/BasicShapes.js"; // Polygon merge using Turf library @@ -9,26 +10,6 @@ import {addTurfPolygonToMerge} from "athena-utils/Polygon.js"; import {toTurfPolygon} from "athena-utils/Polygon.js"; import {drawPolygon} from "athena-utils/PolygonVisuals.js"; -const points = [ - { x: 50, y: 400 }, - { x: 150, y: 100 }, - { x: 300, y: 200 }, - { x: 300, y: 400 }, -]; - -const pointsB = [ - { x: 310, y: 300 }, - { x: 380, y: 350 }, - { x: 400, y: 300 }, - { x: 450, y: 330 } -]; - -const pointsC = [ - { x: 50, y: 100 }, - { x: 100, y: 100 }, - { x: 180, y: 95 } -]; - const circleCenter = {x:320, y:180}; const circleRadius = 70; const circleDensity = 15; @@ -42,9 +23,69 @@ const rectangleSideA = 70; const rectangleSideB = 200; const rectangleRotation = 40; -const arrowPolygonA = getArrowPolygon(points, 0.02, 50, 10, true, 40, 35); -const arrowPolygonB = getArrowPolygon(pointsB, 0.02, 10, 10, true, 40, 35); -const arrowPolygonC = getArrowPolygon(pointsC, 0.02, 50, 10, false, 40, 35); +const pointsA = [ + { x: 50, y: 400 }, + { x: 150, y: 100 }, + { x: 300, y: 200 }, + { x: 300, y: 400 }, +]; + +const pointsB = [ + { x: 310, y: 300 }, + { x: 380, y: 350 }, + { x: 450, y: 450 }, + { x: 650, y: 430 } +]; + +const pointsC = [ + { x: 50, y: 100 }, + { x: 100, y: 100 }, + { x: 180, y: 95 } +]; + +const arrowDataA = { + points: pointsA, + density: 0.02, + spacing: 20, + offsetDistance: 50 + }; + const styleA = { + calculation: CalculationStyle.Linear, + range: 1, + minValue: 0.1 + }; + const arrowHeadDataA = { + widthArrow: 40, + lengthArrow: 35 + }; + const arrowDataB = { + points: pointsB, + density: 0.02, + spacing: 1, + offsetDistance: 80, + }; + const styleB = { + calculation: CalculationStyle.Exponential, + range: 5, + minValue: 0.1 + }; + const arrowHeadDataB = { + widthArrow: 40, + lengthArrow: 35 + }; + const arrowDataC = { + points: pointsC, + density: 0.02, + spacing: 5, + offsetDistance: 10, + }; + const styleC = { + calculation: CalculationStyle.None, + }; + +const arrowPolygonA = getArrowPolygon(arrowDataA, styleA, arrowHeadDataA); +const arrowPolygonB = getArrowPolygon(arrowDataB, styleB, arrowHeadDataB); +const arrowPolygonC = getArrowPolygon(arrowDataC, styleC); const circlePolygon = getCirclePolygon(circleCenter, circleRadius, circleDensity); const circlePolygonB = getCirclePolygon(circleCenterB, circleRadiusB, circleDensityB);