@threekit-tools/treble 0.0.90 → 0.0.91-next-01

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/dist/Treble/Treble.d.ts +2 -2
  2. package/dist/Treble/Treble.js +2 -2
  3. package/dist/Treble/index.d.ts +1 -1
  4. package/dist/Treble/index.js +1 -1
  5. package/dist/components/BreatheAnimation/index.js +2 -2
  6. package/dist/components/TurntableAnimation/index.js +2 -2
  7. package/dist/components/containers/formInputContainer.js +3 -3
  8. package/dist/hooks/useAttribute/index.js +1 -5
  9. package/dist/hooks/useConfigurationChangeStatus/index.d.ts +2 -0
  10. package/dist/hooks/{usePlayerLoadingStatus → useConfigurationChangeStatus}/index.js +2 -2
  11. package/dist/hooks/useNestedConfigurator/index.js +1 -2
  12. package/dist/hooks/usePlayerReady/index.d.ts +2 -0
  13. package/dist/hooks/{useAnimationStart → usePlayerReady}/index.js +2 -2
  14. package/dist/hooks/useSpaces/Canvas.d.ts +37 -0
  15. package/dist/hooks/useSpaces/Canvas.js +199 -0
  16. package/dist/hooks/useSpaces/SpacesLayout.d.ts +11 -0
  17. package/dist/hooks/useSpaces/SpacesLayout.js +74 -0
  18. package/dist/hooks/useSpaces/SpacesState.d.ts +162 -0
  19. package/dist/hooks/useSpaces/SpacesState.js +1791 -0
  20. package/dist/hooks/useSpaces/constants.d.ts +44 -0
  21. package/dist/hooks/useSpaces/constants.js +105 -0
  22. package/dist/hooks/{useRoomBuilder → useSpaces}/dataHandlers.d.ts +6 -4
  23. package/dist/hooks/{useRoomBuilder → useSpaces}/dataHandlers.js +104 -42
  24. package/dist/hooks/useSpaces/draw/clearCanvas.d.ts +2 -0
  25. package/dist/hooks/useSpaces/draw/clearCanvas.js +9 -0
  26. package/dist/hooks/useSpaces/draw/drawBackground.d.ts +2 -0
  27. package/dist/hooks/useSpaces/draw/drawBackground.js +12 -0
  28. package/dist/hooks/useSpaces/draw/drawDimensions.d.ts +3 -0
  29. package/dist/hooks/useSpaces/draw/drawDimensions.js +53 -0
  30. package/dist/hooks/useSpaces/draw/drawDoors.d.ts +9 -0
  31. package/dist/hooks/useSpaces/draw/drawDoors.js +93 -0
  32. package/dist/hooks/useSpaces/draw/drawFloor.d.ts +3 -0
  33. package/dist/hooks/useSpaces/draw/drawFloor.js +36 -0
  34. package/dist/hooks/useSpaces/draw/drawGrid.d.ts +3 -0
  35. package/dist/hooks/useSpaces/draw/drawGrid.js +31 -0
  36. package/dist/hooks/useSpaces/draw/drawGuides.d.ts +3 -0
  37. package/dist/hooks/useSpaces/draw/drawGuides.js +23 -0
  38. package/dist/hooks/useSpaces/draw/drawOpenings.d.ts +9 -0
  39. package/dist/hooks/useSpaces/draw/drawOpenings.js +72 -0
  40. package/dist/hooks/useSpaces/draw/drawVertices.d.ts +8 -0
  41. package/dist/hooks/useSpaces/draw/drawVertices.js +61 -0
  42. package/dist/hooks/useSpaces/draw/drawWalls.d.ts +10 -0
  43. package/dist/hooks/useSpaces/draw/drawWalls.js +64 -0
  44. package/dist/hooks/useSpaces/draw/drawWindows.d.ts +9 -0
  45. package/dist/hooks/useSpaces/draw/drawWindows.js +82 -0
  46. package/dist/hooks/useSpaces/draw/index.d.ts +11 -0
  47. package/dist/hooks/useSpaces/draw/index.js +129 -0
  48. package/dist/hooks/useSpaces/geometry/addThicknessToLine.d.ts +3 -0
  49. package/dist/hooks/useSpaces/geometry/addThicknessToLine.js +13 -0
  50. package/dist/hooks/useSpaces/geometry/areLinesEqual.d.ts +3 -0
  51. package/dist/hooks/useSpaces/geometry/areLinesEqual.js +17 -0
  52. package/dist/hooks/useSpaces/geometry/arePointsEqual.d.ts +3 -0
  53. package/dist/hooks/useSpaces/geometry/arePointsEqual.js +8 -0
  54. package/dist/hooks/useSpaces/geometry/arePointsWithinProximity.d.ts +3 -0
  55. package/dist/hooks/useSpaces/geometry/arePointsWithinProximity.js +11 -0
  56. package/dist/hooks/useSpaces/geometry/closestPointOnLine.d.ts +3 -0
  57. package/dist/hooks/useSpaces/geometry/closestPointOnLine.js +13 -0
  58. package/dist/hooks/useSpaces/geometry/doLinesOverlap.d.ts +2 -0
  59. package/dist/hooks/useSpaces/geometry/doLinesOverlap.js +16 -0
  60. package/dist/hooks/useSpaces/geometry/euclideanMod.d.ts +2 -0
  61. package/dist/hooks/useSpaces/geometry/euclideanMod.js +6 -0
  62. package/dist/hooks/useSpaces/geometry/findLoops.d.ts +6 -0
  63. package/dist/hooks/{useRoomBuilder → useSpaces/geometry}/findLoops.js +14 -9
  64. package/dist/hooks/useSpaces/geometry/getAllLineIntersections.d.ts +6 -0
  65. package/dist/hooks/useSpaces/geometry/getAllLineIntersections.js +23 -0
  66. package/dist/hooks/useSpaces/geometry/getAngleOfLineSegment.d.ts +3 -0
  67. package/dist/hooks/useSpaces/geometry/getAngleOfLineSegment.js +7 -0
  68. package/dist/hooks/useSpaces/geometry/getClosestPointOnLineSegment.d.ts +3 -0
  69. package/dist/hooks/useSpaces/geometry/getClosestPointOnLineSegment.js +17 -0
  70. package/dist/hooks/useSpaces/geometry/getDistanceToLine.d.ts +3 -0
  71. package/dist/hooks/useSpaces/geometry/getDistanceToLine.js +10 -0
  72. package/dist/hooks/useSpaces/geometry/getLengthOfLineSegment.d.ts +3 -0
  73. package/dist/hooks/useSpaces/geometry/getLengthOfLineSegment.js +7 -0
  74. package/dist/hooks/useSpaces/geometry/getLineAtOffsetOnLineSegment.d.ts +3 -0
  75. package/dist/hooks/useSpaces/geometry/getLineAtOffsetOnLineSegment.js +17 -0
  76. package/dist/hooks/useSpaces/geometry/getLineOtherPoint.d.ts +3 -0
  77. package/dist/hooks/useSpaces/geometry/getLineOtherPoint.js +11 -0
  78. package/dist/hooks/useSpaces/geometry/getLineSegmentsIntersection.d.ts +3 -0
  79. package/dist/hooks/useSpaces/geometry/getLineSegmentsIntersection.js +43 -0
  80. package/dist/hooks/useSpaces/geometry/getMidpointOfLineSegment.d.ts +3 -0
  81. package/dist/hooks/useSpaces/geometry/getMidpointOfLineSegment.js +9 -0
  82. package/dist/hooks/useSpaces/geometry/getParallelLineSegmentAtDistance.d.ts +3 -0
  83. package/dist/hooks/useSpaces/geometry/getParallelLineSegmentAtDistance.js +20 -0
  84. package/dist/hooks/useSpaces/geometry/getPointAtOffsetOnLineSegment.d.ts +3 -0
  85. package/dist/hooks/useSpaces/geometry/getPointAtOffsetOnLineSegment.js +11 -0
  86. package/dist/hooks/useSpaces/geometry/getPolygonArea.d.ts +3 -0
  87. package/dist/hooks/useSpaces/geometry/getPolygonArea.js +15 -0
  88. package/dist/hooks/useSpaces/geometry/getQuadrilateralArea.d.ts +3 -0
  89. package/dist/hooks/useSpaces/geometry/getQuadrilateralArea.js +16 -0
  90. package/dist/hooks/useSpaces/geometry/getTangetIntersectionAndOffset.d.ts +6 -0
  91. package/dist/hooks/useSpaces/geometry/getTangetIntersectionAndOffset.js +17 -0
  92. package/dist/hooks/useSpaces/geometry/getTriangleArea.d.ts +3 -0
  93. package/dist/hooks/useSpaces/geometry/getTriangleArea.js +9 -0
  94. package/dist/hooks/useSpaces/geometry/getUnitVectorOfLineSegment.d.ts +3 -0
  95. package/dist/hooks/useSpaces/geometry/getUnitVectorOfLineSegment.js +12 -0
  96. package/dist/hooks/useSpaces/geometry/index.d.ts +30 -0
  97. package/dist/hooks/useSpaces/geometry/index.js +64 -0
  98. package/dist/hooks/useSpaces/geometry/isPointInPolygon.d.ts +3 -0
  99. package/dist/hooks/useSpaces/geometry/isPointInPolygon.js +21 -0
  100. package/dist/hooks/useSpaces/geometry/isPointInQuadrilateral.d.ts +3 -0
  101. package/dist/hooks/useSpaces/geometry/isPointInQuadrilateral.js +25 -0
  102. package/dist/hooks/useSpaces/geometry/orderCoordinatesOnLineSegment.d.ts +3 -0
  103. package/dist/hooks/useSpaces/geometry/orderCoordinatesOnLineSegment.js +11 -0
  104. package/dist/hooks/useSpaces/geometry/splitLineAtOffset.d.ts +3 -0
  105. package/dist/hooks/useSpaces/geometry/splitLineAtOffset.js +12 -0
  106. package/dist/hooks/useSpaces/geometry/splitLineAtPoint.d.ts +3 -0
  107. package/dist/hooks/useSpaces/geometry/splitLineAtPoint.js +9 -0
  108. package/dist/hooks/useSpaces/geometry/splitLineAtPoints.d.ts +3 -0
  109. package/dist/hooks/useSpaces/geometry/splitLineAtPoints.js +28 -0
  110. package/dist/hooks/useSpaces/index.d.ts +76 -0
  111. package/dist/hooks/useSpaces/index.js +475 -0
  112. package/dist/hooks/useSpaces/themes/blueprint.d.ts +3 -0
  113. package/dist/hooks/useSpaces/themes/blueprint.js +96 -0
  114. package/dist/hooks/useSpaces/themes/default.d.ts +3 -0
  115. package/dist/hooks/useSpaces/themes/default.js +96 -0
  116. package/dist/hooks/{useRoomBuilder/themes.d.ts → useSpaces/themes/index.d.ts} +3 -4
  117. package/dist/hooks/useSpaces/themes/index.js +21 -0
  118. package/dist/hooks/useSpaces/themes/light.d.ts +3 -0
  119. package/dist/hooks/useSpaces/themes/light.js +96 -0
  120. package/dist/hooks/{useRoomBuilder → useSpaces}/types.d.ts +131 -35
  121. package/dist/hooks/{useRoomBuilder → useSpaces}/types.js +13 -1
  122. package/dist/hooks/useSpaces/validators/areWallsDuplicated.d.ts +3 -0
  123. package/dist/hooks/useSpaces/validators/areWallsDuplicated.js +61 -0
  124. package/dist/hooks/useSpaces/validators/areWallsIntersecting.d.ts +3 -0
  125. package/dist/hooks/useSpaces/validators/areWallsIntersecting.js +42 -0
  126. package/dist/hooks/useSpaces/validators/areWallsOrphaningFeatures.d.ts +3 -0
  127. package/dist/hooks/useSpaces/validators/areWallsOrphaningFeatures.js +52 -0
  128. package/dist/hooks/useSpaces/validators/areWallsTooShort.d.ts +3 -0
  129. package/dist/hooks/useSpaces/validators/areWallsTooShort.js +37 -0
  130. package/dist/hooks/useSpaces/validators/index.d.ts +15 -0
  131. package/dist/hooks/useSpaces/validators/index.js +40 -0
  132. package/dist/hooks/useSpaces/validators/isFeatureCollidingWithExistingFeature.d.ts +3 -0
  133. package/dist/hooks/useSpaces/validators/isFeatureCollidingWithExistingFeature.js +31 -0
  134. package/dist/hooks/useSpaces/validators/isFeatureOutsideWallBounds.d.ts +3 -0
  135. package/dist/hooks/useSpaces/validators/isFeatureOutsideWallBounds.js +19 -0
  136. package/dist/hooks/useSpaces/validators/isLineTooShort.d.ts +3 -0
  137. package/dist/hooks/useSpaces/validators/isLineTooShort.js +26 -0
  138. package/dist/hooks/useSpaces/validators/isVertexLandingOnFeature.d.ts +4 -0
  139. package/dist/hooks/useSpaces/validators/isVertexLandingOnFeature.js +19 -0
  140. package/dist/hooks/useSpaces/validators/isWallEndingOnFeature.d.ts +3 -0
  141. package/dist/hooks/useSpaces/validators/isWallEndingOnFeature.js +19 -0
  142. package/dist/hooks/useSpaces/validators/isWallIntersectingFeature.d.ts +3 -0
  143. package/dist/hooks/useSpaces/validators/isWallIntersectingFeature.js +41 -0
  144. package/dist/hooks/useSpaces/validators/isWallOverlappingExisitingWalls.d.ts +3 -0
  145. package/dist/hooks/useSpaces/validators/isWallOverlappingExisitingWalls.js +54 -0
  146. package/dist/hooks/useSpaces/validators/isWallTooShort.d.ts +3 -0
  147. package/dist/hooks/useSpaces/validators/isWallTooShort.js +10 -0
  148. package/dist/hooks/{useRoomBuilder → useSpaces/validators}/messaging.js +1 -1
  149. package/dist/icons/AngleSnapping.d.ts +3 -0
  150. package/dist/icons/AngleSnapping.js +28 -0
  151. package/dist/icons/Center.d.ts +3 -0
  152. package/dist/icons/Center.js +24 -0
  153. package/dist/icons/Draw.js +3 -3
  154. package/dist/icons/GridSnapping.d.ts +3 -0
  155. package/dist/icons/GridSnapping.js +28 -0
  156. package/dist/icons/LayoutAlt.d.ts +3 -0
  157. package/dist/icons/LayoutAlt.js +21 -0
  158. package/dist/icons/Magnet.d.ts +3 -0
  159. package/dist/icons/Magnet.js +27 -0
  160. package/dist/icons/Player3D.d.ts +3 -0
  161. package/dist/icons/Player3D.js +21 -0
  162. package/dist/icons/Save.d.ts +3 -0
  163. package/dist/icons/Save.js +21 -0
  164. package/dist/icons/UnitCm.d.ts +3 -0
  165. package/dist/icons/UnitCm.js +22 -0
  166. package/dist/icons/UnitFeet.d.ts +3 -0
  167. package/dist/icons/UnitFeet.js +22 -0
  168. package/dist/icons/UnitInch.d.ts +3 -0
  169. package/dist/icons/UnitInch.js +22 -0
  170. package/dist/icons/UnitMeter.d.ts +3 -0
  171. package/dist/icons/UnitMeter.js +21 -0
  172. package/dist/icons/Window.js +4 -4
  173. package/dist/icons/index.js +22 -0
  174. package/dist/icons/types.d.ts +1 -1
  175. package/dist/index.d.ts +17 -3
  176. package/dist/index.js +35 -7
  177. package/dist/store/attributes.d.ts +1 -0
  178. package/dist/store/index.d.ts +39 -8
  179. package/dist/store/index.js +3 -1
  180. package/dist/store/product.js +4 -7
  181. package/dist/store/spaces.d.ts +47 -0
  182. package/dist/store/spaces.js +197 -0
  183. package/dist/store/treble.d.ts +1 -1
  184. package/dist/store/treble.js +24 -26
  185. package/dist/types.d.ts +6 -0
  186. package/package.json +1 -1
  187. package/dist/hooks/useAnimationStart/index.d.ts +0 -2
  188. package/dist/hooks/usePlayerLoadingStatus/index.d.ts +0 -2
  189. package/dist/hooks/useRoomBuilder/RoomBuilderState.d.ts +0 -95
  190. package/dist/hooks/useRoomBuilder/RoomBuilderState.js +0 -1237
  191. package/dist/hooks/useRoomBuilder/constants.d.ts +0 -41
  192. package/dist/hooks/useRoomBuilder/constants.js +0 -48
  193. package/dist/hooks/useRoomBuilder/draw.d.ts +0 -55
  194. package/dist/hooks/useRoomBuilder/draw.js +0 -573
  195. package/dist/hooks/useRoomBuilder/findLoops.d.ts +0 -5
  196. package/dist/hooks/useRoomBuilder/geometry.d.ts +0 -33
  197. package/dist/hooks/useRoomBuilder/geometry.js +0 -325
  198. package/dist/hooks/useRoomBuilder/index.d.ts +0 -40
  199. package/dist/hooks/useRoomBuilder/index.js +0 -303
  200. package/dist/hooks/useRoomBuilder/themes.js +0 -273
  201. package/dist/hooks/useRoomBuilder/validators.d.ts +0 -36
  202. package/dist/hooks/useRoomBuilder/validators.js +0 -362
  203. /package/dist/Treble/{snapshots.d.ts → snapshot.d.ts} +0 -0
  204. /package/dist/Treble/{snapshots.js → snapshot.js} +0 -0
  205. /package/dist/hooks/{useRoomBuilder → useSpaces/validators}/messaging.d.ts +0 -0
