occt-wasm 5.4.1 → 5.5.1
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.
- package/dist/font5x7.d.ts +16 -0
- package/dist/font5x7.d.ts.map +1 -0
- package/dist/font5x7.js +65 -0
- package/dist/font5x7.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -1
- package/dist/index.js.map +1 -1
- package/dist/occt-wasm.js +1 -1
- package/dist/occt-wasm.wasm +0 -0
- package/dist/png.d.ts +41 -0
- package/dist/png.d.ts.map +1 -0
- package/dist/png.js +400 -0
- package/dist/png.js.map +1 -0
- package/dist/svg.d.ts +9 -47
- package/dist/svg.d.ts.map +1 -1
- package/dist/svg.js +20 -216
- package/dist/svg.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -1
- package/dist/views.d.ts +152 -0
- package/dist/views.d.ts.map +1 -0
- package/dist/views.js +256 -0
- package/dist/views.js.map +1 -0
- package/package.json +1 -1
package/dist/views.js
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View geometry shared by every renderer: projection, panel layout, and the
|
|
3
|
+
* drawing primitives a backend has to put on the page.
|
|
4
|
+
*
|
|
5
|
+
* `svg.ts` and `png.ts` both consume this. Keeping it separate is what makes
|
|
6
|
+
* the two outputs agree by construction rather than by two copies of the same
|
|
7
|
+
* arithmetic: a panel is laid out once, and each backend only decides how to
|
|
8
|
+
* put a polyline, a label and a background on its own canvas.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
const ORIGIN = { x: 0, y: 0, z: 0 };
|
|
13
|
+
// Screen-up is (-dir) x sx: with the viewer on the -dir side, (sx, sy, -dir) is
|
|
14
|
+
// right-handed, so the panel is a true view rather than a mirror image.
|
|
15
|
+
function basis(dir, sx) {
|
|
16
|
+
return { dir, sx, sy: cross(neg(dir), sx) };
|
|
17
|
+
}
|
|
18
|
+
export function basisFor(view) {
|
|
19
|
+
switch (view) {
|
|
20
|
+
case "front":
|
|
21
|
+
return basis(v(0, 1, 0), v(1, 0, 0));
|
|
22
|
+
case "back":
|
|
23
|
+
return basis(v(0, -1, 0), v(-1, 0, 0));
|
|
24
|
+
case "top":
|
|
25
|
+
return basis(v(0, 0, -1), v(1, 0, 0));
|
|
26
|
+
case "bottom":
|
|
27
|
+
return basis(v(0, 0, 1), v(1, 0, 0));
|
|
28
|
+
case "right":
|
|
29
|
+
return basis(v(-1, 0, 0), v(0, 1, 0));
|
|
30
|
+
case "left":
|
|
31
|
+
return basis(v(1, 0, 0), v(0, -1, 0));
|
|
32
|
+
case "iso":
|
|
33
|
+
// Camera in the +X+Y+Z octant looking at the origin with +Z up, so
|
|
34
|
+
// +X runs to the lower left and +Y to the lower right.
|
|
35
|
+
return basis(normalize(v(-1, -1, -1)), normalize(v(-1, 1, 0)));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export const VIEW_LABEL = {
|
|
39
|
+
front: "Front",
|
|
40
|
+
back: "Back",
|
|
41
|
+
top: "Top",
|
|
42
|
+
bottom: "Bottom",
|
|
43
|
+
left: "Left",
|
|
44
|
+
right: "Right",
|
|
45
|
+
iso: "Iso",
|
|
46
|
+
};
|
|
47
|
+
// --- vector helpers ---------------------------------------------------------
|
|
48
|
+
function v(x, y, z) {
|
|
49
|
+
return { x, y, z };
|
|
50
|
+
}
|
|
51
|
+
function dot(a, b) {
|
|
52
|
+
return a.x * b.x + a.y * b.y + a.z * b.z;
|
|
53
|
+
}
|
|
54
|
+
function cross(a, b) {
|
|
55
|
+
return {
|
|
56
|
+
x: a.y * b.z - a.z * b.y,
|
|
57
|
+
y: a.z * b.x - a.x * b.z,
|
|
58
|
+
z: a.x * b.y - a.y * b.x,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function neg(a) {
|
|
62
|
+
return { x: -a.x, y: -a.y, z: -a.z };
|
|
63
|
+
}
|
|
64
|
+
function normalize(a) {
|
|
65
|
+
const len = Math.hypot(a.x, a.y, a.z) || 1;
|
|
66
|
+
return { x: a.x / len, y: a.y / len, z: a.z / len };
|
|
67
|
+
}
|
|
68
|
+
const PROJECTION_FIELDS = [
|
|
69
|
+
"visibleOutline",
|
|
70
|
+
"visibleSmooth",
|
|
71
|
+
"visibleSharp",
|
|
72
|
+
"hiddenOutline",
|
|
73
|
+
"hiddenSmooth",
|
|
74
|
+
"hiddenSharp",
|
|
75
|
+
];
|
|
76
|
+
export function collectEdges(kernel, shape, viewBasis, deflection) {
|
|
77
|
+
// HLR puts the viewer on the +Z side of the gp_Ax2 it projects with, so the
|
|
78
|
+
// direction it gets is the view-plane normal toward the camera, -dir. The
|
|
79
|
+
// result comes back in that frame: x along sx, y along (-dir) x sx, which
|
|
80
|
+
// is sy, and z always 0. The in-plane coordinates are the screen
|
|
81
|
+
// coordinates as they stand.
|
|
82
|
+
const proj = kernel.projectEdges(shape, ORIGIN, neg(viewBasis.dir), viewBasis.sx);
|
|
83
|
+
try {
|
|
84
|
+
const toLines = (h) => {
|
|
85
|
+
if (Number(h) === 0)
|
|
86
|
+
return [];
|
|
87
|
+
const { points, edgeGroups } = kernel.wireframe(h, deflection);
|
|
88
|
+
const lines = [];
|
|
89
|
+
for (let g = 0; g < edgeGroups.length; g += 3) {
|
|
90
|
+
const start = edgeGroups[g];
|
|
91
|
+
const count = edgeGroups[g + 1];
|
|
92
|
+
const line = [];
|
|
93
|
+
for (let i = 0; i < count; i += 3) {
|
|
94
|
+
line.push(points[start + i], points[start + i + 1]);
|
|
95
|
+
}
|
|
96
|
+
if (line.length >= 4)
|
|
97
|
+
lines.push(line);
|
|
98
|
+
}
|
|
99
|
+
return lines;
|
|
100
|
+
};
|
|
101
|
+
return {
|
|
102
|
+
visible: [
|
|
103
|
+
...toLines(proj.visibleOutline),
|
|
104
|
+
...toLines(proj.visibleSmooth),
|
|
105
|
+
...toLines(proj.visibleSharp),
|
|
106
|
+
],
|
|
107
|
+
hidden: [
|
|
108
|
+
...toLines(proj.hiddenOutline),
|
|
109
|
+
...toLines(proj.hiddenSmooth),
|
|
110
|
+
...toLines(proj.hiddenSharp),
|
|
111
|
+
],
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
for (const field of PROJECTION_FIELDS) {
|
|
116
|
+
const h = proj[field];
|
|
117
|
+
if (Number(h) !== 0)
|
|
118
|
+
kernel.release(h);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
export function extentOf(views) {
|
|
123
|
+
let minU = Infinity;
|
|
124
|
+
let maxU = -Infinity;
|
|
125
|
+
let minV = Infinity;
|
|
126
|
+
let maxV = -Infinity;
|
|
127
|
+
for (const view of views) {
|
|
128
|
+
for (const line of [...view.visible, ...view.hidden]) {
|
|
129
|
+
for (let i = 0; i < line.length; i += 2) {
|
|
130
|
+
const u = line[i];
|
|
131
|
+
const vv = line[i + 1];
|
|
132
|
+
if (u < minU)
|
|
133
|
+
minU = u;
|
|
134
|
+
if (u > maxU)
|
|
135
|
+
maxU = u;
|
|
136
|
+
if (vv < minV)
|
|
137
|
+
minV = vv;
|
|
138
|
+
if (vv > maxV)
|
|
139
|
+
maxV = vv;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (!Number.isFinite(minU))
|
|
144
|
+
return { minU: 0, maxU: 0, minV: 0, maxV: 0 };
|
|
145
|
+
return { minU, maxU, minV, maxV };
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Build a view→pixel mapping for one panel. All panels share `scale` (so the
|
|
149
|
+
* part is the same size everywhere) but center on their own projected midpoint.
|
|
150
|
+
*/
|
|
151
|
+
export function panelTransform(ext, scale, panelW, panelH, pad) {
|
|
152
|
+
const midU = (ext.minU + ext.maxU) / 2;
|
|
153
|
+
const midV = (ext.minV + ext.maxV) / 2;
|
|
154
|
+
// Screen y is inverted (v-up → y-down); center within the panel.
|
|
155
|
+
const offsetX = panelW / 2 - midU * scale;
|
|
156
|
+
const offsetY = panelH / 2 + midV * scale;
|
|
157
|
+
return { scale, offsetX, offsetY, inner: Math.min(panelW, panelH) - 2 * pad, panelW, panelH, pad };
|
|
158
|
+
}
|
|
159
|
+
/** Map a polyline from view coords into panel pixels: [x0, y0, x1, y1, ...]. */
|
|
160
|
+
export function toPixels(line, t) {
|
|
161
|
+
const out = [];
|
|
162
|
+
for (let i = 0; i < line.length; i += 2) {
|
|
163
|
+
out.push(line[i] * t.scale + t.offsetX, -line[i + 1] * t.scale + t.offsetY);
|
|
164
|
+
}
|
|
165
|
+
return out;
|
|
166
|
+
}
|
|
167
|
+
export function resolved(options) {
|
|
168
|
+
return {
|
|
169
|
+
width: options.width ?? 240,
|
|
170
|
+
height: options.height ?? 240,
|
|
171
|
+
padding: options.padding ?? 14,
|
|
172
|
+
showHidden: options.showHidden ?? true,
|
|
173
|
+
showGnomon: options.showGnomon ?? true,
|
|
174
|
+
strokeWidth: options.strokeWidth ?? 1,
|
|
175
|
+
background: options.background ?? "#ffffff",
|
|
176
|
+
visibleColor: options.visibleColor ?? "#111111",
|
|
177
|
+
hiddenColor: options.hiddenColor ?? "#9e9e9e",
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
export function deflectionFor(kernel, shape, options) {
|
|
181
|
+
if (options.deflection !== undefined)
|
|
182
|
+
return options.deflection;
|
|
183
|
+
const bb = kernel.getBoundingBox(shape);
|
|
184
|
+
const diag = Math.hypot(bb.xmax - bb.xmin, bb.ymax - bb.ymin, bb.zmax - bb.zmin);
|
|
185
|
+
return Math.max(diag * 0.002, 1e-4);
|
|
186
|
+
}
|
|
187
|
+
/** The gnomon arms for a view, or an empty list when every axis points into
|
|
188
|
+
* the screen. Axes within 0.05 of the view direction are dropped. */
|
|
189
|
+
export function gnomonArms(viewBasis, t) {
|
|
190
|
+
// The label sits past the tip, along the arm. Centred on the tip, the line
|
|
191
|
+
// would run through the letter, and the iso view's X and Y tips are close
|
|
192
|
+
// enough that their letters would touch. Arm + label stay within ~22 px
|
|
193
|
+
// of the origin, so the gnomon keeps to the corner, clear of the drawing.
|
|
194
|
+
const len = 15;
|
|
195
|
+
const gap = 7;
|
|
196
|
+
const ox = t.pad + len + gap;
|
|
197
|
+
const oy = t.panelH - t.pad - len - gap;
|
|
198
|
+
const axes = [
|
|
199
|
+
[v(1, 0, 0), "#d33", "X"],
|
|
200
|
+
[v(0, 1, 0), "#3a3", "Y"],
|
|
201
|
+
[v(0, 0, 1), "#36c", "Z"],
|
|
202
|
+
];
|
|
203
|
+
const arms = [];
|
|
204
|
+
for (const [axis, color, label] of axes) {
|
|
205
|
+
const dx = dot(axis, viewBasis.sx);
|
|
206
|
+
const dy = -dot(axis, viewBasis.sy);
|
|
207
|
+
const m = Math.hypot(dx, dy);
|
|
208
|
+
if (m < 0.05)
|
|
209
|
+
continue; // axis points into the screen
|
|
210
|
+
arms.push({
|
|
211
|
+
x0: ox, y0: oy, x1: ox + dx * len, y1: oy + dy * len, color, label,
|
|
212
|
+
lx: ox + dx * len + (dx / m) * gap, ly: oy + dy * len + (dy / m) * gap,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
return arms;
|
|
216
|
+
}
|
|
217
|
+
export function gridLayout(extents, o, columns, showDimensions) {
|
|
218
|
+
// One global scale so the part is sized consistently across all panels.
|
|
219
|
+
const inner = Math.min(o.width, o.height) - 2 * o.padding;
|
|
220
|
+
let maxRange = 1e-9;
|
|
221
|
+
for (const ext of extents) {
|
|
222
|
+
maxRange = Math.max(maxRange, ext.maxU - ext.minU, ext.maxV - ext.minV);
|
|
223
|
+
}
|
|
224
|
+
const scale = inner / maxRange;
|
|
225
|
+
if (!Number.isInteger(columns) || columns < 1) {
|
|
226
|
+
throw new RangeError(`columns must be a positive integer, got ${columns}`);
|
|
227
|
+
}
|
|
228
|
+
const rows = Math.ceil(extents.length / columns);
|
|
229
|
+
const footerH = showDimensions ? 22 : 0;
|
|
230
|
+
const panels = extents.map((ext, i) => ({
|
|
231
|
+
px: (i % columns) * o.width,
|
|
232
|
+
py: Math.floor(i / columns) * o.height,
|
|
233
|
+
t: panelTransform(ext, scale, o.width, o.height, o.padding),
|
|
234
|
+
}));
|
|
235
|
+
return {
|
|
236
|
+
columns,
|
|
237
|
+
rows,
|
|
238
|
+
totalW: columns * o.width,
|
|
239
|
+
totalH: rows * o.height + footerH,
|
|
240
|
+
footerH,
|
|
241
|
+
scale,
|
|
242
|
+
panels,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
/** The single-panel equivalent of gridLayout. */
|
|
246
|
+
export function singleLayout(ext, o) {
|
|
247
|
+
const inner = Math.min(o.width, o.height) - 2 * o.padding;
|
|
248
|
+
const range = Math.max(ext.maxU - ext.minU, ext.maxV - ext.minV, 1e-9);
|
|
249
|
+
return panelTransform(ext, inner / range, o.width, o.height, o.padding);
|
|
250
|
+
}
|
|
251
|
+
/** The "100 × 60 × 40 (X×Y×Z)" footer text. */
|
|
252
|
+
export function dimensionsText(kernel, shape, round) {
|
|
253
|
+
const bb = kernel.getBoundingBox(shape);
|
|
254
|
+
return `${round(bb.xmax - bb.xmin)} × ${round(bb.ymax - bb.ymin)} × ${round(bb.zmax - bb.zmin)} (X×Y×Z)`;
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=views.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views.js","sourceRoot":"","sources":["../src/views.ts"],"names":[],"mappings":"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"}
|