webgl2-sdf 0.0.3 → 0.0.5

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 (96) hide show
  1. package/README.md +76 -65
  2. package/browser/index.min.js +1 -1
  3. package/node/bezier/bezier-curves-to-line-segs.d.ts +1 -1
  4. package/node/bezier/bezier-curves-to-line-segs.js +2 -2
  5. package/node/bezier/bezier-curves-to-line-segs.js.map +1 -1
  6. package/node/bezier/split-into-line-segments.d.ts +1 -1
  7. package/node/bezier/split-into-line-segments.js +5 -4
  8. package/node/bezier/split-into-line-segments.js.map +1 -1
  9. package/node/generate-sdf.d.ts +21 -15
  10. package/node/generate-sdf.js +30 -26
  11. package/node/generate-sdf.js.map +1 -1
  12. package/node/index.d.ts +3 -1
  13. package/node/index.js +3 -1
  14. package/node/index.js.map +1 -1
  15. package/node/main-program.d.ts +1 -1
  16. package/node/main-program.js +3 -3
  17. package/node/main-program.js.map +1 -1
  18. package/node/prepare-buffers.d.ts +1 -1
  19. package/node/prepare-buffers.js +6 -8
  20. package/node/prepare-buffers.js.map +1 -1
  21. package/node/shaders/fragment.d.ts +2 -0
  22. package/node/shaders/{main.fragment.js → fragment.js} +5 -4
  23. package/node/shaders/fragment.js.map +1 -0
  24. package/node/shaders/vertex.d.ts +2 -0
  25. package/node/shaders/{main.vertex.js → vertex.js} +9 -6
  26. package/node/shaders/vertex.js.map +1 -0
  27. package/node/types/gl-context.d.ts +0 -1
  28. package/node/types/program.d.ts +2 -0
  29. package/node/utils/calc-circs.js.map +1 -1
  30. package/node/utils/clip-line-segment-to-grid.d.ts +1 -1
  31. package/node/utils/clip-line-segment-to-grid.js +1 -4
  32. package/node/utils/clip-line-segment-to-grid.js.map +1 -1
  33. package/node/utils/clip-line-segment-to-strips.d.ts +2 -3
  34. package/node/utils/clip-line-segment-to-strips.js +5 -57
  35. package/node/utils/clip-line-segment-to-strips.js.map +1 -1
  36. package/node/utils/find-close-cells.js +14 -70
  37. package/node/utils/find-close-cells.js.map +1 -1
  38. package/node/utils/find-crossing-cells.js +0 -15
  39. package/node/utils/find-crossing-cells.js.map +1 -1
  40. package/node/utils/jump-idx.js +20 -18
  41. package/node/utils/jump-idx.js.map +1 -1
  42. package/node/utils/seg-box-x.js +27 -17
  43. package/node/utils/seg-box-x.js.map +1 -1
  44. package/node/webgl-utils/free-gl-context.d.ts +3 -0
  45. package/node/webgl-utils/free-gl-context.js +26 -0
  46. package/node/webgl-utils/free-gl-context.js.map +1 -0
  47. package/node/webgl-utils/{get-gl-context.d.ts → get-web-gl-context.d.ts} +2 -2
  48. package/node/webgl-utils/{get-gl-context.js → get-web-gl-context.js} +7 -10
  49. package/node/webgl-utils/get-web-gl-context.js.map +1 -0
  50. package/node/webgl-utils/set-attribute.js +1 -1
  51. package/node/webgl-utils/set-attribute.js.map +1 -1
  52. package/node/webgl-utils/set-uniform-block.js +1 -3
  53. package/node/webgl-utils/set-uniform-block.js.map +1 -1
  54. package/node/webgl-utils/use-program.js +13 -3
  55. package/node/webgl-utils/use-program.js.map +1 -1
  56. package/package.json +3 -3
  57. package/src/bezier/bezier-curves-to-line-segs.ts +2 -3
  58. package/src/bezier/split-into-line-segments.ts +7 -5
  59. package/src/generate-sdf.ts +36 -30
  60. package/src/index.ts +3 -1
  61. package/src/main-program.ts +4 -3
  62. package/src/prepare-buffers.ts +6 -8
  63. package/src/shaders/{main.fragment.ts → fragment.ts} +4 -3
  64. package/src/shaders/{main.vertex.ts → vertex.ts} +8 -5
  65. package/src/types/gl-context.ts +0 -1
  66. package/src/types/program.ts +2 -0
  67. package/src/utils/calc-circs.ts +0 -2
  68. package/src/utils/clip-line-segment-to-grid.ts +1 -5
  69. package/src/utils/clip-line-segment-to-strips.ts +6 -73
  70. package/src/utils/find-close-cells.ts +27 -87
  71. package/src/utils/find-crossing-cells.ts +1 -18
  72. package/src/utils/jump-idx.ts +25 -20
  73. package/src/utils/seg-box-x.ts +30 -17
  74. package/src/webgl-utils/free-gl-context.ts +35 -0
  75. package/src/webgl-utils/{get-gl-context.ts → get-web-gl-context.ts} +6 -9
  76. package/src/webgl-utils/set-attribute.ts +1 -1
  77. package/src/webgl-utils/set-uniform-block.ts +1 -3
  78. package/src/webgl-utils/use-program.ts +14 -3
  79. package/node/debug-shaders.d.ts +0 -9
  80. package/node/shaders/main.fragment.d.ts +0 -2
  81. package/node/shaders/main.fragment.js.map +0 -1
  82. package/node/shaders/main.vertex.d.ts +0 -2
  83. package/node/shaders/main.vertex.js.map +0 -1
  84. package/node/types/strip.d.ts +0 -8
  85. package/node/types/strip.js +0 -2
  86. package/node/types/strip.js.map +0 -1
  87. package/node/utils/create-empty-strips.d.ts +0 -7
  88. package/node/utils/create-empty-strips.js +0 -16
  89. package/node/utils/create-empty-strips.js.map +0 -1
  90. package/node/utils/distance-seg-to-p.d.ts +0 -5
  91. package/node/utils/distance-seg-to-p.js +0 -35
  92. package/node/utils/distance-seg-to-p.js.map +0 -1
  93. package/node/webgl-utils/get-gl-context.js.map +0 -1
  94. package/node/webgl2.d.ts +0 -2
  95. package/src/types/strip.ts +0 -11
  96. package/src/utils/create-empty-strips.ts +0 -21