@@ -0,0 +1,6 @@
1
+ import type { ICoordinate2D, ICoordinatesLine } from '../types';
2
+ declare function findLoops(lines: Array<ICoordinatesLine>): {
3
+ inner: Array<ICoordinate2D[]>;
4
+ outer: Array<ICoordinate2D[]>;
5
+ };
6
+ export default findLoops;
@@ -8,13 +8,18 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
8
8
  }
9
9
  return to.concat(ar || Array.prototype.slice.call(from));
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.findLoops = void 0;
13
- var geometry_1 = require("./geometry");
15
+ var arePointsEqual_1 = __importDefault(require("./arePointsEqual"));
16
+ var euclideanMod_1 = __importDefault(require("./euclideanMod"));
17
+ var getAngleOfLineSegment_1 = __importDefault(require("./getAngleOfLineSegment"));
18
+ var getLineOtherPoint_1 = __importDefault(require("./getLineOtherPoint"));
14
19
  var areSidesEqual = function (_a, _b) {
15
20
  var lineIndex0 = _a[0], fromPoint0 = _a[1];
16
21
  var lineIndex1 = _b[0], fromPoint1 = _b[1];
17
- return lineIndex0 === lineIndex1 && (0, geometry_1.arePointsEqual)(fromPoint0, fromPoint1);
22
+ return lineIndex0 === lineIndex1 && (0, arePointsEqual_1.default)(fromPoint0, fromPoint1);
18
23
  };
