abstract-3d 4.0.5 → 4.0.7
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/lib/renderers/svg/svg-encoding.d.ts +2 -0
- package/lib/renderers/svg/svg-encoding.d.ts.map +1 -1
- package/lib/renderers/svg/svg-encoding.js +12 -0
- package/lib/renderers/svg/svg-encoding.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/shared.d.ts +11 -4
- package/lib/renderers/svg/svg-geometries/shared.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/shared.js +2 -1
- package/lib/renderers/svg/svg-geometries/shared.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-box.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-box.js +4 -1
- package/lib/renderers/svg/svg-geometries/svg-box.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cone.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cone.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cone.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cylinder.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cylinder.js +3 -2
- package/lib/renderers/svg/svg-geometries/svg-cylinder.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-plane.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-plane.js +3 -1
- package/lib/renderers/svg/svg-geometries/svg-plane.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-polygon.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-polygon.js +7 -1
- package/lib/renderers/svg/svg-geometries/svg-polygon.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-shape.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-shape.js +2 -1
- package/lib/renderers/svg/svg-geometries/svg-shape.js.map +1 -1
- package/lib/renderers/svg/svg-order.d.ts +6 -5
- package/lib/renderers/svg/svg-order.d.ts.map +1 -1
- package/lib/renderers/svg/svg-order.js +233 -124
- package/lib/renderers/svg/svg-order.js.map +1 -1
- package/lib/renderers/svg/svg.js +10 -8
- package/lib/renderers/svg/svg.js.map +1 -1
- package/package.json +2 -2
- package/src/renderers/svg/svg-encoding.ts +13 -0
- package/src/renderers/svg/svg-geometries/shared.ts +13 -5
- package/src/renderers/svg/svg-geometries/svg-box.ts +10 -1
- package/src/renderers/svg/svg-geometries/svg-cone.ts +2 -1
- package/src/renderers/svg/svg-geometries/svg-cylinder.ts +3 -2
- package/src/renderers/svg/svg-geometries/svg-plane.ts +5 -2
- package/src/renderers/svg/svg-geometries/svg-polygon.ts +7 -6
- package/src/renderers/svg/svg-geometries/svg-shape.ts +4 -2
- package/src/renderers/svg/svg-order.test.ts +61 -6
- package/src/renderers/svg/svg-order.ts +257 -135
- package/src/renderers/svg/svg.ts +13 -8
package/src/renderers/svg/svg.ts
CHANGED
|
@@ -93,13 +93,13 @@ function renderInternal(
|
|
|
93
93
|
imageBg: options?.imageBg ?? false,
|
|
94
94
|
className: options?.className ?? "",
|
|
95
95
|
};
|
|
96
|
-
//
|
|
97
|
-
const
|
|
98
|
-
const view =
|
|
99
|
-
const
|
|
100
|
-
? vec3RotCombine(vec3(
|
|
96
|
+
// A three-quarter view: the front turned 30° to show the side, and tilted 20° to show the top, the front foremost
|
|
97
|
+
const angled = opts.view === "TopLeft" || opts.view === "TopRight";
|
|
98
|
+
const view = angled ? "front" : opts.view;
|
|
99
|
+
const angledRot = angled
|
|
100
|
+
? vec3RotCombine(vec3((20 * Math.PI) / 180, 0, 0), vec3(0, ((opts.view === "TopRight" ? -1 : 1) * 30 * Math.PI) / 180, 0))
|
|
101
101
|
: vec3Zero;
|
|
102
|
-
const cameraRot = vec3RotCombine(
|
|
102
|
+
const cameraRot = vec3RotCombine(angledRot, rotationForCameraPos(view));
|
|
103
103
|
const viewRot = opts.rotation ? vec3RotCombine(vec3(0, 0, (opts.rotation * Math.PI) / 180), cameraRot) : cameraRot;
|
|
104
104
|
const unitRot = vec3RotCombine(viewRot, scene.rotation_deprecated ?? vec3Zero);
|
|
105
105
|
|
|
@@ -110,12 +110,17 @@ function renderInternal(
|
|
|
110
110
|
const point = (x: number, y: number): Vec2 => vec2(svgCenter.x + x, svgCenter.y - y);
|
|
111
111
|
const unitCenterFlipped = vec3Flip(unitCenter);
|
|
112
112
|
|
|
113
|
-
const elements = [
|
|
113
|
+
const elements = [
|
|
114
|
+
...orderElements(
|
|
115
|
+
scene.groups.flatMap((g) => svgGroup(g, unitCenterFlipped, unitRot, point, opts)),
|
|
116
|
+
point
|
|
117
|
+
),
|
|
118
|
+
];
|
|
114
119
|
const dimOpts: SvgOptions = { ...opts, only_stroke: false, gray_scale: false };
|
|
115
120
|
const visibleViews = calculateVisibleViews(view, scene.rotation_deprecated);
|
|
116
121
|
|
|
117
122
|
// Dimensions are drawn for the flat views
|
|
118
|
-
for (const dim of
|
|
123
|
+
for (const dim of angled ? [] : (scene.dimensions_deprecated?.dimensions ?? [])) {
|
|
119
124
|
const d = dimensionConvertToTypeMesh(dim, scene.rotation_deprecated ?? vec3Zero, scene.dimensions_deprecated?.material);
|
|
120
125
|
if (isViewVisible(d.views[0], visibleViews)) {
|
|
121
126
|
const pos = vec3TransRot(d.pos, unitCenterFlipped, unitRot);
|