abstract-3d 1.2.1 → 1.2.2
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/CHANGELOG.md +5 -0
- package/lib/renderers/svg/svg-encoding.d.ts +2 -2
- package/lib/renderers/svg/svg-encoding.d.ts.map +1 -1
- package/lib/renderers/svg/svg-encoding.js +15 -10
- package/lib/renderers/svg/svg-encoding.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-box.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-box.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-box.js +6 -4
- package/lib/renderers/svg/svg-geometries/svg-box.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cone.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-cone.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cone.js +5 -3
- package/lib/renderers/svg/svg-geometries/svg-cone.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cylinder.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-cylinder.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-cylinder.js +5 -3
- package/lib/renderers/svg/svg-geometries/svg-cylinder.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-plane.js +1 -1
- package/lib/renderers/svg/svg-geometries/svg-plane.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-polygon.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-polygon.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-polygon.js +3 -2
- package/lib/renderers/svg/svg-geometries/svg-polygon.js.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-shape.d.ts +2 -2
- package/lib/renderers/svg/svg-geometries/svg-shape.d.ts.map +1 -1
- package/lib/renderers/svg/svg-geometries/svg-shape.js +3 -2
- package/lib/renderers/svg/svg-geometries/svg-shape.js.map +1 -1
- package/lib/renderers/svg/svg.js +7 -8
- package/lib/renderers/svg/svg.js.map +1 -1
- package/package.json +2 -2
- package/src/renderers/svg/svg-encoding.ts +15 -10
- package/src/renderers/svg/svg-geometries/svg-box.ts +7 -4
- package/src/renderers/svg/svg-geometries/svg-cone.ts +6 -3
- package/src/renderers/svg/svg-geometries/svg-cylinder.ts +6 -3
- package/src/renderers/svg/svg-geometries/svg-plane.ts +1 -1
- package/src/renderers/svg/svg-geometries/svg-polygon.ts +4 -3
- package/src/renderers/svg/svg-geometries/svg-shape.ts +4 -3
- package/src/renderers/svg/svg.ts +7 -8
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/).
|
|
4
4
|
|
|
5
|
+
## v1.2.2
|
|
6
|
+
|
|
7
|
+
- Fixed the square holes to the SVG renderer
|
|
8
|
+
- Added opacity to the SVG elements
|
|
9
|
+
|
|
5
10
|
## v1.2.0
|
|
6
11
|
|
|
7
12
|
- Added holes rendering to the SVG renderer
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Hole, Vec2, Vec3 } from "../../abstract-3d.js";
|
|
2
2
|
export declare const svg: (width: number, height: number, children: string) => string;
|
|
3
3
|
export declare const svgLine: (p1: Vec2, p2: Vec2, stroke: string, strokeWidth: number) => string;
|
|
4
|
-
export declare function svgPolygon(factor: number, rot: Vec3, points: ReadonlyArray<Vec2>, fill: string, stroke: string, strokeWidth: number, holes?: ReadonlyArray<Hole>): string;
|
|
5
|
-
export declare function svgCircle(radius: number, rot: Vec3, pos: Vec2, fill: string, stroke: string, strokeWidth: number, factor: number, holes?: ReadonlyArray<Hole>): string;
|
|
4
|
+
export declare function svgPolygon(factor: number, rot: Vec3, points: ReadonlyArray<Vec2>, fill: string, opacity: number, stroke: string, strokeWidth: number, holes?: ReadonlyArray<Hole>): string;
|
|
5
|
+
export declare function svgCircle(radius: number, rot: Vec3, pos: Vec2, fill: string, opacity: number, stroke: string, strokeWidth: number, factor: number, holes?: ReadonlyArray<Hole>): string;
|
|
6
6
|
export declare const svgCircle2: (radius: number, pos: Vec2, fill: string, stroke: string, strokeWidth: number, factor: number, holes?: ReadonlyArray<Hole>) => string;
|
|
7
7
|
export declare const svgText: (text: string, matrix: string, color: string, font: string, fontSize: number) => string;
|
|
8
8
|
export type EmbededImage = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-encoding.d.ts","sourceRoot":"","sources":["../../../src/renderers/svg/svg-encoding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,IAAI,EAAQ,IAAI,EAAqC,IAAI,EAAqB,MAAM,sBAAsB,CAAC;AAElJ,eAAO,MAAM,GAAG,GAAI,OAAO,MAAM,EAAE,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,MAIrE,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,QAAQ,MAAM,EAAE,aAAa,MAAM,KAAG,MAGxB,CAAC;AAE3D,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"svg-encoding.d.ts","sourceRoot":"","sources":["../../../src/renderers/svg/svg-encoding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,IAAI,EAAQ,IAAI,EAAqC,IAAI,EAAqB,MAAM,sBAAsB,CAAC;AAElJ,eAAO,MAAM,GAAG,GAAI,OAAO,MAAM,EAAE,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,MAIrE,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,QAAQ,MAAM,EAAE,aAAa,MAAM,KAAG,MAGxB,CAAC;AAE3D,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAQ1L;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAKvL;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,EAAE,QAAQ,MAAM,EAAE,aAAa,MAAM,EAAE,QAAQ,MAAM,EAAE,QAAQ,aAAa,CAAC,IAAI,CAAC,KAAG,MAG9E,CAAC;AAyC1E,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,EAAE,QAAQ,MAAM,EAAE,OAAO,MAAM,EAAE,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,MAC0D,CAAC;AAEjK,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,eAAO,MAAM,QAAQ,GAAI,GAAG,IAAI,EAAE,MAAM,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,KAAG,MAuB/E,CAAC"}
|
|
@@ -3,29 +3,34 @@ export const svg = (width, height, children) => {
|
|
|
3
3
|
return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${width.toFixed(0)} ${height.toFixed(0)}" width="${width.toFixed(0)}px" height="${height.toFixed(0)}px">${children} </svg>`;
|
|
4
4
|
};
|
|
5
5
|
export const svgLine = (p1, p2, stroke, strokeWidth) => `<line x1="${p1.x.toFixed(0)}" y1="${p1.y.toFixed(0)}" x2="${p2.x.toFixed(0)}" y2="${p2.y.toFixed(0)}" stroke="${stroke}" stroke-width="${strokeWidth}" />`;
|
|
6
|
-
export function svgPolygon(factor, rot, points, fill, stroke, strokeWidth, holes) {
|
|
6
|
+
export function svgPolygon(factor, rot, points, fill, opacity, stroke, strokeWidth, holes) {
|
|
7
7
|
const bounds = bounds2FromVec2Array(points);
|
|
8
8
|
const size = vec2Sub(bounds.max, bounds.min);
|
|
9
|
-
const [mask,
|
|
9
|
+
const [mask, maskAttribute] = svgHoleMask(factor, rot, size, holes ?? []);
|
|
10
10
|
const pol = `<polygon points="${points
|
|
11
11
|
.reduce((a, c) => (a += `${c.x.toFixed(0)},${c.y.toFixed(0)} `), "")
|
|
12
|
-
.slice(0, -1)}" fill="${fill}" stroke="${stroke}" stroke-width="${strokeWidth}"
|
|
12
|
+
.slice(0, -1)}" fill="${fill}" fill-opacity="${opacity.toFixed(1)}" stroke="${stroke}" stroke-width="${strokeWidth}" ${maskAttribute}/>`;
|
|
13
13
|
return mask + pol;
|
|
14
14
|
}
|
|
15
|
-
export function svgCircle(radius, rot, pos, fill, stroke, strokeWidth, factor, holes) {
|
|
15
|
+
export function svgCircle(radius, rot, pos, fill, opacity, stroke, strokeWidth, factor, holes) {
|
|
16
16
|
const size = vec2Scale(vec2(radius, radius), 2);
|
|
17
|
-
const [mask,
|
|
18
|
-
const cir = `<circle r="${radius.toFixed(0)}" cx="${pos.x.toFixed(0)}" cy="${pos.y.toFixed(0)}" fill="${fill}" stroke="${stroke}" stroke-width="${strokeWidth}"
|
|
17
|
+
const [mask, maskAttribute] = svgHoleMask(factor, rot, size, holes ?? []);
|
|
18
|
+
const cir = `<circle r="${radius.toFixed(0)}" cx="${pos.x.toFixed(0)}" cy="${pos.y.toFixed(0)}" fill="${fill}" fill-opacity="${opacity.toFixed(1)}" stroke="${stroke}" stroke-width="${strokeWidth}" ${maskAttribute}/>`;
|
|
19
19
|
return mask + cir;
|
|
20
20
|
}
|
|
21
21
|
export const svgCircle2 = (radius, pos, fill, stroke, strokeWidth, factor, holes) => `<circle r="${radius.toFixed(0)}" cx="${pos.x.toFixed(0)}" cy="${pos.y.toFixed(0)}" fill="${fill}" stroke="${stroke}" stroke-width="${strokeWidth}" />`;
|
|
22
22
|
function svgHoleMask(factor, rot, size, holes) {
|
|
23
23
|
const id = `mask_${counter()}`;
|
|
24
|
-
return
|
|
25
|
-
|
|
24
|
+
return holes.length > 0 ? [
|
|
25
|
+
`<mask id="${id}" mask-type="luminance" maskContentUnits="objectBoundingBox">
|
|
26
26
|
<rect x="0" y="0" width="1" height="1" fill="white" />
|
|
27
27
|
${svgMaskHoles(factor, rot, size, holes ?? [])}
|
|
28
|
-
</mask>\n
|
|
28
|
+
</mask>\n`,
|
|
29
|
+
`mask="url(#${id}) "`
|
|
30
|
+
] : [
|
|
31
|
+
"",
|
|
32
|
+
""
|
|
33
|
+
];
|
|
29
34
|
}
|
|
30
35
|
function svgMaskHoles(factor, rot, size, holes) {
|
|
31
36
|
const holeMasks = [];
|
|
@@ -41,7 +46,7 @@ function svgMaskHoles(factor, rot, size, holes) {
|
|
|
41
46
|
case "SquareHole":
|
|
42
47
|
const holeSizeRotated = vec3Rot(vec3(hole.size.x, hole.size.y, 0), vec3Zero, rot);
|
|
43
48
|
const holeSizeAbs = vec2(Math.abs(holeSizeRotated.x), Math.abs(holeSizeRotated.y));
|
|
44
|
-
const holeSize = vec2Scale(holeSizeAbs, factor
|
|
49
|
+
const holeSize = vec2Scale(holeSizeAbs, factor);
|
|
45
50
|
const halfSize = vec2Scale(holeSize, 0.5);
|
|
46
51
|
holeMasks.push(`<rect x="${(holePos.x - halfSize.x) / size.x}" y="${(holePos.y - halfSize.y) / size.y}" width="${holeSize.x / size.x}" height="${holeSize.y / size.y}" fill="black" />`);
|
|
47
52
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-encoding.js","sourceRoot":"","sources":["../../../src/renderers/svg/svg-encoding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAgB,IAAI,EAAQ,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAQ,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAElJ,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,MAAc,EAAE,QAAgB,EAAU,EAAE;IAC7E,OAAO,wDAAwD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAC/F,CAAC,CACF,YAAY,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,QAAQ,SAAS,CAAC;AACxF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAQ,EAAE,EAAQ,EAAE,MAAc,EAAE,WAAmB,EAAU,EAAE,CACzF,aAAa,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAC/F,CAAC,CACF,aAAa,MAAM,mBAAmB,WAAW,MAAM,CAAC;AAE3D,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,GAAS,EAAE,MAA2B,EAAE,IAAY,EAAE,MAAc,EAAE,WAAmB,EAAE,KAA2B;
|
|
1
|
+
{"version":3,"file":"svg-encoding.js","sourceRoot":"","sources":["../../../src/renderers/svg/svg-encoding.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Box, Vec2, Vec3 } from "../../../abstract-3d.js";
|
|
1
|
+
import { Box, Vec2, Vec3, Material } from "../../../abstract-3d.js";
|
|
2
2
|
import { zOrderElement, SvgOptions } from "./shared.js";
|
|
3
|
-
export declare function box(b: Box, point: (x: number, y: number) => Vec2,
|
|
3
|
+
export declare function box(b: Box, point: (x: number, y: number) => Vec2, material: Material, opts: SvgOptions, parentPos: Vec3, parentRot: Vec3, factor: number): ReadonlyArray<zOrderElement>;
|
|
4
4
|
//# sourceMappingURL=svg-box.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-box.d.ts","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-box.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,IAAI,EACJ,IAAI,
|
|
1
|
+
{"version":3,"file":"svg-box.d.ts","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-box.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,IAAI,EACJ,IAAI,EAOJ,QAAQ,EACT,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAsB,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI5E,wBAAgB,GAAG,CACjB,CAAC,EAAE,GAAG,EACN,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,EACrC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,IAAI,EACf,MAAM,EAAE,MAAM,GACb,aAAa,CAAC,aAAa,CAAC,CA+C9B"}
|
|
@@ -2,7 +2,7 @@ import { vec3Scale, vec3TransRot, vec3RotCombine, vec3Zero, vec3, vec3ZMean, } f
|
|
|
2
2
|
import { gray, black, zElem } from "./shared.js";
|
|
3
3
|
import { svgPolygon } from "../svg-encoding.js";
|
|
4
4
|
import { rgbGrayScale } from "../../shared.js";
|
|
5
|
-
export function box(b, point,
|
|
5
|
+
export function box(b, point, material, opts, parentPos, parentRot, factor) {
|
|
6
6
|
const half = vec3Scale(b.size, 0.5);
|
|
7
7
|
const pos = vec3TransRot(b.pos, parentPos, parentRot);
|
|
8
8
|
const rot = vec3RotCombine(parentRot, b.rot ?? vec3Zero);
|
|
@@ -30,13 +30,15 @@ export function box(b, point, color, opts, parentPos, parentRot, factor) {
|
|
|
30
30
|
const [rightLeftPoints, rightLeftMean] = rightMean > leftMean
|
|
31
31
|
? [[point(v6.x, v6.y), point(v2.x, v2.y), point(v3.x, v3.y), point(v7.x, v7.y)], rightMean]
|
|
32
32
|
: [[point(v5.x, v5.y), point(v1.x, v1.y), point(v4.x, v4.y), point(v8.x, v8.y)], leftMean];
|
|
33
|
+
const color = material.normal;
|
|
34
|
+
const opacity = material.opacity ?? 1.0;
|
|
33
35
|
const [strokeColor, fill, strokeUse] = opts.onlyStroke
|
|
34
36
|
? [opts.grayScale ? gray : color, opts.onlyStrokeFill, opts.stroke]
|
|
35
37
|
: [black, opts.grayScale ? rgbGrayScale(color) : color, 0];
|
|
36
38
|
return [
|
|
37
|
-
zElem(svgPolygon(factor, rot, frontBackPoints, fill, strokeColor, strokeUse, b.holes), frontBackMean),
|
|
38
|
-
zElem(svgPolygon(factor, rot, topBotPoints, fill, strokeColor, strokeUse), topBotMean),
|
|
39
|
-
zElem(svgPolygon(factor, rot, rightLeftPoints, fill, strokeColor, strokeUse), rightLeftMean),
|
|
39
|
+
zElem(svgPolygon(factor, rot, frontBackPoints, fill, opacity, strokeColor, strokeUse, b.holes), frontBackMean),
|
|
40
|
+
zElem(svgPolygon(factor, rot, topBotPoints, fill, opacity, strokeColor, strokeUse), topBotMean),
|
|
41
|
+
zElem(svgPolygon(factor, rot, rightLeftPoints, fill, opacity, strokeColor, strokeUse), rightLeftMean),
|
|
40
42
|
];
|
|
41
43
|
}
|
|
42
44
|
//# sourceMappingURL=svg-box.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-box.js","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-box.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,IAAI,EACJ,SAAS,
|
|
1
|
+
{"version":3,"file":"svg-box.js","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-box.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Cone, Vec2, Vec3 } from "../../../abstract-3d.js";
|
|
1
|
+
import { Cone, Vec2, Vec3, Material } from "../../../abstract-3d.js";
|
|
2
2
|
import { zOrderElement, SvgOptions } from "./shared.js";
|
|
3
|
-
export declare function cone(c: Cone, point: (x: number, y: number) => Vec2,
|
|
3
|
+
export declare function cone(c: Cone, point: (x: number, y: number) => Vec2, material: Material, opts: SvgOptions, parentPos: Vec3, parentRot: Vec3, factor: number): ReadonlyArray<zOrderElement>;
|
|
4
4
|
//# sourceMappingURL=svg-cone.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-cone.d.ts","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-cone.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,
|
|
1
|
+
{"version":3,"file":"svg-cone.d.ts","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-cone.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EAOJ,QAAQ,EACT,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAqB,aAAa,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AAIxF,wBAAgB,IAAI,CAClB,CAAC,EAAE,IAAI,EACP,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,EACrC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,IAAI,EACf,MAAM,EAAE,MAAM,GACb,aAAa,CAAC,aAAa,CAAC,CA6C9B"}
|
|
@@ -2,11 +2,13 @@ import { vec3, vec3TransRot, vec3RotCombine, vec3Zero, vec3ZMean, equals, } from
|
|
|
2
2
|
import { gray, stBW, zElem, transparent } from "./shared.js";
|
|
3
3
|
import { svgCircle, svgPolygon } from "../svg-encoding.js";
|
|
4
4
|
import { rgbGrayScale } from "../../shared.js";
|
|
5
|
-
export function cone(c, point,
|
|
5
|
+
export function cone(c, point, material, opts, parentPos, parentRot, factor) {
|
|
6
6
|
const half = vec3(c.radius, c.length / 2, c.radius);
|
|
7
7
|
const pos = vec3TransRot(c.pos, parentPos, parentRot);
|
|
8
8
|
const rot = vec3RotCombine(parentRot, c.rot ?? vec3Zero);
|
|
9
9
|
const vec3tr = (p) => vec3TransRot(p, pos, rot);
|
|
10
|
+
const color = material.normal;
|
|
11
|
+
const opacity = material.opacity ?? 1.0;
|
|
10
12
|
const [stroke, fill] = opts.onlyStroke
|
|
11
13
|
? [opts.grayScale ? gray : color, opts.onlyStrokeFill]
|
|
12
14
|
: [transparent, opts.grayScale ? rgbGrayScale(color) : color];
|
|
@@ -27,7 +29,7 @@ export function cone(c, point, color, opts, parentPos, parentRot, factor) {
|
|
|
27
29
|
point(topPos.x, topPos.y),
|
|
28
30
|
point(topPos.x, topPos.y),
|
|
29
31
|
];
|
|
30
|
-
zOrderComponents.push(zElem(svgPolygon(factor, rot, points, fill, stroke, stBW), vec3ZMean(currBot, prevBot, topPos)));
|
|
32
|
+
zOrderComponents.push(zElem(svgPolygon(factor, rot, points, fill, opacity, stroke, stBW), vec3ZMean(currBot, prevBot, topPos)));
|
|
31
33
|
}
|
|
32
34
|
currentAngle += angleStep;
|
|
33
35
|
}
|
|
@@ -35,7 +37,7 @@ export function cone(c, point, color, opts, parentPos, parentRot, factor) {
|
|
|
35
37
|
const cylTop = vec3tr(vec3(0, +half.y, 0));
|
|
36
38
|
const cylBottom = vec3tr(vec3(0, -half.y, 0));
|
|
37
39
|
if (equals(cylTop.x, cylBottom.x, 0.1) && equals(cylTop.y, cylBottom.y, 0.1)) {
|
|
38
|
-
zOrderComponents.push(zElem(svgCircle(factor * c.radius, rot, point(cylBottom.x, cylBottom.y), fill, stroke, stBW, factor), cylBottom.z));
|
|
40
|
+
zOrderComponents.push(zElem(svgCircle(factor * c.radius, rot, point(cylBottom.x, cylBottom.y), fill, opacity, stroke, stBW, factor), cylBottom.z));
|
|
39
41
|
}
|
|
40
42
|
return zOrderComponents;
|
|
41
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-cone.js","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-cone.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,SAAS,EACT,MAAM,
|
|
1
|
+
{"version":3,"file":"svg-cone.js","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-cone.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Cylinder, Vec2, Vec3 } from "../../../abstract-3d.js";
|
|
1
|
+
import { Cylinder, Vec2, Vec3, Material } from "../../../abstract-3d.js";
|
|
2
2
|
import { SvgOptions, zOrderElement } from "./shared.js";
|
|
3
|
-
export declare function cylinder(c: Cylinder, point: (x: number, y: number) => Vec2,
|
|
3
|
+
export declare function cylinder(c: Cylinder, point: (x: number, y: number) => Vec2, material: Material, opts: SvgOptions, parentPos: Vec3, parentRot: Vec3, factor: number): ReadonlyArray<zOrderElement>;
|
|
4
4
|
//# sourceMappingURL=svg-cylinder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-cylinder.d.ts","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-cylinder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,IAAI,
|
|
1
|
+
{"version":3,"file":"svg-cylinder.d.ts","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-cylinder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,IAAI,EAOJ,QAAQ,EACT,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAc,UAAU,EAAsB,aAAa,EAAE,MAAM,aAAa,CAAC;AAIxF,wBAAgB,QAAQ,CACtB,CAAC,EAAE,QAAQ,EACX,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,EACrC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,IAAI,EACf,MAAM,EAAE,MAAM,GACb,aAAa,CAAC,aAAa,CAAC,CAsD9B"}
|
|
@@ -2,11 +2,13 @@ import { vec3, vec3TransRot, vec3RotCombine, vec3Zero, vec3ZMean, equals, } from
|
|
|
2
2
|
import { gray, stBW, transparent, zElem } from "./shared.js";
|
|
3
3
|
import { svgCircle, svgPolygon } from "../svg-encoding.js";
|
|
4
4
|
import { rgbGrayScale } from "../../shared.js";
|
|
5
|
-
export function cylinder(c, point,
|
|
5
|
+
export function cylinder(c, point, material, opts, parentPos, parentRot, factor) {
|
|
6
6
|
const half = vec3(c.radius, c.length / 2, c.radius);
|
|
7
7
|
const pos = vec3TransRot(c.pos, parentPos, parentRot);
|
|
8
8
|
const rot = vec3RotCombine(parentRot, c.rot ?? vec3Zero);
|
|
9
9
|
const vec3tr = (p) => vec3TransRot(p, pos, rot);
|
|
10
|
+
const color = material.normal;
|
|
11
|
+
const opacity = material.opacity ?? 1.0;
|
|
10
12
|
const [stroke, fill] = opts.onlyStroke
|
|
11
13
|
? [opts.grayScale ? gray : color, opts.onlyStrokeFill]
|
|
12
14
|
: [transparent, opts.grayScale ? rgbGrayScale(color) : color];
|
|
@@ -32,7 +34,7 @@ export function cylinder(c, point, color, opts, parentPos, parentRot, factor) {
|
|
|
32
34
|
point(prevTop.x, prevTop.y),
|
|
33
35
|
point(currTop.x, currTop.y),
|
|
34
36
|
];
|
|
35
|
-
zOrderComponents.push(zElem(svgPolygon(factor, rot, points, fill, stroke, stBW), vec3ZMean(currBot, prevBot, currTop, prevTop)));
|
|
37
|
+
zOrderComponents.push(zElem(svgPolygon(factor, rot, points, fill, opacity, stroke, stBW), vec3ZMean(currBot, prevBot, currTop, prevTop)));
|
|
36
38
|
}
|
|
37
39
|
currentAngle += angleStep;
|
|
38
40
|
}
|
|
@@ -42,7 +44,7 @@ export function cylinder(c, point, color, opts, parentPos, parentRot, factor) {
|
|
|
42
44
|
const circleBottom = vec3tr(vec3(0, -half.y, 0));
|
|
43
45
|
if (equals(circleTop.x, circleBottom.x, 0.1) && equals(circleTop.y, circleBottom.y, 0.1)) {
|
|
44
46
|
const circlePos = circleTop.z > circleBottom.z ? circleTop : circleBottom;
|
|
45
|
-
zOrderComponents.push(zElem(svgCircle(factor * c.radius, rot, point(circlePos.x, circlePos.y), fill, stroke, stBW, factor, c.holes), circlePos.z));
|
|
47
|
+
zOrderComponents.push(zElem(svgCircle(factor * c.radius, rot, point(circlePos.x, circlePos.y), fill, opacity, stroke, stBW, factor, c.holes), circlePos.z));
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
50
|
return zOrderComponents;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-cylinder.js","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-cylinder.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,SAAS,EACT,MAAM,
|
|
1
|
+
{"version":3,"file":"svg-cylinder.js","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-cylinder.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ export function plane(p, point, factor, material, opts, parentPos, parentRot, ho
|
|
|
30
30
|
const [strokeColor, fill, strokeThickness] = opts.onlyStroke
|
|
31
31
|
? [opts.grayScale ? gray : material.normal, opts.onlyStrokeFill, opts.stroke]
|
|
32
32
|
: [black, opts.grayScale ? rgbGrayScale(material.normal) : material.normal, 0];
|
|
33
|
-
return [zElem(svgPolygon(factor, rot, points, fill, strokeColor, strokeThickness, holes), vec3ZMean(v1, v2, v3, v4))];
|
|
33
|
+
return [zElem(svgPolygon(factor, rot, points, fill, material.opacity ?? 1.0, strokeColor, strokeThickness, holes), vec3ZMean(v1, v2, v3, v4))];
|
|
34
34
|
}
|
|
35
35
|
const rawSvgPrefix = "data:image/svg+xml,";
|
|
36
36
|
//# sourceMappingURL=svg-plane.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-plane.js","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-plane.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"svg-plane.js","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,SAAS,GAGV,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAA6B,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAgB,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,UAAU,KAAK,CACnB,CAAQ,EACR,KAAqC,EACrC,MAAc,EACd,QAAkB,EAClB,IAAgB,EAChB,SAAe,EACf,SAAe,EACf,KAA2B;IAE3B,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,CAAS,EAAQ,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAErF,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,MAAM,KAAK,GAA6B,SAAS,EAAE,UAAU,CAAC,YAAY,CAAC;QACzE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QAC5D,CAAC,CAAC,QAAQ,CAAC,QAAQ;YACjB,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,IAAI,QAAQ,CAAC,QAAQ,EAAE;YACtD,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,EAAE,CAAC;QACnC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAClE,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7G,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5F,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC,UAAU;QAC1D,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC;QAC7E,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACjJ,CAAC;AAED,MAAM,YAAY,GAAG,qBAAqB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Polygon, Vec3, Vec2 } from "../../../abstract-3d.js";
|
|
1
|
+
import { Polygon, Vec3, Vec2, Material } from "../../../abstract-3d.js";
|
|
2
2
|
import { zOrderElement, SvgOptions } from "./shared.js";
|
|
3
|
-
export declare function polygon(p: Polygon, point: (x: number, y: number) => Vec2, factor: number,
|
|
3
|
+
export declare function polygon(p: Polygon, point: (x: number, y: number) => Vec2, factor: number, material: Material, opts: SvgOptions, parentPos: Vec3, parentRot: Vec3): ReadonlyArray<zOrderElement>;
|
|
4
4
|
//# sourceMappingURL=svg-polygon.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-polygon.d.ts","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-polygon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAa,IAAI,EAAE,IAAI,EAA0C,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"svg-polygon.d.ts","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-polygon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAa,IAAI,EAAE,IAAI,EAA0C,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC3H,OAAO,EAAe,aAAa,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AAIlF,wBAAgB,OAAO,CACrB,CAAC,EAAE,OAAO,EACV,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,EACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,IAAI,GACd,aAAa,CAAC,aAAa,CAAC,CAU9B"}
|
|
@@ -2,14 +2,15 @@ import { vec3ZMean, vec3TransRot, vec3RotCombine, vec3Zero } from "../../../abst
|
|
|
2
2
|
import { gray, zElem, transparent } from "./shared.js";
|
|
3
3
|
import { svgPolygon } from "../svg-encoding.js";
|
|
4
4
|
import { rgbGrayScale } from "../../shared.js";
|
|
5
|
-
export function polygon(p, point, factor,
|
|
5
|
+
export function polygon(p, point, factor, material, opts, parentPos, parentRot) {
|
|
6
6
|
const pos = vec3TransRot(p.pos, parentPos, parentRot);
|
|
7
7
|
const rot = vec3RotCombine(parentRot, p.rot ?? vec3Zero);
|
|
8
8
|
const rotatedPoints = p.points.map((p) => vec3TransRot(p, pos, rot));
|
|
9
9
|
const points = rotatedPoints.map(({ x, y }) => point(x, y));
|
|
10
|
+
const color = material.normal;
|
|
10
11
|
const [strokeColor, fill, strokeThickness] = opts.onlyStroke
|
|
11
12
|
? [opts.grayScale ? gray : color, opts.onlyStrokeFill, opts.stroke]
|
|
12
13
|
: [transparent, opts.grayScale ? rgbGrayScale(color) : color, 0];
|
|
13
|
-
return [zElem(svgPolygon(factor, rot, points, fill, strokeColor, strokeThickness), vec3ZMean(...rotatedPoints))];
|
|
14
|
+
return [zElem(svgPolygon(factor, rot, points, fill, material.opacity ?? 1.0, strokeColor, strokeThickness), vec3ZMean(...rotatedPoints))];
|
|
14
15
|
}
|
|
15
16
|
//# sourceMappingURL=svg-polygon.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-polygon.js","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-polygon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,SAAS,EAAc,YAAY,EAAE,cAAc,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"svg-polygon.js","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-polygon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,SAAS,EAAc,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAY,MAAM,yBAAyB,CAAC;AAC3H,OAAO,EAAE,IAAI,EAAE,KAAK,EAAiB,WAAW,EAAc,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,UAAU,OAAO,CACrB,CAAU,EACV,KAAqC,EACrC,MAAc,EACd,QAAkB,EAClB,IAAgB,EAChB,SAAe,EACf,SAAe;IAEf,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC9B,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC,UAAU;QAC1D,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC;QACnE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,GAAG,EAAE,WAAW,EAAE,eAAe,CAAC,EAAE,SAAS,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AAC5I,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Vec3, Vec2, Shape } from "../../../abstract-3d.js";
|
|
1
|
+
import { Vec3, Vec2, Shape, Material } from "../../../abstract-3d.js";
|
|
2
2
|
import { zOrderElement, SvgOptions } from "./shared.js";
|
|
3
|
-
export declare function shape(s: Shape, point: (x: number, y: number) => Vec2, factor: number,
|
|
3
|
+
export declare function shape(s: Shape, point: (x: number, y: number) => Vec2, factor: number, material: Material, opts: SvgOptions, parentPos: Vec3, parentRot: Vec3): ReadonlyArray<zOrderElement>;
|
|
4
4
|
//# sourceMappingURL=svg-shape.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-shape.d.ts","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-shape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,IAAI,EAAE,IAAI,EAAgC,KAAK,EAAkB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"svg-shape.d.ts","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-shape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,IAAI,EAAE,IAAI,EAAgC,KAAK,EAAkB,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC/H,OAAO,EAAe,aAAa,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AAIlF,wBAAgB,KAAK,CACnB,CAAC,EAAE,KAAK,EACR,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,EACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,IAAI,GACd,aAAa,CAAC,aAAa,CAAC,CAU9B"}
|
|
@@ -2,14 +2,15 @@ import { vec3ZMean, vec3TransRot, vec3RotCombine, vec3, vec3Zero } from "../../.
|
|
|
2
2
|
import { gray, zElem, transparent } from "./shared.js";
|
|
3
3
|
import { svgPolygon } from "../svg-encoding.js";
|
|
4
4
|
import { rgbGrayScale } from "../../shared.js";
|
|
5
|
-
export function shape(s, point, factor,
|
|
5
|
+
export function shape(s, point, factor, material, opts, parentPos, parentRot) {
|
|
6
6
|
const pos = vec3TransRot(s.pos, parentPos, parentRot);
|
|
7
7
|
const rot = vec3RotCombine(parentRot, s.rot ?? vec3Zero);
|
|
8
8
|
const rotatedPoints = s.points.map((p) => vec3TransRot(vec3(p.x, p.y, 0), pos, rot));
|
|
9
9
|
const points = rotatedPoints.map(({ x, y }) => point(x, y));
|
|
10
|
+
const color = material.normal;
|
|
10
11
|
const [strokeColor, fill] = opts.onlyStroke
|
|
11
12
|
? [opts.grayScale ? gray : color, opts.onlyStrokeFill]
|
|
12
13
|
: [transparent, opts.grayScale ? rgbGrayScale(color) : color];
|
|
13
|
-
return [zElem(svgPolygon(factor, rot, points, fill, strokeColor, 0), vec3ZMean(...rotatedPoints))];
|
|
14
|
+
return [zElem(svgPolygon(factor, rot, points, fill, material.opacity ?? 1.0, strokeColor, 0), vec3ZMean(...rotatedPoints))];
|
|
14
15
|
}
|
|
15
16
|
//# sourceMappingURL=svg-shape.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-shape.js","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-shape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAc,YAAY,EAAE,cAAc,EAAS,IAAI,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"svg-shape.js","sourceRoot":"","sources":["../../../../src/renderers/svg/svg-geometries/svg-shape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAc,YAAY,EAAE,cAAc,EAAS,IAAI,EAAE,QAAQ,EAAY,MAAM,yBAAyB,CAAC;AAC/H,OAAO,EAAE,IAAI,EAAE,KAAK,EAAiB,WAAW,EAAc,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,UAAU,KAAK,CACnB,CAAQ,EACR,KAAqC,EACrC,MAAc,EACd,QAAkB,EAClB,IAAgB,EAChB,SAAe,EACf,SAAe;IAEf,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC9B,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU;QACzC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC;QACtD,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AAC9H,CAAC"}
|
package/lib/renderers/svg/svg.js
CHANGED
|
@@ -75,24 +75,23 @@ function svgGroup(g, pos, rot, point, factor, opts) {
|
|
|
75
75
|
return elements;
|
|
76
76
|
}
|
|
77
77
|
function svgMesh(mesh, parentPos, parentRot, point, factor, material, opts) {
|
|
78
|
-
const color = material.normal;
|
|
79
78
|
switch (mesh.geometry.type) {
|
|
80
79
|
case "Box":
|
|
81
|
-
return box(mesh.geometry, point,
|
|
80
|
+
return box(mesh.geometry, point, material, opts, parentPos, parentRot, factor);
|
|
82
81
|
case "Plane":
|
|
83
82
|
return plane(mesh.geometry, point, factor, material, opts, parentPos, parentRot);
|
|
84
83
|
case "Cylinder":
|
|
85
|
-
return cylinder(mesh.geometry, point,
|
|
84
|
+
return cylinder(mesh.geometry, point, material, opts, parentPos, parentRot, factor);
|
|
86
85
|
case "Cone":
|
|
87
|
-
return cone(mesh.geometry, point,
|
|
86
|
+
return cone(mesh.geometry, point, material, opts, parentPos, parentRot, factor);
|
|
88
87
|
case "Line":
|
|
89
|
-
return line(mesh.geometry, point,
|
|
88
|
+
return line(mesh.geometry, point, material.normal, opts, parentPos, parentRot);
|
|
90
89
|
case "Polygon":
|
|
91
|
-
return polygon(mesh.geometry, point, factor,
|
|
90
|
+
return polygon(mesh.geometry, point, factor, material, opts, parentPos, parentRot);
|
|
92
91
|
case "Shape":
|
|
93
|
-
return shape(mesh.geometry, point, factor,
|
|
92
|
+
return shape(mesh.geometry, point, factor, material, opts, parentPos, parentRot);
|
|
94
93
|
case "Text":
|
|
95
|
-
return text(mesh.geometry, point,
|
|
94
|
+
return text(mesh.geometry, point, material.normal, opts, parentPos, parentRot, factor);
|
|
96
95
|
case "Tube":
|
|
97
96
|
case "Sphere":
|
|
98
97
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../../../src/renderers/svg/svg.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../../../src/renderers/svg/svg.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "abstract-3d",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "Abstract 3D",
|
|
5
5
|
"author": "Divid AB <info@divid.se>",
|
|
6
6
|
"repository": "https://github.com/dividab/abstract-visuals/tree/master/packages/abstract-3d",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"@types/three": "^0.180.0",
|
|
36
36
|
"react": "^19.0.0"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "dca1c6f91da9d489d8c334d86666aa6183bd016e"
|
|
39
39
|
}
|
|
@@ -11,20 +11,20 @@ export const svgLine = (p1: Vec2, p2: Vec2, stroke: string, strokeWidth: number)
|
|
|
11
11
|
0
|
|
12
12
|
)}" stroke="${stroke}" stroke-width="${strokeWidth}" />`;
|
|
13
13
|
|
|
14
|
-
export function svgPolygon(factor: number, rot: Vec3, points: ReadonlyArray<Vec2>, fill: string, stroke: string, strokeWidth: number, holes?: ReadonlyArray<Hole>): string {
|
|
14
|
+
export function svgPolygon(factor: number, rot: Vec3, points: ReadonlyArray<Vec2>, fill: string, opacity: number, stroke: string, strokeWidth: number, holes?: ReadonlyArray<Hole>): string {
|
|
15
15
|
const bounds = bounds2FromVec2Array(points);
|
|
16
16
|
const size = vec2Sub(bounds.max, bounds.min);
|
|
17
|
-
const [mask,
|
|
17
|
+
const [mask, maskAttribute] = svgHoleMask(factor, rot, size, holes ?? []);
|
|
18
18
|
const pol = `<polygon points="${points
|
|
19
19
|
.reduce((a, c) => (a += `${c.x.toFixed(0)},${c.y.toFixed(0)} `), "")
|
|
20
|
-
.slice(0, -1)}" fill="${fill}" stroke="${stroke}" stroke-width="${strokeWidth}"
|
|
20
|
+
.slice(0, -1)}" fill="${fill}" fill-opacity="${opacity.toFixed(1)}" stroke="${stroke}" stroke-width="${strokeWidth}" ${maskAttribute}/>`;
|
|
21
21
|
return mask + pol;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
export function svgCircle(radius: number, rot: Vec3, pos: Vec2, fill: string, stroke: string, strokeWidth: number, factor: number, holes?: ReadonlyArray<Hole>): string {
|
|
24
|
+
export function svgCircle(radius: number, rot: Vec3, pos: Vec2, fill: string, opacity: number, stroke: string, strokeWidth: number, factor: number, holes?: ReadonlyArray<Hole>): string {
|
|
25
25
|
const size = vec2Scale(vec2(radius, radius), 2);
|
|
26
|
-
const [mask,
|
|
27
|
-
const cir = `<circle r="${radius.toFixed(0)}" cx="${pos.x.toFixed(0)}" cy="${pos.y.toFixed(0)}" fill="${fill}" stroke="${stroke}" stroke-width="${strokeWidth}"
|
|
26
|
+
const [mask, maskAttribute] = svgHoleMask(factor, rot, size, holes ?? []);
|
|
27
|
+
const cir = `<circle r="${radius.toFixed(0)}" cx="${pos.x.toFixed(0)}" cy="${pos.y.toFixed(0)}" fill="${fill}" fill-opacity="${opacity.toFixed(1)}" stroke="${stroke}" stroke-width="${strokeWidth}" ${maskAttribute}/>`;
|
|
28
28
|
return mask + cir;
|
|
29
29
|
}
|
|
30
30
|
|
|
@@ -35,11 +35,16 @@ export const svgCircle2 = (radius: number, pos: Vec2, fill: string, stroke: stri
|
|
|
35
35
|
|
|
36
36
|
function svgHoleMask(factor: number, rot: Vec3, size: Vec2, holes: ReadonlyArray<Hole>): [string, string] {
|
|
37
37
|
const id = `mask_${counter()}`;
|
|
38
|
-
return
|
|
39
|
-
|
|
38
|
+
return holes.length > 0 ? [
|
|
39
|
+
`<mask id="${id}" mask-type="luminance" maskContentUnits="objectBoundingBox">
|
|
40
40
|
<rect x="0" y="0" width="1" height="1" fill="white" />
|
|
41
41
|
${svgMaskHoles(factor, rot, size, holes ?? [])}
|
|
42
|
-
</mask>\n
|
|
42
|
+
</mask>\n`,
|
|
43
|
+
`mask="url(#${id}) "`
|
|
44
|
+
] : [
|
|
45
|
+
"",
|
|
46
|
+
""
|
|
47
|
+
];
|
|
43
48
|
}
|
|
44
49
|
|
|
45
50
|
function svgMaskHoles(factor: number, rot: Vec3, size: Vec2, holes: ReadonlyArray<Hole>): string {
|
|
@@ -56,7 +61,7 @@ function svgMaskHoles(factor: number, rot: Vec3, size: Vec2, holes: ReadonlyArra
|
|
|
56
61
|
case "SquareHole":
|
|
57
62
|
const holeSizeRotated = vec3Rot(vec3(hole.size.x, hole.size.y, 0), vec3Zero, rot);
|
|
58
63
|
const holeSizeAbs = vec2(Math.abs(holeSizeRotated.x), Math.abs(holeSizeRotated.y));
|
|
59
|
-
const holeSize = vec2Scale(holeSizeAbs, factor
|
|
64
|
+
const holeSize = vec2Scale(holeSizeAbs, factor);
|
|
60
65
|
const halfSize = vec2Scale(holeSize, 0.5);
|
|
61
66
|
holeMasks.push(`<rect x="${(holePos.x - halfSize.x) / size.x}" y="${(holePos.y - halfSize.y) / size.y}" width="${holeSize.x / size.x}" height="${holeSize.y / size.y}" fill="black" />`)
|
|
62
67
|
break;
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
vec3Zero,
|
|
9
9
|
vec3,
|
|
10
10
|
vec3ZMean,
|
|
11
|
+
Material,
|
|
11
12
|
} from "../../../abstract-3d.js";
|
|
12
13
|
import { gray, black, zElem, zOrderElement, SvgOptions } from "./shared.js";
|
|
13
14
|
import { svgPolygon } from "../svg-encoding.js";
|
|
@@ -16,7 +17,7 @@ import { rgbGrayScale } from "../../shared.js";
|
|
|
16
17
|
export function box(
|
|
17
18
|
b: Box,
|
|
18
19
|
point: (x: number, y: number) => Vec2,
|
|
19
|
-
|
|
20
|
+
material: Material,
|
|
20
21
|
opts: SvgOptions,
|
|
21
22
|
parentPos: Vec3,
|
|
22
23
|
parentRot: Vec3,
|
|
@@ -57,13 +58,15 @@ export function box(
|
|
|
57
58
|
? [[point(v6.x, v6.y), point(v2.x, v2.y), point(v3.x, v3.y), point(v7.x, v7.y)], rightMean]
|
|
58
59
|
: [[point(v5.x, v5.y), point(v1.x, v1.y), point(v4.x, v4.y), point(v8.x, v8.y)], leftMean];
|
|
59
60
|
|
|
61
|
+
const color = material.normal;
|
|
62
|
+
const opacity = material.opacity ?? 1.0;
|
|
60
63
|
const [strokeColor, fill, strokeUse] = opts.onlyStroke
|
|
61
64
|
? [opts.grayScale ? gray : color, opts.onlyStrokeFill, opts.stroke]
|
|
62
65
|
: [black, opts.grayScale ? rgbGrayScale(color) : color, 0];
|
|
63
66
|
|
|
64
67
|
return [
|
|
65
|
-
zElem(svgPolygon(factor, rot, frontBackPoints, fill, strokeColor, strokeUse, b.holes), frontBackMean),
|
|
66
|
-
zElem(svgPolygon(factor, rot, topBotPoints, fill, strokeColor, strokeUse), topBotMean),
|
|
67
|
-
zElem(svgPolygon(factor, rot, rightLeftPoints, fill, strokeColor, strokeUse), rightLeftMean),
|
|
68
|
+
zElem(svgPolygon(factor, rot, frontBackPoints, fill, opacity, strokeColor, strokeUse, b.holes), frontBackMean),
|
|
69
|
+
zElem(svgPolygon(factor, rot, topBotPoints, fill, opacity, strokeColor, strokeUse), topBotMean),
|
|
70
|
+
zElem(svgPolygon(factor, rot, rightLeftPoints, fill, opacity, strokeColor, strokeUse), rightLeftMean),
|
|
68
71
|
];
|
|
69
72
|
}
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
vec3Zero,
|
|
9
9
|
vec3ZMean,
|
|
10
10
|
equals,
|
|
11
|
+
Material,
|
|
11
12
|
} from "../../../abstract-3d.js";
|
|
12
13
|
import { gray, stBW, zElem, zOrderElement, transparent, SvgOptions } from "./shared.js";
|
|
13
14
|
import { svgCircle, svgPolygon } from "../svg-encoding.js";
|
|
@@ -16,7 +17,7 @@ import { rgbGrayScale } from "../../shared.js";
|
|
|
16
17
|
export function cone(
|
|
17
18
|
c: Cone,
|
|
18
19
|
point: (x: number, y: number) => Vec2,
|
|
19
|
-
|
|
20
|
+
material: Material,
|
|
20
21
|
opts: SvgOptions,
|
|
21
22
|
parentPos: Vec3,
|
|
22
23
|
parentRot: Vec3,
|
|
@@ -27,6 +28,8 @@ export function cone(
|
|
|
27
28
|
const rot = vec3RotCombine(parentRot, c.rot ?? vec3Zero);
|
|
28
29
|
const vec3tr = (p: Vec3): Vec3 => vec3TransRot(p, pos, rot);
|
|
29
30
|
|
|
31
|
+
const color = material.normal;
|
|
32
|
+
const opacity = material.opacity ?? 1.0;
|
|
30
33
|
const [stroke, fill] = opts.onlyStroke
|
|
31
34
|
? [opts.grayScale ? gray : color, opts.onlyStrokeFill]
|
|
32
35
|
: [transparent, opts.grayScale ? rgbGrayScale(color) : color];
|
|
@@ -49,7 +52,7 @@ export function cone(
|
|
|
49
52
|
point(topPos.x, topPos.y),
|
|
50
53
|
point(topPos.x, topPos.y),
|
|
51
54
|
];
|
|
52
|
-
zOrderComponents.push(zElem(svgPolygon(factor, rot, points, fill, stroke, stBW), vec3ZMean(currBot, prevBot, topPos)));
|
|
55
|
+
zOrderComponents.push(zElem(svgPolygon(factor, rot, points, fill, opacity, stroke, stBW), vec3ZMean(currBot, prevBot, topPos)));
|
|
53
56
|
}
|
|
54
57
|
currentAngle += angleStep;
|
|
55
58
|
}
|
|
@@ -59,7 +62,7 @@ export function cone(
|
|
|
59
62
|
const cylBottom = vec3tr(vec3(0, -half.y, 0));
|
|
60
63
|
if (equals(cylTop.x, cylBottom.x, 0.1) && equals(cylTop.y, cylBottom.y, 0.1)) {
|
|
61
64
|
zOrderComponents.push(
|
|
62
|
-
zElem(svgCircle(factor * c.radius, rot, point(cylBottom.x, cylBottom.y), fill, stroke, stBW, factor), cylBottom.z)
|
|
65
|
+
zElem(svgCircle(factor * c.radius, rot, point(cylBottom.x, cylBottom.y), fill, opacity, stroke, stBW, factor), cylBottom.z)
|
|
63
66
|
);
|
|
64
67
|
}
|
|
65
68
|
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
vec3Zero,
|
|
9
9
|
vec3ZMean,
|
|
10
10
|
equals,
|
|
11
|
+
Material,
|
|
11
12
|
} from "../../../abstract-3d.js";
|
|
12
13
|
import { gray, stBW, SvgOptions, transparent, zElem, zOrderElement } from "./shared.js";
|
|
13
14
|
import { svgCircle, svgPolygon } from "../svg-encoding.js";
|
|
@@ -16,7 +17,7 @@ import { rgbGrayScale } from "../../shared.js";
|
|
|
16
17
|
export function cylinder(
|
|
17
18
|
c: Cylinder,
|
|
18
19
|
point: (x: number, y: number) => Vec2,
|
|
19
|
-
|
|
20
|
+
material: Material,
|
|
20
21
|
opts: SvgOptions,
|
|
21
22
|
parentPos: Vec3,
|
|
22
23
|
parentRot: Vec3,
|
|
@@ -27,6 +28,8 @@ export function cylinder(
|
|
|
27
28
|
const rot = vec3RotCombine(parentRot, c.rot ?? vec3Zero);
|
|
28
29
|
const vec3tr = (p: Vec3): Vec3 => vec3TransRot(p, pos, rot);
|
|
29
30
|
|
|
31
|
+
const color = material.normal;
|
|
32
|
+
const opacity = material.opacity ?? 1.0;
|
|
30
33
|
const [stroke, fill] = opts.onlyStroke
|
|
31
34
|
? [opts.grayScale ? gray : color, opts.onlyStrokeFill]
|
|
32
35
|
: [transparent, opts.grayScale ? rgbGrayScale(color) : color];
|
|
@@ -56,7 +59,7 @@ export function cylinder(
|
|
|
56
59
|
point(currTop.x, currTop.y),
|
|
57
60
|
];
|
|
58
61
|
zOrderComponents.push(
|
|
59
|
-
zElem(svgPolygon(factor, rot, points, fill, stroke, stBW), vec3ZMean(currBot, prevBot, currTop, prevTop))
|
|
62
|
+
zElem(svgPolygon(factor, rot, points, fill, opacity, stroke, stBW), vec3ZMean(currBot, prevBot, currTop, prevTop))
|
|
60
63
|
);
|
|
61
64
|
}
|
|
62
65
|
currentAngle += angleStep;
|
|
@@ -68,7 +71,7 @@ export function cylinder(
|
|
|
68
71
|
if (equals(circleTop.x, circleBottom.x, 0.1) && equals(circleTop.y, circleBottom.y, 0.1)) {
|
|
69
72
|
const circlePos = circleTop.z > circleBottom.z ? circleTop : circleBottom;
|
|
70
73
|
zOrderComponents.push(
|
|
71
|
-
zElem(svgCircle(factor * c.radius, rot, point(circlePos.x, circlePos.y), fill, stroke, stBW, factor, c.holes), circlePos.z)
|
|
74
|
+
zElem(svgCircle(factor * c.radius, rot, point(circlePos.x, circlePos.y), fill, opacity, stroke, stBW, factor, c.holes), circlePos.z)
|
|
72
75
|
);
|
|
73
76
|
}
|
|
74
77
|
}
|
|
@@ -59,7 +59,7 @@ export function plane(
|
|
|
59
59
|
const [strokeColor, fill, strokeThickness] = opts.onlyStroke
|
|
60
60
|
? [opts.grayScale ? gray : material.normal, opts.onlyStrokeFill, opts.stroke]
|
|
61
61
|
: [black, opts.grayScale ? rgbGrayScale(material.normal) : material.normal, 0];
|
|
62
|
-
return [zElem(svgPolygon(factor, rot, points, fill, strokeColor, strokeThickness, holes), vec3ZMean(v1, v2, v3, v4))];
|
|
62
|
+
return [zElem(svgPolygon(factor, rot, points, fill, material.opacity ?? 1.0, strokeColor, strokeThickness, holes), vec3ZMean(v1, v2, v3, v4))];
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
const rawSvgPrefix = "data:image/svg+xml,";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Polygon, vec3ZMean, Vec3, Vec2, vec3TransRot, vec3RotCombine, vec3Zero } from "../../../abstract-3d.js";
|
|
1
|
+
import { Polygon, vec3ZMean, Vec3, Vec2, vec3TransRot, vec3RotCombine, vec3Zero, Material } from "../../../abstract-3d.js";
|
|
2
2
|
import { gray, zElem, zOrderElement, transparent, SvgOptions } from "./shared.js";
|
|
3
3
|
import { svgPolygon } from "../svg-encoding.js";
|
|
4
4
|
import { rgbGrayScale } from "../../shared.js";
|
|
@@ -7,7 +7,7 @@ export function polygon(
|
|
|
7
7
|
p: Polygon,
|
|
8
8
|
point: (x: number, y: number) => Vec2,
|
|
9
9
|
factor: number,
|
|
10
|
-
|
|
10
|
+
material: Material,
|
|
11
11
|
opts: SvgOptions,
|
|
12
12
|
parentPos: Vec3,
|
|
13
13
|
parentRot: Vec3
|
|
@@ -16,8 +16,9 @@ export function polygon(
|
|
|
16
16
|
const rot = vec3RotCombine(parentRot, p.rot ?? vec3Zero);
|
|
17
17
|
const rotatedPoints = p.points.map((p) => vec3TransRot(p, pos, rot));
|
|
18
18
|
const points = rotatedPoints.map(({ x, y }) => point(x, y));
|
|
19
|
+
const color = material.normal;
|
|
19
20
|
const [strokeColor, fill, strokeThickness] = opts.onlyStroke
|
|
20
21
|
? [opts.grayScale ? gray : color, opts.onlyStrokeFill, opts.stroke]
|
|
21
22
|
: [transparent, opts.grayScale ? rgbGrayScale(color) : color, 0];
|
|
22
|
-
return [zElem(svgPolygon(factor, rot, points, fill, strokeColor, strokeThickness), vec3ZMean(...rotatedPoints))];
|
|
23
|
+
return [zElem(svgPolygon(factor, rot, points, fill, material.opacity ?? 1.0, strokeColor, strokeThickness), vec3ZMean(...rotatedPoints))];
|
|
23
24
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { vec3ZMean, Vec3, Vec2, vec3TransRot, vec3RotCombine, Shape, vec3, vec3Zero } from "../../../abstract-3d.js";
|
|
1
|
+
import { vec3ZMean, Vec3, Vec2, vec3TransRot, vec3RotCombine, Shape, vec3, vec3Zero, Material } from "../../../abstract-3d.js";
|
|
2
2
|
import { gray, zElem, zOrderElement, transparent, SvgOptions } from "./shared.js";
|
|
3
3
|
import { svgPolygon } from "../svg-encoding.js";
|
|
4
4
|
import { rgbGrayScale } from "../../shared.js";
|
|
@@ -7,7 +7,7 @@ export function shape(
|
|
|
7
7
|
s: Shape,
|
|
8
8
|
point: (x: number, y: number) => Vec2,
|
|
9
9
|
factor: number,
|
|
10
|
-
|
|
10
|
+
material: Material,
|
|
11
11
|
opts: SvgOptions,
|
|
12
12
|
parentPos: Vec3,
|
|
13
13
|
parentRot: Vec3
|
|
@@ -16,8 +16,9 @@ export function shape(
|
|
|
16
16
|
const rot = vec3RotCombine(parentRot, s.rot ?? vec3Zero);
|
|
17
17
|
const rotatedPoints = s.points.map((p) => vec3TransRot(vec3(p.x, p.y, 0), pos, rot));
|
|
18
18
|
const points = rotatedPoints.map(({ x, y }) => point(x, y));
|
|
19
|
+
const color = material.normal;
|
|
19
20
|
const [strokeColor, fill] = opts.onlyStroke
|
|
20
21
|
? [opts.grayScale ? gray : color, opts.onlyStrokeFill]
|
|
21
22
|
: [transparent, opts.grayScale ? rgbGrayScale(color) : color];
|
|
22
|
-
return [zElem(svgPolygon(factor, rot, points, fill, strokeColor, 0), vec3ZMean(...rotatedPoints))];
|
|
23
|
+
return [zElem(svgPolygon(factor, rot, points, fill, material.opacity ?? 1.0, strokeColor, 0), vec3ZMean(...rotatedPoints))];
|
|
23
24
|
}
|
package/src/renderers/svg/svg.ts
CHANGED
|
@@ -123,24 +123,23 @@ function svgMesh(
|
|
|
123
123
|
material: Material,
|
|
124
124
|
opts: SvgOptions
|
|
125
125
|
): ReadonlyArray<zOrderElement> {
|
|
126
|
-
const color = material.normal;
|
|
127
126
|
switch (mesh.geometry.type) {
|
|
128
127
|
case "Box":
|
|
129
|
-
return box(mesh.geometry, point,
|
|
128
|
+
return box(mesh.geometry, point, material, opts, parentPos, parentRot, factor);
|
|
130
129
|
case "Plane":
|
|
131
130
|
return plane(mesh.geometry, point, factor, material, opts, parentPos, parentRot);
|
|
132
131
|
case "Cylinder":
|
|
133
|
-
return cylinder(mesh.geometry, point,
|
|
132
|
+
return cylinder(mesh.geometry, point, material, opts, parentPos, parentRot, factor);
|
|
134
133
|
case "Cone":
|
|
135
|
-
return cone(mesh.geometry, point,
|
|
134
|
+
return cone(mesh.geometry, point, material, opts, parentPos, parentRot, factor);
|
|
136
135
|
case "Line":
|
|
137
|
-
return line(mesh.geometry, point,
|
|
136
|
+
return line(mesh.geometry, point, material.normal, opts, parentPos, parentRot);
|
|
138
137
|
case "Polygon":
|
|
139
|
-
return polygon(mesh.geometry, point, factor,
|
|
138
|
+
return polygon(mesh.geometry, point, factor, material, opts, parentPos, parentRot);
|
|
140
139
|
case "Shape":
|
|
141
|
-
return shape(mesh.geometry, point, factor,
|
|
140
|
+
return shape(mesh.geometry, point, factor, material, opts, parentPos, parentRot);
|
|
142
141
|
case "Text":
|
|
143
|
-
return text(mesh.geometry, point,
|
|
142
|
+
return text(mesh.geometry, point, material.normal, opts, parentPos, parentRot, factor);
|
|
144
143
|
case "Tube":
|
|
145
144
|
case "Sphere":
|
|
146
145
|
return [];
|