19
24
  var composeSideKey = function (_a) {
20
25
  var lineIndex = _a[0], point = _a[1];
@@ -43,8 +48,8 @@ function findLoops(lines) {
43
48
  function nextAdjacentWallSide(side) {
44
49
  var lineIndex = side[0], fromPoint = side[1];
45
50
  var line = lines[lineIndex];
46
- var toPoint = (0, geometry_1.getLineOtherPoint)(line, fromPoint);
47
- var lineAng = (0, geometry_1.getAngleOfLineSegment)([fromPoint, toPoint]);
51
+ var toPoint = (0, getLineOtherPoint_1.default)(line, fromPoint);
52
+ var lineAng = (0, getAngleOfLineSegment_1.default)([fromPoint, toPoint]);
48
53
  var adjacentLineIndices = pointToLinesIndices[JSON.stringify(toPoint)];
49
54
  var nextLineIndex;
50
55
  if (adjacentLineIndices.length === 0)
@@ -60,9 +65,9 @@ function findLoops(lines) {
60
65
  if (adjacentLineIndex === lineIndex)
61
66
  continue;
62
67
  var adjacentLine = lines[adjacentLineIndex];
63
- var adjacentPoint = (0, geometry_1.getLineOtherPoint)(adjacentLine, toPoint);
64
- var adjacentLineAng = (0, geometry_1.getAngleOfLineSegment)([toPoint, adjacentPoint]);
65
- var angDiff = (0, geometry_1.euclideanMod)(lineAng - adjacentLineAng + Math.PI, Math.PI * 2);
68
+ var adjacentPoint = (0, getLineOtherPoint_1.default)(adjacentLine, toPoint);
69
+ var adjacentLineAng = (0, getAngleOfLineSegment_1.default)([toPoint, adjacentPoint]);
70
+ var angDiff = (0, euclideanMod_1.default)(lineAng - adjacentLineAng + Math.PI, Math.PI * 2);
66
71
  if (angDiff < smallestAngDiff) {
67
72
  smallestAngDiff = angDiff;
68
73
  nextLineIndex = adjacentLineIndex;
@@ -96,4 +101,4 @@ function findLoops(lines) {
96
101
  outer: outerLoops,
97
102
  };
98
103
  }
99
- exports.findLoops = findLoops;
104
+ exports.default = findLoops;
@@ -0,0 +1,6 @@
1
+ import { ICoordinate2D, ICoordinatesLine } from '../types';
2
+ declare function getAllLineIntersections(line: ICoordinatesLine, lines: Array<ICoordinatesLine | null>): {
3
+ index: number;
4
+ point: ICoordinate2D;
5
+ }[];
6
+ export default getAllLineIntersections;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var getLineSegmentsIntersection_1 = __importDefault(require("./getLineSegmentsIntersection"));
7
+ function getAllLineIntersections(line, lines) {
8
+ var lineStr = [JSON.stringify(line[0]), JSON.stringify(line[1])];
9
+ return lines.reduce(function (output, existingLine, i) {
10
+ if (existingLine === null)
11
+ return output;
12
+ var startStr = JSON.stringify(existingLine[0]);
13
+ var endStr = JSON.stringify(existingLine[1]);
14
+ if (lineStr.includes(startStr) || lineStr.includes(endStr))
15
+ return output;
16
+ var intersectionPoint = (0, getLineSegmentsIntersection_1.default)(line, existingLine);
17
+ if (!intersectionPoint)
18
+ return output;
19
+ output.push({ index: i, point: intersectionPoint });
20
+ return output;
21
+ }, []);
22
+ }
23
+ exports.default = getAllLineIntersections;
@@ -0,0 +1,3 @@
1
+ import { ICoordinatesLine } from '../types';
2
+ declare function getAngleOfLineSegment(line: ICoordinatesLine): number;
3
+ export default getAngleOfLineSegment;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function getAngleOfLineSegment(line) {
4
+ var _a = line.flat(), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3];
5
+ return Math.atan2(y2 - y1, x2 - x1);
6
+ }
7
+ exports.default = getAngleOfLineSegment;
@@ -0,0 +1,3 @@
1
+ import { ICoordinate2D, ICoordinatesLine } from '../types';
2
+ declare function getClosestPointOnLineSegment(line: ICoordinatesLine, point: ICoordinate2D): undefined | ICoordinate2D;
3
+ export default getClosestPointOnLineSegment;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function getClosestPointOnLineSegment(line, point) {
4
+ var _a = line.flat(), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3];
5
+ var lineVector = [x2 - x1, y2 - y1];
6
+ var pointVector = [point[0] - x1, point[1] - y1];
7
+ var lineLength = Math.pow(lineVector[0], 2) + Math.pow(lineVector[1], 2);
8
+ var dotProduct = (pointVector[0] * lineVector[0] + pointVector[1] * lineVector[1]) /
9
+ lineLength;
10
+ if (dotProduct < 0)
11
+ return [x1, y1];
12
+ if (dotProduct > 1)
13
+ return [x2, y2];
14
+ else
15
+ return [x1 + dotProduct * lineVector[0], y1 + dotProduct * lineVector[1]];
16
+ }
17
+ exports.default = getClosestPointOnLineSegment;
@@ -0,0 +1,3 @@
1
+ import { ICoordinate2D } from '../types';
2
+ declare function getDistanceToLine(pointOnLine: ICoordinate2D, angle: number, point: ICoordinate2D): number;
3
+ export default getDistanceToLine;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function getDistanceToLine(pointOnLine, angle, point) {
4
+ var x1 = point[0], y1 = point[1];
5
+ var x2 = pointOnLine[0], y2 = pointOnLine[1];
6
+ var dx = Math.cos(angle);
7
+ var dy = Math.sin(angle);
8
+ return (Math.abs((y1 - y2) * dx - (x1 - x2) * dy) / Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2)));
9
+ }
10
+ exports.default = getDistanceToLine;
@@ -0,0 +1,3 @@
1
+ import { ICoordinatesLine } from '../types';
2
+ declare function getLengthOfLineSegment(line: ICoordinatesLine): number;
3
+ export default getLengthOfLineSegment;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function getLengthOfLineSegment(line) {
4
+ var _a = line.flat(), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3];
5
+ return Math.sqrt(Math.pow((x2 - x1), 2) + Math.pow((y2 - y1), 2));
6
+ }
7
+ exports.default = getLengthOfLineSegment;
@@ -0,0 +1,3 @@
1
+ import { ICoordinatesLine } from '../types';
2
+ declare function getLineAtOffsetOnLineSegment(line: ICoordinatesLine, offset: number, length: number): ICoordinatesLine;
3
+ export default getLineAtOffsetOnLineSegment;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function getLineAtOffsetOnLineSegment(line, offset, length) {
4
+ var _a = line.flat(), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3];
5
+ var d = Math.sqrt(Math.pow((x2 - x1), 2) + Math.pow((y2 - y1), 2));
6
+ var startRatio = offset / d;
7
+ var endRatio = (offset + length) / d;
8
+ var startX = x1 + startRatio * (x2 - x1);
9
+ var startY = y1 + startRatio * (y2 - y1);
10
+ var endX = x1 + endRatio * (x2 - x1);
11
+ var endY = y1 + endRatio * (y2 - y1);
12
+ return [
13
+ [startX, startY],
14
+ [endX, endY],
15
+ ];
16
+ }
17
+ exports.default = getLineAtOffsetOnLineSegment;
@@ -0,0 +1,3 @@
1
+ import { ICoordinate2D, ICoordinatesLine } from '../types';
2
+ declare function getLineOtherPoint(line: ICoordinatesLine, point: ICoordinate2D): ICoordinate2D;
3
+ export default getLineOtherPoint;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var geometry_1 = require("../geometry");
4
+ function getLineOtherPoint(line, point) {
5
+ var eq0 = (0, geometry_1.arePointsEqual)(line[0], point);
6
+ var eq1 = (0, geometry_1.arePointsEqual)(line[1], point);
7
+ if (eq0 === eq1)
8
+ console.warn('Unexpected. Is your wall of 0 length?', JSON.parse(JSON.stringify({ line: line, point: point })));
9
+ return eq0 ? line[1] : line[0];
10
+ }
11
+ exports.default = getLineOtherPoint;
@@ -0,0 +1,3 @@
1
+ import { ICoordinate2D, ICoordinatesLine } from '../types';
2
+ declare function getLineSegmentsIntersection(line1: ICoordinatesLine, line2: ICoordinatesLine): null | ICoordinate2D;
3
+ export default getLineSegmentsIntersection;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var arePointsEqual_1 = __importDefault(require("./arePointsEqual"));
7
+ function getLineSegmentsIntersection(line1, line2) {
8
+ if (arePointsEqual_1.default.apply(void 0, line1) || arePointsEqual_1.default.apply(void 0, line2))
9
+ return null;
10
+ if ((0, arePointsEqual_1.default)(line1[0], line2[0]))
11
+ return null;
12
+ if ((0, arePointsEqual_1.default)(line1[0], line2[1]))
13
+ return null;
14
+ if ((0, arePointsEqual_1.default)(line1[1], line2[0]))
15
+ return null;
16
+ if ((0, arePointsEqual_1.default)(line1[1], line2[1]))
17
+ return null;
18
+ var _a = line1.flat(), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3];
19
+ var _b = line2.flat(), x3 = _b[0], y3 = _b[1], x4 = _b[2], y4 = _b[3];
20
+ var a1 = y2 - y1;
21
+ var b1 = x1 - x2;
22
+ var c1 = a1 * x1 + b1 * y1;
23
+ var a2 = y4 - y3;
24
+ var b2 = x3 - x4;
25
+ var c2 = a2 * x3 + b2 * y3;
26
+ var determinant = a1 * b2 - a2 * b1;
27
+ if (determinant === 0)
28
+ return null;
29
+ var x = (b2 * c1 - b1 * c2) / determinant;
30
+ var y = (a1 * c2 - a2 * c1) / determinant;
31
+ if (x < Math.min(x1, x2) ||
32
+ x > Math.max(x1, x2) ||
33
+ x < Math.min(x3, x4) ||
34
+ x > Math.max(x3, x4))
35
+ return null;
36
+ if (y < Math.min(y1, y2) ||
37
+ y > Math.max(y1, y2) ||
38
+ y < Math.min(y3, y4) ||
39
+ y > Math.max(y3, y4))
40
+ return null;
41
+ return [x, y];
42
+ }
43
+ exports.default = getLineSegmentsIntersection;
@@ -0,0 +1,3 @@
1
+ import { ICoordinate2D, ICoordinatesLine } from '../types';
2
+ declare function getMidpointOfLineSegment(line: ICoordinatesLine): ICoordinate2D;
3
+ export default getMidpointOfLineSegment;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function getMidpointOfLineSegment(line) {
4
+ var _a = line.flat(), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3];
5
+ var xMidpoint = (x1 + x2) / 2;
6
+ var yMidpoint = (y1 + y2) / 2;
7
+ return [xMidpoint, yMidpoint];
8
+ }
9
+ exports.default = getMidpointOfLineSegment;
@@ -0,0 +1,3 @@
1
+ import { ICoordinatesLine } from '../types';
2
+ declare function getParallelLineSegmentAtDistance(line: ICoordinatesLine, distance: number): ICoordinatesLine;
3
+ export default getParallelLineSegmentAtDistance;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var getUnitVectorOfLineSegment_1 = __importDefault(require("./getUnitVectorOfLineSegment"));
7
+ function getParallelLineSegmentAtDistance(line, distance) {
8
+ if (!distance)
9
+ return line;
10
+ var _a = line.flat(), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3];
11
+ var unitVector = (0, getUnitVectorOfLineSegment_1.default)(line);
12
+ var _b = distance > 0
13
+ ? [unitVector[1], -unitVector[0]]
14
+ : [-unitVector[1], unitVector[0]], xNormal = _b[0], yNormal = _b[1];
15
+ var length = Math.abs(distance);
16
+ var point1 = [x1 + xNormal * length, y1 + yNormal * length];
17
+ var point2 = [x2 + xNormal * length, y2 + yNormal * length];
18
+ return [point1, point2];
19
+ }
20
+ exports.default = getParallelLineSegmentAtDistance;
@@ -0,0 +1,3 @@
1
+ import { ICoordinate2D, ICoordinatesLine } from '../types';
2
+ declare function getPointAtOffsetOnLineSegment(line: ICoordinatesLine, offset: number): ICoordinate2D;
3
+ export default getPointAtOffsetOnLineSegment;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function getPointAtOffsetOnLineSegment(line, offset) {
4
+ var _a = line.flat(), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3];
5
+ var d = Math.sqrt(Math.pow((x2 - x1), 2) + Math.pow((y2 - y1), 2));
6
+ var r = offset / d;
7
+ var x = x1 + r * (x2 - x1);
8
+ var y = y1 + r * (y2 - y1);
9
+ return [x, y];
10
+ }
11
+ exports.default = getPointAtOffsetOnLineSegment;
@@ -0,0 +1,3 @@
1
+ import { ICoordinate2D } from '../types';
2
+ declare function getPolygonArea(polygon: Array<ICoordinate2D>): number;
3
+ export default getPolygonArea;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var getTriangleArea_1 = __importDefault(require("./getTriangleArea"));
7
+ function getPolygonArea(polygon) {
8
+ var origin = [0, 0];
9
+ return polygon.reduce(function (sum, point1, i) {
10
+ var point2 = polygon[(i + 1) % polygon.length];
11
+ sum += (0, getTriangleArea_1.default)(origin, point1, point2);
12
+ return sum;
13
+ }, 0);
14
+ }
15
+ exports.default = getPolygonArea;
@@ -0,0 +1,3 @@
1
+ import { ICoordinatesQuadrilateral } from '../types';
2
+ declare function getQuadrilateralArea(quadrilateral: ICoordinatesQuadrilateral): number;
3
+ export default getQuadrilateralArea;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function getQuadrilateralArea(quadrilateral) {
4
+ var _a = quadrilateral.flat(), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3], x3 = _a[4], y3 = _a[5], x4 = _a[6], y4 = _a[7];
5
+ var area = Math.abs((x1 * y2 +
6
+ x2 * y3 +
7
+ x3 * y4 +
8
+ x4 * y1 -
9
+ x2 * y1 -
10
+ x3 * y2 -
11
+ x4 * y3 -
12
+ x1 * y4) /
13
+ 2);
14
+ return area;
15
+ }
16
+ exports.default = getQuadrilateralArea;
@@ -0,0 +1,6 @@
1
+ import { ICoordinate2D, ICoordinatesLine } from '../types';
2
+ declare function getTangetIntersectionAndOffset(line: ICoordinatesLine, point: ICoordinate2D): undefined | {
3
+ point: ICoordinate2D;
4
+ offset: number;
5
+ };
6
+ export default getTangetIntersectionAndOffset;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var getClosestPointOnLineSegment_1 = __importDefault(require("./getClosestPointOnLineSegment"));
7
+ var getLengthOfLineSegment_1 = __importDefault(require("./getLengthOfLineSegment"));
8
+ function getTangetIntersectionAndOffset(line, point) {
9
+ var interceptPoint = (0, getClosestPointOnLineSegment_1.default)(line, point);
10
+ if (!interceptPoint)
11
+ return undefined;
12
+ return {
13
+ point: interceptPoint,
14
+ offset: (0, getLengthOfLineSegment_1.default)([line[0], interceptPoint]),
15
+ };
16
+ }
17
+ exports.default = getTangetIntersectionAndOffset;
@@ -0,0 +1,3 @@
1
+ import { ICoordinate2D } from '../types';
2
+ declare function getTriangleArea(point1: ICoordinate2D, point2: ICoordinate2D, point3: ICoordinate2D): number;
3
+ export default getTriangleArea;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function getTriangleArea(point1, point2, point3) {
4
+ return ((point1[0] * (point2[1] - point3[1]) +
5
+ point2[0] * (point3[1] - point1[1]) +
6
+ point3[0] * (point1[1] - point2[1])) /
7
+ 2);
8
+ }
9
+ exports.default = getTriangleArea;
@@ -0,0 +1,3 @@
1
+ import { ICoordinate2D, ICoordinatesLine } from '../types';
2
+ declare function getUnitVectorOfLineSegment(line: ICoordinatesLine): ICoordinate2D;
3
+ export default getUnitVectorOfLineSegment;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var getLengthOfLineSegment_1 = __importDefault(require("./getLengthOfLineSegment"));
7
+ function getUnitVectorOfLineSegment(line) {
8
+ var _a = line.flat(), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3];
9
+ var magnitude = (0, getLengthOfLineSegment_1.default)(line);
10
+ return [(x2 - x1) / magnitude, (y2 - y1) / magnitude];
11
+ }
12
+ exports.default = getUnitVectorOfLineSegment;
@@ -0,0 +1,30 @@
1
+ import euclideanMod from './euclideanMod';
2
+ import arePointsEqual from './arePointsEqual';
3
+ import areLinesEqual from './areLinesEqual';
4
+ import getLineOtherPoint from './getLineOtherPoint';
5
+ import getLengthOfLineSegment from './getLengthOfLineSegment';
6
+ import getUnitVectorOfLineSegment from './getUnitVectorOfLineSegment';
7
+ import getMidpointOfLineSegment from './getMidpointOfLineSegment';
8
+ import getAngleOfLineSegment from './getAngleOfLineSegment';
9
+ import getPointAtOffsetOnLineSegment from './getPointAtOffsetOnLineSegment';
10
+ import getLineAtOffsetOnLineSegment from './getLineAtOffsetOnLineSegment';
11
+ import getDistanceToLine from './getDistanceToLine';
12
+ import closestPointOnLine from './closestPointOnLine';
13
+ import getQuadrilateralArea from './getQuadrilateralArea';
14
+ import getTriangleArea from './getTriangleArea';
15
+ import getPolygonArea from './getPolygonArea';
16
+ import getParallelLineSegmentAtDistance from './getParallelLineSegmentAtDistance';
17
+ import addThicknessToLine from './addThicknessToLine';
18
+ import arePointsWithinProximity from './arePointsWithinProximity';
19
+ import isPointInQuadrilateral from './isPointInQuadrilateral';
20
+ import isPointInPolygon from './isPointInPolygon';
21
+ import getLineSegmentsIntersection from './getLineSegmentsIntersection';
22
+ import splitLineAtPoint from './splitLineAtPoint';
23
+ import splitLineAtPoints from './splitLineAtPoints';
24
+ import splitLineAtOffset from './splitLineAtOffset';
25
+ import orderCoordinatesOnLineSegment from './orderCoordinatesOnLineSegment';
26
+ import getTangetIntersectionAndOffset from './getTangetIntersectionAndOffset';
27
+ import getAllLineIntersections from './getAllLineIntersections';
28
+ import doLinesOverlap from './doLinesOverlap';
29
+ import findLoops from './findLoops';
30
+ export { euclideanMod, arePointsEqual, areLinesEqual, getLineOtherPoint, getLengthOfLineSegment, getUnitVectorOfLineSegment, getMidpointOfLineSegment, getAngleOfLineSegment, getPointAtOffsetOnLineSegment, getLineAtOffsetOnLineSegment, getDistanceToLine, closestPointOnLine, getQuadrilateralArea, getTriangleArea, getPolygonArea, getParallelLineSegmentAtDistance, addThicknessToLine, arePointsWithinProximity, isPointInQuadrilateral, isPointInPolygon, getLineSegmentsIntersection, splitLineAtPoint, splitLineAtPoints, splitLineAtOffset, orderCoordinatesOnLineSegment, getTangetIntersectionAndOffset, getAllLineIntersections, doLinesOverlap, findLoops, };
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.findLoops = exports.doLinesOverlap = exports.getAllLineIntersections = exports.getTangetIntersectionAndOffset = exports.orderCoordinatesOnLineSegment = exports.splitLineAtOffset = exports.splitLineAtPoints = exports.splitLineAtPoint = exports.getLineSegmentsIntersection = exports.isPointInPolygon = exports.isPointInQuadrilateral = exports.arePointsWithinProximity = exports.addThicknessToLine = exports.getParallelLineSegmentAtDistance = exports.getPolygonArea = exports.getTriangleArea = exports.getQuadrilateralArea = exports.closestPointOnLine = exports.getDistanceToLine = exports.getLineAtOffsetOnLineSegment = exports.getPointAtOffsetOnLineSegment = exports.getAngleOfLineSegment = exports.getMidpointOfLineSegment = exports.getUnitVectorOfLineSegment = exports.getLengthOfLineSegment = exports.getLineOtherPoint = exports.areLinesEqual = exports.arePointsEqual = exports.euclideanMod = void 0;
7
+ var euclideanMod_1 = __importDefault(require("./euclideanMod"));
8
+ exports.euclideanMod = euclideanMod_1.default;
9
+ var arePointsEqual_1 = __importDefault(require("./arePointsEqual"));
10
+ exports.arePointsEqual = arePointsEqual_1.default;
11
+ var areLinesEqual_1 = __importDefault(require("./areLinesEqual"));
12
+ exports.areLinesEqual = areLinesEqual_1.default;
13
+ var getLineOtherPoint_1 = __importDefault(require("./getLineOtherPoint"));
14
+ exports.getLineOtherPoint = getLineOtherPoint_1.default;
15
+ var getLengthOfLineSegment_1 = __importDefault(require("./getLengthOfLineSegment"));
16
+ exports.getLengthOfLineSegment = getLengthOfLineSegment_1.default;
17
+ var getUnitVectorOfLineSegment_1 = __importDefault(require("./getUnitVectorOfLineSegment"));
18
+ exports.getUnitVectorOfLineSegment = getUnitVectorOfLineSegment_1.default;
19
+ var getMidpointOfLineSegment_1 = __importDefault(require("./getMidpointOfLineSegment"));
20
+ exports.getMidpointOfLineSegment = getMidpointOfLineSegment_1.default;
21
+ var getAngleOfLineSegment_1 = __importDefault(require("./getAngleOfLineSegment"));
22
+ exports.getAngleOfLineSegment = getAngleOfLineSegment_1.default;
23
+ var getPointAtOffsetOnLineSegment_1 = __importDefault(require("./getPointAtOffsetOnLineSegment"));
24
+ exports.getPointAtOffsetOnLineSegment = getPointAtOffsetOnLineSegment_1.default;
25
+ var getLineAtOffsetOnLineSegment_1 = __importDefault(require("./getLineAtOffsetOnLineSegment"));
26
+ exports.getLineAtOffsetOnLineSegment = getLineAtOffsetOnLineSegment_1.default;
27
+ var getDistanceToLine_1 = __importDefault(require("./getDistanceToLine"));
28
+ exports.getDistanceToLine = getDistanceToLine_1.default;
29
+ var closestPointOnLine_1 = __importDefault(require("./closestPointOnLine"));
30
+ exports.closestPointOnLine = closestPointOnLine_1.default;
31
+ var getQuadrilateralArea_1 = __importDefault(require("./getQuadrilateralArea"));
32
+ exports.getQuadrilateralArea = getQuadrilateralArea_1.default;
33
+ var getTriangleArea_1 = __importDefault(require("./getTriangleArea"));
34
+ exports.getTriangleArea = getTriangleArea_1.default;
35
+ var getPolygonArea_1 = __importDefault(require("./getPolygonArea"));
36
+ exports.getPolygonArea = getPolygonArea_1.default;
37
+ var getParallelLineSegmentAtDistance_1 = __importDefault(require("./getParallelLineSegmentAtDistance"));
38
+ exports.getParallelLineSegmentAtDistance = getParallelLineSegmentAtDistance_1.default;
39
+ var addThicknessToLine_1 = __importDefault(require("./addThicknessToLine"));
40
+ exports.addThicknessToLine = addThicknessToLine_1.default;
41
+ var arePointsWithinProximity_1 = __importDefault(require("./arePointsWithinProximity"));
42
+ exports.arePointsWithinProximity = arePointsWithinProximity_1.default;
43
+ var isPointInQuadrilateral_1 = __importDefault(require("./isPointInQuadrilateral"));
44
+ exports.isPointInQuadrilateral = isPointInQuadrilateral_1.default;
45
+ var isPointInPolygon_1 = __importDefault(require("./isPointInPolygon"));
46
+ exports.isPointInPolygon = isPointInPolygon_1.default;
47
+ var getLineSegmentsIntersection_1 = __importDefault(require("./getLineSegmentsIntersection"));
48
+ exports.getLineSegmentsIntersection = getLineSegmentsIntersection_1.default;
49
+ var splitLineAtPoint_1 = __importDefault(require("./splitLineAtPoint"));
50
+ exports.splitLineAtPoint = splitLineAtPoint_1.default;
51
+ var splitLineAtPoints_1 = __importDefault(require("./splitLineAtPoints"));
52
+ exports.splitLineAtPoints = splitLineAtPoints_1.default;
53
+ var splitLineAtOffset_1 = __importDefault(require("./splitLineAtOffset"));
54
+ exports.splitLineAtOffset = splitLineAtOffset_1.default;
55
+ var orderCoordinatesOnLineSegment_1 = __importDefault(require("./orderCoordinatesOnLineSegment"));
56
+ exports.orderCoordinatesOnLineSegment = orderCoordinatesOnLineSegment_1.default;
57
+ var getTangetIntersectionAndOffset_1 = __importDefault(require("./getTangetIntersectionAndOffset"));
58
+ exports.getTangetIntersectionAndOffset = getTangetIntersectionAndOffset_1.default;
59
+ var getAllLineIntersections_1 = __importDefault(require("./getAllLineIntersections"));
60
+ exports.getAllLineIntersections = getAllLineIntersections_1.default;
61
+ var doLinesOverlap_1 = __importDefault(require("./doLinesOverlap"));
62
+ exports.doLinesOverlap = doLinesOverlap_1.default;
63
+ var findLoops_1 = __importDefault(require("./findLoops"));
64
+ exports.findLoops = findLoops_1.default;
@@ -0,0 +1,3 @@
1
+ import { ICoordinate2D } from '../types';
2
+ declare function isPointInPolygon(point: ICoordinate2D, polygon: Array<ICoordinate2D>): boolean;
3
+ export default isPointInPolygon;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var getLineSegmentsIntersection_1 = __importDefault(require("./getLineSegmentsIntersection"));
7
+ function isPointInPolygon(point, polygon) {
8
+ var ray = [
9
+ point,
10
+ [point[0] + Number.MAX_SAFE_INTEGER, point[1]],
11
+ ];
12
+ var intersectCount = 0;
13
+ for (var i = 0; i < polygon.length; i++) {
14
+ var polygonStart = polygon[i];
15
+ var polygonEnd = polygon[(i + 1) % polygon.length];
16
+ if ((0, getLineSegmentsIntersection_1.default)(ray, [polygonStart, polygonEnd]))
17
+ intersectCount++;
18
+ }
19
+ return intersectCount % 2 === 1;
20
+ }
21
+ exports.default = isPointInPolygon;
@@ -0,0 +1,3 @@
1
+ import { ICoordinate2D, ICoordinatesQuadrilateral } from '../types';
2
+ declare function isPointInQuadrilateral(quadrilateral: ICoordinatesQuadrilateral, point: ICoordinate2D): boolean;
3
+ export default isPointInQuadrilateral;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var getQuadrilateralArea_1 = __importDefault(require("./getQuadrilateralArea"));
7
+ var getTriangleArea_1 = __importDefault(require("./getTriangleArea"));
8
+ function isPointInQuadrilateral(quadrilateral, point) {
9
+ var _a = quadrilateral.flat(), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3], x3 = _a[4], y3 = _a[5], x4 = _a[6], y4 = _a[7];
10
+ var pointX = point[0], pointY = point[1];
11
+ if (pointX < Math.min(x1, x2, x3, x4) ||
12
+ pointX > Math.max(x1, x2, x3, x4) ||
13
+ pointY < Math.min(y1, y2, y3, y4) ||
14
+ pointY > Math.max(y1, y2, y3, y4)) {
15
+ return false;
16
+ }
17
+ var area = (0, getQuadrilateralArea_1.default)(quadrilateral);
18
+ var area1 = (0, getTriangleArea_1.default)(point, quadrilateral[0], quadrilateral[1]);
19
+ var area2 = (0, getTriangleArea_1.default)(point, quadrilateral[1], quadrilateral[2]);
20
+ var area3 = (0, getTriangleArea_1.default)(point, quadrilateral[2], quadrilateral[3]);
21
+ var area4 = (0, getTriangleArea_1.default)(point, quadrilateral[3], quadrilateral[0]);
22
+ var compareArea = Math.abs(area1) + Math.abs(area2) + Math.abs(area3) + Math.abs(area4);
23
+ return Math.abs(Math.round(area) - Math.round(compareArea)) < 2;
24
+ }
25
+ exports.default = isPointInQuadrilateral;
@@ -0,0 +1,3 @@
1
+ import { ICoordinate2D } from '../types';
2
+ declare function orderCoordinatesOnLineSegment(points?: Array<ICoordinate2D>): Array<ICoordinate2D>;
3
+ export default orderCoordinatesOnLineSegment;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function orderCoordinatesOnLineSegment(points) {
4
+ if (!points)
5
+ return [];
6
+ if (points[0][0] === points[1][0])
7
+ return points.sort(function (a, b) { return a[1] - b[1]; });
8
+ else
9
+ return points.sort(function (a, b) { return a[0] - b[0]; });
10
+ }
11
+ exports.default = orderCoordinatesOnLineSegment;
@@ -0,0 +1,3 @@
1
+ import { ICoordinatesLine } from '../types';
2
+ declare function splitLineAtOffset(line: ICoordinatesLine, offset: number): [ICoordinatesLine, ICoordinatesLine];
3
+ export default splitLineAtOffset;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var getPointAtOffsetOnLineSegment_1 = __importDefault(require("./getPointAtOffsetOnLineSegment"));
7
+ var splitLineAtPoint_1 = __importDefault(require("./splitLineAtPoint"));
8
+ function splitLineAtOffset(line, offset) {
9
+ var splitPoint = (0, getPointAtOffsetOnLineSegment_1.default)(line, offset);
10
+ return (0, splitLineAtPoint_1.default)(line, splitPoint);
11
+ }
12
+ exports.default = splitLineAtOffset;
@@ -0,0 +1,3 @@
1
+ import { ICoordinate2D, ICoordinatesLine } from '../types';
2
+ declare function splitLineAtPoint(line: ICoordinatesLine, point: ICoordinate2D): [ICoordinatesLine, ICoordinatesLine];
3
+ export default splitLineAtPoint;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function splitLineAtPoint(line, point) {
4
+ return [
5
+ [line[0], point],
6
+ [point, line[1]],
7
+ ];
8
+ }
9
+ exports.default = splitLineAtPoint;