@@ -5,20 +5,19 @@ import { createEmptyGrid } from './utils/create-empty-grid.js';
5
5
  import { findCrossingCells } from './utils/find-crossing-cells.js';
6
6
  import { TEX_WIDTH } from './tex-width.js';
7
7
  import { ROW_COUNT } from './row-count.js';
8
- import { createEmptyStrips } from './utils/create-empty-strips.js';
9
8
  import { clipLineSegmentToStrips } from './utils/clip-line-segment-to-strips.js';
10
9
  import { mapToViewbox } from './utils/map-to-viewbox.js';
11
- // import { sum } from './utils/sum.js';
12
- function prepareBuffers(psss, width, height, colCount, cellSize, maxDistance, padCount, resolution = 0.5, viewbox = [0, 0, width, height], stretch = 1) {
10
+ // import { sum } from './utils/sum.js'; // testing
11
+ function prepareBuffers(psss, width, height, colCount, cellSize, maxDistance, padCount, viewbox = [0, 0, width, height], stretch = 1) {
13
12
  ////////////////////////////////////////////////////////////////////////////
14
13
  const psss_ = mapToViewbox(viewbox, width, height / stretch, psss);
15
- const lineSegs = bezierCurvesToLineSegs(psss_, resolution);
14
+ const lineSegs = bezierCurvesToLineSegs(psss_);
16
15
  const grid = createEmptyGrid(colCount, padCount);
17
- const strips = createEmptyStrips();
16
+ const strips = new Array(ROW_COUNT).fill(undefined).map(v => []);
18
17
  for (let i = 0; i < lineSegs.length; i++) {
19
18
  const seg = lineSegs[i];
20
19
  // Split the line segment into multiple segments that fit within grid cells
21
- clipLineSegmentToGrid(grid, width, height, colCount, cellSize, seg, padCount); // add segments to grid
20
+ clipLineSegmentToGrid(grid, width, height, cellSize, seg, padCount); // add segments to grid
22
21
  clipLineSegmentToStrips(strips, height, seg); // add segments to strips
23
22
  }
24
23
  findCloseCells(grid, colCount, cellSize, maxDistance, padCount); // add close cells
@@ -71,8 +70,7 @@ function prepareBuffers(psss, width, height, colCount, cellSize, maxDistance, pa
71
70
  // Add line segs from strips
72
71
  const segIdxs_PerStrip_Range = [];
73
72
  for (let i = 0; i < ROW_COUNT; i++) {
74
- const strip = strips[i];
75
- const { lineSegs } = strip;
73
+ const lineSegs = strips[i];
76
74
  //////////
77
75
  const L = lineSegs.length;
78
76
  segIdxs_PerStrip_Range.push([S3, L]);
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-buffers.js","sourceRoot":"","sources":["../src/prepare-buffers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prepare-buffers.js","sourceRoot":"","sources":["../src/prepare-buffers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare function getFragment(colCount: number, padCount: number): string;
2
+ export { getFragment };
@@ -1,6 +1,6 @@
1
1
  import { ROW_COUNT } from "../row-count.js";
2
2
  const cache = {};
3
- function getMainFragment(colCount, padCount) {
3
+ function getFragment(colCount, padCount) {
4
4
  const fragment = cache[1024 * colCount + padCount];
5
5
  if (fragment !== undefined) {
6
6
  return fragment;
@@ -132,7 +132,8 @@ void main() {
132
132
  ///////////////////////////////////////////////////////////////////////////
133
133
 
134
134
  // DEBUG!
135
- float alpha = ((instanceId + instanceId/${ROW_COUNT}) % 2 == 0 ? 0.3 : 0.5);
135
+ // float alpha = ((instanceId + instanceId/${ROW_COUNT}) % 2 == 0 ? 0.3 : 0.5);
136
+ float alpha = res == 1.0 ? 0.0 : 0.5;
136
137
 
137
138
  float red = inside ? 0.2 : 0.8;
138
139
  float green = abs(sin(50.0 * res));
@@ -145,5 +146,5 @@ void main() {
145
146
  cache[1024 * colCount + padCount] = main_Fragment;
146
147
  return main_Fragment;
147
148
  }
148
- export { getMainFragment };
149
- //# sourceMappingURL=main.fragment.js.map
149
+ export { getFragment };
150
+ //# sourceMappingURL=fragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fragment.js","sourceRoot":"","sources":["../../src/shaders/fragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,MAAM,KAAK,GAAkD,EAAE,CAAC;AAGhE,SAAS,WAAW,CACZ,QAAgB,EAChB,QAAgB;IAEpB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,GAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;IACjD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAAC,OAAO,QAAQ,CAAC;IAAC,CAAC;IAEpD,MAAM,aAAa;IACnB,QAAQ,CAAA;;;;;;;;;;;;gCAYwB,CAAC,SAAS,GAAG,CAAC,GAAC,QAAQ,CAAC,GAAC,CAAC,QAAQ,GAAG,CAAC,GAAC,QAAQ,CAAC,GAAG,CAAC;;;iCAGnD,SAAS,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAuDR,SAAS;;kEAEmB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAsD1B,SAAS;;;;;;;;;;CAUzD,CAAA;IAEG,KAAK,CAAC,IAAI,GAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,aAAa,CAAC;IAChD,OAAO,aAAa,CAAC;AACzB,CAAC;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const vertex = "#version 300 es\n\nprecision highp float;\n\nuniform vec2 uWidthHeight;\nuniform vec2 uOffset;\nin vec2 aUV;\nin ivec2 aCloseCellIdxRangePerCell;\nin ivec2 aCrossIdxRangePerCell;\nout vec2 vXY;\nflat out int instanceId;\nflat out ivec2 closeCellIdxRange;\nflat out ivec2 crossCellIdxRange;\n\n\nvoid main() {\n instanceId = gl_InstanceID;\n closeCellIdxRange = aCloseCellIdxRangePerCell;\n crossCellIdxRange = aCrossIdxRangePerCell;\n\n // drawn column-by-column\n float i = float(instanceId / 32); // column index\n float j = float(instanceId % 32); // row index\n\n vec2 trans = vec2(\n i / float(32),\n j / float(32)\n );\n\n vec2 uv = aUV + trans;\n\n float width = uWidthHeight.x;\n float height = uWidthHeight.y;\n\n vXY = vec2(\n height * uv.x,\n height * uv.y\n );\n\n float aspectRatio = width / height;\n\n float x = (uOffset.x / 2.0*width) - 1.0;\n float y = (uOffset.y / 2.0*height) - 1.0;\n\n gl_Position = vec4(\n vec2(\n (2.0*(uv.x / aspectRatio) - 1.0),\n (2.0*uv.y - 1.0)\n ) + vec2(x,y),\n 0.0, 1.0\n );\n}\n";
2
+ export { vertex };
@@ -1,10 +1,10 @@
1
1
  import { ROW_COUNT } from "../row-count.js";
2
- const main_Vertex = /*glsl*/ `#version 300 es
2
+ const vertex = /*glsl*/ `#version 300 es
3
3
 
4
4
  precision highp float;
5
5
 
6
6
  uniform vec2 uWidthHeight;
7
- uniform float uStretch;
7
+ uniform vec2 uOffset;
8
8
  in vec2 aUV;
9
9
  in ivec2 aCloseCellIdxRangePerCell;
10
10
  in ivec2 aCrossIdxRangePerCell;
@@ -40,14 +40,17 @@ void main() {
40
40
 
41
41
  float aspectRatio = width / height;
42
42
 
43
+ float x = (uOffset.x / 2.0*width) - 1.0;
44
+ float y = (uOffset.y / 2.0*height) - 1.0;
45
+
43
46
  gl_Position = vec4(
44
47
  vec2(
45
48
  (2.0*(uv.x / aspectRatio) - 1.0),
46
- 2.0*uv.y - 1.0
47
- ),
49
+ (2.0*uv.y - 1.0)
50
+ ) + vec2(x,y),
48
51
  0.0, 1.0
49
52
  );
50
53
  }
51
54
  `;
52
- export { main_Vertex };
53
- //# sourceMappingURL=main.vertex.js.map
55
+ export { vertex };
56
+ //# sourceMappingURL=vertex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertex.js","sourceRoot":"","sources":["../../src/shaders/vertex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,MAAM,GAAG,QAAQ,CAAA;;;;;;;;;;;;;;;;;;;;;mCAqBY,SAAS;mCACT,SAAS;;;oBAGxB,SAAS;oBACT,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B5B,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -22,7 +22,6 @@ interface GlContext {
22
22
  readonly programs: {
23
23
  [index: string]: Program;
24
24
  };
25
- readonly framebufferStack: WebGLFramebuffer[];
26
25
  readonly onContextLoss: () => void;
27
26
  }
28
27
  export type { GlContext };
@@ -12,5 +12,7 @@ interface Program {
12
12
  readonly uniformBlocks: {
13
13
  [index: string]: UniformBlock;
14
14
  };
15
+ readonly vertexShader: WebGLShader;
16
+ readonly fragmentShader: WebGLShader;
15
17
  }
16
18
  export { Program };
@@ -1 +1 @@
1
- {"version":3,"file":"calc-circs.js","sourceRoot":"","sources":["../../src/utils/calc-circs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calc-circs.js","sourceRoot":"","sources":["../../src/utils/calc-circs.ts"],"names":[],"mappings":"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"}
@@ -10,5 +10,5 @@ import type { Cell } from "../types/cell.js";
10
10
  * @param height
11
11
  * @param seg the line segment (array of 2 points)
12
12
  */
13
- declare function clipLineSegmentToGrid(grid: Cell[][], width: number, height: number, colCount: number, cellSize: number, seg: number[][], padCount: number): void;
13
+ declare function clipLineSegmentToGrid(grid: Cell[][], width: number, height: number, cellSize: number, seg: number[][], padCount: number): void;
14
14
  export { clipLineSegmentToGrid };
@@ -11,14 +11,11 @@ const { floor, ceil } = Math;
11
11
  * @param height
12
12
  * @param seg the line segment (array of 2 points)
13
13
  */
14
- function clipLineSegmentToGrid(grid, width, height, colCount, cellSize, seg, padCount) {
15
- /** `cellSize` *must* be a power of two */
16
- // const cellSize = width/ROW_COUNT;
14
+ function clipLineSegmentToGrid(grid, width, height, cellSize, seg, padCount) {
17
15
  const padding = cellSize * padCount;
18
16
  const [[x0, y0], [x1, y1]] = seg;
19
17
  const paddedWidth = width + padding;
20
18
  const paddedHeight = height + padding;
21
- // TODO - investigate lines on edge and corners - ps could be length 4!!
22
19
  const ps = segBoxX(seg, [[-padding, -padding], [paddedWidth, paddedHeight]]);
23
20
  const p0IsInBox = x0 > -padding && x0 < paddedWidth && y0 > -padding && y0 < paddedHeight;
24
21
  const p1IsInBox = x1 > -padding && x1 < paddedWidth && y1 > -padding && y1 < paddedHeight;
@@ -1 +1 @@
1
- {"version":3,"file":"clip-line-segment-to-grid.js","sourceRoot":"","sources":["../../src/utils/clip-line-segment-to-grid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clip-line-segment-to-grid.js","sourceRoot":"","sources":["../../src/utils/clip-line-segment-to-grid.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,12 @@
1
- import type { Strip } from "../types/strip.js";
2
1
  /**
3
2
  * Clips a line segment to strip boundaries and returns multiple segments.
4
3
  *
5
4
  * * modifies strips by adding line segments to each strip
6
5
  * * size/count *must* be a power of 2
7
6
  *
8
- * @param count the number of strips
7
+ * @param strips array of strips - each contains an array line segments
9
8
  * @param height the height of a strip
10
9
  * @param seg the line segment (array of 2 points)
11
10
  */
12
- declare function clipLineSegmentToStrips(strips: Strip[], height: number, seg: number[][]): void;
11
+ declare function clipLineSegmentToStrips(strips: number[][][][], height: number, seg: number[][]): void;
13
12
  export { clipLineSegmentToStrips };
@@ -6,7 +6,7 @@ const { floor, ceil } = Math;
6
6
  * * modifies strips by adding line segments to each strip
7
7
  * * size/count *must* be a power of 2
8
8
  *
9
- * @param count the number of strips
9
+ * @param strips array of strips - each contains an array line segments
10
10
  * @param height the height of a strip
11
11
  * @param seg the line segment (array of 2 points)
12
12
  */
@@ -66,7 +66,7 @@ function clipLineSegmentToStrips(strips, height, seg) {
66
66
  // if we're past the line endpoint
67
67
  if ((tX > 1 || dX === 0) && tY > 1) {
68
68
  const v = floor(p1[1] / cellSize);
69
- strips[v]?.lineSegs.push([[x, y], p1]);
69
+ strips[v]?.push([[x, y], p1]);
70
70
  break;
71
71
  }
72
72
  if (((xX >= 0 && (x0 !== 0 || dX !== 0)) || xY <= 0 || xY >= height)) {
@@ -81,70 +81,18 @@ function clipLineSegmentToStrips(strips, height, seg) {
81
81
  else {
82
82
  const v = fY(y / cellSize) - (btt ? 0 : 1); // previous v
83
83
  const seg_ = [[x, y], ps[i]];
84
- strips[v]?.lineSegs.push(seg_);
84
+ strips[v]?.push(seg_);
85
85
  break;
86
86
  }
87
87
  }
88
88
  // previous v
89
89
  const v = fY(y / cellSize) - (btt ? 0 : 1);
90
- strips[v]?.lineSegs.push([[x, y], [xX, xY]]);
90
+ strips[v]?.push([[x, y], [xX, xY]]);
91
91
  // update current position
92
92
  x = xX;
93
93
  y = xY;
94
94
  }
95
95
  }
96
96
  export { clipLineSegmentToStrips };
97
- // Quokka tests - https://www.desmos.com/calculator/uyqsdkviih
98
- // import { createEmptyStrips } from "./create-empty-strips";
99
- // {
100
- // const strips = createEmptyStrips(8);
101
- // const seg = [[0, 100], [0, 400]];
102
- // toDesmosStr(seg);
103
- // clipLineSegmentToStrips(strips, 512, seg);
104
- // testAllEmptyExcept(strips,[1,2,3,4,5,6]);
105
- // }
106
- // {
107
- // const strips = createEmptyStrips(8);
108
- // const seg = [[83, 166], [-90, 440]];
109
- // toDesmosStr(seg);
110
- // clipLineSegmentToStrips(strips, 512, seg);
111
- // testAllEmptyExcept(strips,[4,5,6]);
112
- // }
113
- // {
114
- // const strips = createEmptyStrips(8);
115
- // const seg = [[-570, 236], [-392, 546]];
116
- // toDesmosStr(seg);
117
- // clipLineSegmentToStrips(strips, 512, seg);
118
- // testAllEmptyExcept(strips,[3,4,5,6,7]);
119
- // }
120
- // {
121
- // const strips = createEmptyStrips(8);
122
- // const seg = [[-462, 632], [-152, 611]];
123
- // toDesmosStr(seg);
124
- // clipLineSegmentToStrips(strips, 512, seg);
125
- // testAllEmptyExcept(strips,[]);
126
- // }
127
- // function toDesmosStr(seg: number[][]) {
128
- // const [[x0,y0],[x1,y1]] = seg;
129
- // return `\\left(\\left(1-t\\right)\\cdot${x0.toFixed(2)}+t\\cdot\\left(${x1.toFixed(2)}\\right),\\left(1-t\\right)\\cdot${y0.toFixed(2)}+t\\cdot${y1.toFixed(2)}\\right)`;
130
- // }
131
- // function testAllEmptyExcept(
132
- // strips: Strip[],
133
- // exceptions: number[]) {
134
- // for (let i=0; i<strips.length; i++) {
135
- // const strip = strips[i];
136
- // const idx = exceptions.findIndex(v => v === i);
137
- // const exception = exceptions[idx];
138
- // const len = strip.lineSegs.length;
139
- // if (exception === undefined) {
140
- // if (len !== 0) {
141
- // throw new Error(`Strip ${i} must be empty`);
142
- // }
143
- // } else {
144
- // if (len !== 1) {
145
- // throw new Error(`Strip ${i} must contain 1 segments, found ${len}`);
146
- // }
147
- // }
148
- // }
149
- // }
97
+ var a = [[1, 1], [1, 1]];
150
98
  //# sourceMappingURL=clip-line-segment-to-strips.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clip-line-segment-to-strips.js","sourceRoot":"","sources":["../../src/utils/clip-line-segment-to-strips.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clip-line-segment-to-strips.js","sourceRoot":"","sources":["../../src/utils/clip-line-segment-to-strips.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import { ROW_COUNT } from "../row-count.js";
2
2
  import { circsCache } from "./calc-circs.js";
3
- import { distanceSegToP } from "./distance-seg-to-p.js";
4
3
  import { jumpIdx } from "./jump-idx.js";
5
- const { min, SQRT2 } = Math;
4
+ const { min, max, SQRT2 } = Math;
6
5
  function findCloseCells(grid, colCount, cellSize, maxDistance, padCount) {
7
6
  const findCloseCellsFor_ = findCloseCellsFor(grid, colCount, cellSize, maxDistance, padCount);
8
7
  let _minD = 0; // minimum for previous row, col 0
@@ -22,15 +21,17 @@ function findCloseCellsFor(grid, colCount, cellSize, maxDistance, padCount) {
22
21
  // reduce current circle search range since we moved one square
23
22
  let k = jumpIdx((_minD - SQRT2 * cellSize) / cellSize);
24
23
  let minD = Number.POSITIVE_INFINITY;
25
- while (k < circsCache.length) {
26
- const from = circsCache[k].from;
24
+ while (true) {
25
+ if (k >= circsCache.length) {
26
+ minD = cellSize * (circsCache[circsCache.length - 1].from - SQRT2);
27
+ break;
28
+ }
29
+ const { u, v, from } = circsCache[k];
27
30
  // `SQRT2` to account for diagonal
28
31
  if (cellSize * from > maxDistance + SQRT2 * cellSize) {
32
+ minD = cellSize * (from - 2 * SQRT2);
29
33
  break;
30
34
  }
31
- // uncomment loop below to search all equidistant squares
32
- // while (circsCache?.[k].from === from) {
33
- const { u, v } = circsCache[k];
34
35
  const u_ = u + i;
35
36
  const v_ = v + j;
36
37
  if (u_ < 0 || u_ >= colCount + 2 * padCount ||
@@ -39,29 +40,18 @@ function findCloseCellsFor(grid, colCount, cellSize, maxDistance, padCount) {
39
40
  continue;
40
41
  }
41
42
  const { lineSegs } = grid[u_][v_];
42
- for (let l = 0; l < lineSegs.length; l++) {
43
- // center of square
44
- const c = [(i - padCount + 0.5) * cellSize, (j - padCount + 0.5) * cellSize];
45
- const d = distanceSegToP(lineSegs[l], c);
46
- if (d < minD) {
47
- minD = d;
48
- }
49
- }
50
- k++;
51
- // }
52
- if (minD !== Number.POSITIVE_INFINITY) {
43
+ if (lineSegs.length > 0) {
44
+ minD = cellSize * (from - SQRT2);
53
45
  break;
54
46
  }
55
- }
56
- if (minD === Number.POSITIVE_INFINITY) {
57
- return min(maxDistance + SQRT2 * cellSize, cellSize * circsCache[circsCache.length - 1].from);
47
+ k++;
58
48
  }
59
49
  const { closeCells } = grid[i][j];
60
- let l = jumpIdx((_minD - 2 * SQRT2 * cellSize) / cellSize);
50
+ let l = max(0, k - 1);
61
51
  while (l < circsCache.length) {
62
52
  const { from, u, v } = circsCache[l];
63
- // `SQRT2` to account for diagonal
64
- if (cellSize * from > min(minD, maxDistance) + SQRT2 * cellSize) {
53
+ // `SQRT2` to account for diagonal (times 2 since we minused it off earlier)
54
+ if (cellSize * from > min(minD, maxDistance) + 2 * SQRT2 * cellSize) {
65
55
  break;
66
56
  }
67
57
  const u_ = u + i;
@@ -81,50 +71,4 @@ function findCloseCellsFor(grid, colCount, cellSize, maxDistance, padCount) {
81
71
  };
82
72
  }
83
73
  export { findCloseCells };
84
- // Quokka tests
85
- // const grid: Cell[][] = [
86
- // [
87
- // { u: 0, v: 0, lineSegs: [], closeCells: [], crossingCells: [] },
88
- // { u: 0, v: 1, lineSegs: [], closeCells: [], crossingCells: [] },
89
- // { u: 0, v: 2, lineSegs: [], closeCells: [], crossingCells: [] },
90
- // { u: 0, v: 3, lineSegs: [], closeCells: [], crossingCells: [] }
91
- // ],
92
- // [
93
- // { u: 1, v: 0, lineSegs: [], closeCells: [], crossingCells: [] },
94
- // {
95
- // u: 1, v: 1,
96
- // lineSegs: [[[175, 163], [175, 355]]],
97
- // closeCells: [], crossingCells: []
98
- // },
99
- // {
100
- // u: 1, v: 2,
101
- // lineSegs: [[[175, 355], [335, 355]]],
102
- // closeCells: [], crossingCells: []
103
- // },
104
- // { u: 1, v: 3, lineSegs: [], closeCells: [], crossingCells: [] }
105
- // ],
106
- // [
107
- // { u: 2, v: 0, lineSegs: [], closeCells: [], crossingCells: [] },
108
- // {
109
- // u: 2, v: 1,
110
- // lineSegs: [[[335, 163], [175, 163]]],
111
- // closeCells: [], crossingCells: []
112
- // },
113
- // {
114
- // u: 2, v: 2,
115
- // lineSegs: [[[335, 355], [335, 163]]],
116
- // closeCells: [], crossingCells: []
117
- // },
118
- // { u: 2, v: 3, lineSegs: [], closeCells: [], crossingCells: [] }
119
- // ],
120
- // [
121
- // { u: 3, v: 0, lineSegs: [], closeCells: [], crossingCells: [] },
122
- // { u: 3, v: 1, lineSegs: [], closeCells: [], crossingCells: [] },
123
- // { u: 3, v: 2, lineSegs: [], closeCells: [], crossingCells: [] },
124
- // { u: 3, v: 3, lineSegs: [], closeCells: [], crossingCells: [] }
125
- // ]
126
- // ];
127
- // findCloseCells(grid);
128
- // const v = grid.map(cells => cells.map(c => ({ u: c.u, v: c.v, closeCells: c.closeCells })));
129
- // v;//?
130
74
  //# sourceMappingURL=find-close-cells.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-close-cells.js","sourceRoot":"","sources":["../../src/utils/find-close-cells.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-close-cells.js","sourceRoot":"","sources":["../../src/utils/find-close-cells.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,4 @@
1
1
  import { ROW_COUNT } from "../row-count.js";
2
- // TODO - simplify?
3
- // TODO - could be made much faster by also checking intersections here
4
- // and passing the result to the next cell
5
2
  function findCrossingCells(grid, colCount, padCount) {
6
3
  for (let i = padCount; i < colCount + padCount; i++) {
7
4
  for (let j = padCount; j < ROW_COUNT + padCount; j++) {
@@ -16,16 +13,4 @@ function findCrossingCells(grid, colCount, padCount) {
16
13
  }
17
14
  }
18
15
  export { findCrossingCells };
19
- // Quokka tests
20
- // import { createEmptyGrid } from "./create-empty-grid";
21
- // // const g = createEmptyGrid(0);
22
- // const g = createEmptyGrid(0);
23
- // // g[0][0].lineSegs.push([[]]);
24
- // g[2][0].lineSegs.push([[]]);
25
- // g[2][2].lineSegs.push([[]]);
26
- // findCrossingCells(g);
27
- // let r = 2;
28
- // // g.map(r => r.map(c => c.crossingCells))[r].map(v => v);//?
29
- // g.map(r => r.map(c => c.crossingCells))[r].map(v => v.map(r => r[1]));//?
30
- // g;//?
31
16
  //# sourceMappingURL=find-crossing-cells.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-crossing-cells.js","sourceRoot":"","sources":["../../src/utils/find-crossing-cells.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,mBAAmB;AACnB,uEAAuE;AACvE,0CAA0C;AAC1C,SAAS,iBAAiB,CAClB,IAAc,EACd,QAAgB,EAChB,QAAgB;IAEpB,KAAK,IAAI,CAAC,GAAC,QAAQ,EAAE,CAAC,GAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAC,QAAQ,EAAE,CAAC,GAAC,SAAS,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAEpC,KAAK,IAAI,CAAC,GAAC,QAAQ,EAAE,CAAC,IAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACnD,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,GAAC,QAAQ,CAAC,GAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAGD,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAG5B,eAAe;AACf,yDAAyD;AACzD,mCAAmC;AACnC,gCAAgC;AAChC,kCAAkC;AAClC,+BAA+B;AAC/B,+BAA+B;AAC/B,wBAAwB;AACxB,aAAa;AACb,gEAAgE;AAChE,4EAA4E;AAC5E,QAAQ"}
1
+ {"version":3,"file":"find-crossing-cells.js","sourceRoot":"","sources":["../../src/utils/find-crossing-cells.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,SAAS,iBAAiB,CAClB,IAAc,EACd,QAAgB,EAChB,QAAgB;IAEpB,KAAK,IAAI,CAAC,GAAC,QAAQ,EAAE,CAAC,GAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAC,QAAQ,EAAE,CAAC,GAAC,SAAS,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAEpC,KAAK,IAAI,CAAC,GAAC,QAAQ,EAAE,CAAC,IAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACnD,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,GAAC,QAAQ,CAAC,GAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAGD,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { circsCache } from "./calc-circs.js";
2
- const { trunc, max, E } = Math;
2
+ const { max, E } = Math;
3
3
  /**
4
4
  * @param v
5
5
  */
@@ -8,10 +8,9 @@ function binarySearchRange(v) {
8
8
  let max = circsCache.length - 1;
9
9
  let mid = 0;
10
10
  while (min <= max) {
11
- mid = (min + max) >>> 1; //?
11
+ mid = (min + max) >>> 1;
12
12
  const midVal = circsCache[mid].from;
13
13
  if (midVal === v) {
14
- // return [min,mid,max];
15
14
  return mid;
16
15
  }
17
16
  else if (v > midVal) {
@@ -21,9 +20,19 @@ function binarySearchRange(v) {
21
20
  max = mid - 1;
22
21
  }
23
22
  }
24
- // return [min,mid,max];
25
23
  return mid;
26
24
  }
25
+ function jumpIdx(c) {
26
+ let idx = binarySearchRange(c);
27
+ c = max(0, c);
28
+ if (idx === 0) {
29
+ return 0;
30
+ }
31
+ while (circsCache[idx].from === circsCache[idx - 1].from) {
32
+ idx--;
33
+ }
34
+ return idx;
35
+ }
27
36
  // const [Q,R] = [10.606601717798213, 35.531676008879735];
28
37
  // const [A1,B1,F1] = [102.42126, 0.153169, -117.56077];
29
38
  // const [A2,B2,C2,D2,F2] = [-0.000660087, 0.388148, 841.25744, -0.0529616, -1089.49916];
@@ -43,25 +52,18 @@ function binarySearchRange(v) {
43
52
  // while (circsCache[idx + 1].from < c) { idx++; }
44
53
  // return idx;
45
54
  // }
46
- function jumpIdx(c) {
47
- let idx = binarySearchRange(c);
48
- c = max(0, c);
49
- while (idx !== 0 && circsCache[idx].from >= c) {
50
- idx--;
51
- }
52
- while (idx < circsCache.length - 2 && circsCache[idx + 1].from < c) {
53
- idx++;
54
- }
55
- return idx;
56
- }
57
55
  export { jumpIdx };
58
56
  // Quokka tests
59
- // // circsCache.slice(0,30).map(c => c.from);//?
57
+ // circsCache.slice(0,10);//?
58
+ // circsCache.slice(0,30).map(c => c.from);//?
59
+ // circsCache[5].from;//?
60
60
  // circsCache[12].from;//?
61
61
  // circsCache[15].from;//?
62
62
  // // circsCache.length;//?
63
- // // jumpIdxOld(1.5811388300841898);//?
64
- // jumpIdx(0.5);//?
63
+ // jumpIdxOld(1.5811388300841898);//?
64
+ // const v = (53.08771209782213 - Math.SQRT2*24.09375)/24.09375;//?
65
+ // jumpIdx(v);//?
66
+ // circsCache[8].from;//?
65
67
  // binarySearchRange(1.5811388300841898);//?
66
68
  // jumpIdxOld(3.7);//?
67
69
  // jumpIdx(3.7);//?
@@ -1 +1 @@
1
- {"version":3,"file":"jump-idx.js","sourceRoot":"","sources":["../../src/utils/jump-idx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;AAG/B;;GAEG;AACH,SAAS,iBAAiB,CAClB,CAAS;IAEb,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAEhC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QAChB,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA,GAAG;QAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACpC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACf,wBAAwB;YACxB,OAAO,GAAG,CAAC;QACf,CAAC;aAAM,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC;YACpB,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACJ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;IACL,CAAC;IAED,wBAAwB;IACxB,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,0DAA0D;AAC1D,wDAAwD;AACxD,yFAAyF;AACzF,yFAAyF;AACzF,uBAAuB;AACvB,uBAAuB;AAEvB,uBAAuB;AACvB,kEAAkE;AAClE,4EAA4E;AAC5E,sBAAsB;AACtB,gCAAgC;AAChC,mBAAmB;AACnB,kDAAkD;AAClD,oDAAoD;AAEpD,qBAAqB;AACrB,kDAAkD;AAClD,sDAAsD;AAEtD,kBAAkB;AAClB,IAAI;AAGJ,SAAS,OAAO,CACR,CAAS;IAEb,IAAI,GAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAE/B,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACd,OAAO,GAAG,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;QAAC,GAAG,EAAE,CAAC;IAAC,CAAC;IACzD,OAAO,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAAC,GAAG,EAAE,CAAC;IAAC,CAAC;IAE9E,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,OAAO,EAAE,OAAO,EAAE,CAAA;AAGlB,eAAe;AACf,iDAAiD;AACjD,0BAA0B;AAC1B,0BAA0B;AAC1B,2BAA2B;AAE3B,wCAAwC;AACxC,mBAAmB;AACnB,4CAA4C;AAG5C,sBAAsB;AACtB,mBAAmB;AACnB,gCAAgC;AAEhC,oBAAoB;AACpB,iBAAiB;AACjB,8BAA8B;AAE9B,uBAAuB;AACvB,oBAAoB;AACpB,iCAAiC;AAEjC,uBAAuB;AACvB,oBAAoB;AACpB,iCAAiC;AAEjC,wBAAwB;AACxB,qBAAqB;AACrB,4BAA4B"}
1
+ {"version":3,"file":"jump-idx.js","sourceRoot":"","sources":["../../src/utils/jump-idx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;AAGxB;;GAEG;AACH,SAAS,iBAAiB,CAClB,CAAS;IAEb,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAEhC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QAChB,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACpC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACf,OAAO,GAAG,CAAC;QACf,CAAC;aAAM,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC;YACpB,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACJ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,SAAS,OAAO,CACR,CAAS;IAEb,IAAI,GAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAE/B,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACd,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IAE5B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,GAAG,EAAE,CAAC;IACV,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,0DAA0D;AAC1D,wDAAwD;AACxD,yFAAyF;AACzF,yFAAyF;AACzF,uBAAuB;AACvB,uBAAuB;AAEvB,uBAAuB;AACvB,kEAAkE;AAClE,4EAA4E;AAC5E,sBAAsB;AACtB,gCAAgC;AAChC,mBAAmB;AACnB,kDAAkD;AAClD,oDAAoD;AAEpD,qBAAqB;AACrB,kDAAkD;AAClD,sDAAsD;AAEtD,kBAAkB;AAClB,IAAI;AAGJ,OAAO,EAAE,OAAO,EAAE,CAAA;AAGlB,eAAe;AACf,6BAA6B;AAC7B,8CAA8C;AAC9C,yBAAyB;AACzB,0BAA0B;AAC1B,0BAA0B;AAC1B,2BAA2B;AAE3B,qCAAqC;AACrC,mEAAmE;AACnE,iBAAiB;AACjB,yBAAyB;AACzB,4CAA4C;AAG5C,sBAAsB;AACtB,mBAAmB;AACnB,gCAAgC;AAEhC,oBAAoB;AACpB,iBAAiB;AACjB,8BAA8B;AAE9B,uBAAuB;AACvB,oBAAoB;AACpB,iCAAiC;AAEjC,uBAAuB;AACvB,oBAAoB;AACpB,iCAAiC;AAEjC,wBAAwB;AACxB,qBAAqB;AACrB,4BAA4B"}