human2ai 0.1.3 → 0.1.4
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/README.en.md +36 -4
- package/README.md +36 -4
- package/dist/cli/main.js +26 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/database/style-library-repository.d.ts +14 -1
- package/dist/database/style-library-repository.js +59 -0
- package/dist/database/style-library-repository.js.map +1 -1
- package/dist/domain/composition/analysis.d.ts +3 -0
- package/dist/domain/composition/analysis.js +4 -0
- package/dist/domain/composition/analysis.js.map +1 -1
- package/dist/domain/composition/draft.d.ts +1 -0
- package/dist/domain/composition/draft.js +73 -2
- package/dist/domain/composition/draft.js.map +1 -1
- package/dist/domain/composition/frame.d.ts +1 -0
- package/dist/domain/composition/frame.js +6 -0
- package/dist/domain/composition/frame.js.map +1 -1
- package/dist/domain/composition/index.d.ts +4 -1
- package/dist/domain/composition/index.js +4 -1
- package/dist/domain/composition/index.js.map +1 -1
- package/dist/domain/composition/planning-intersections.d.ts +20 -0
- package/dist/domain/composition/planning-intersections.js +119 -0
- package/dist/domain/composition/planning-intersections.js.map +1 -0
- package/dist/domain/composition/planning.d.ts +25 -0
- package/dist/domain/composition/planning.js +152 -0
- package/dist/domain/composition/planning.js.map +1 -0
- package/dist/domain/composition/render.js +8 -0
- package/dist/domain/composition/render.js.map +1 -1
- package/dist/domain/composition/states.js +4 -1
- package/dist/domain/composition/states.js.map +1 -1
- package/dist/domain/composition/types.d.ts +46 -0
- package/dist/domain/spatial/camera-render-key.d.ts +7 -0
- package/dist/domain/spatial/camera-render-key.js +63 -0
- package/dist/domain/spatial/camera-render-key.js.map +1 -0
- package/dist/domain/spatial/lighting.js +3 -2
- package/dist/domain/spatial/lighting.js.map +1 -1
- package/dist/domain/spatial/model.d.ts +2 -0
- package/dist/domain/spatial/model.js +82 -27
- package/dist/domain/spatial/model.js.map +1 -1
- package/dist/domain/spatial/preview.d.ts +4 -0
- package/dist/domain/spatial/preview.js +23 -0
- package/dist/domain/spatial/preview.js.map +1 -0
- package/dist/domain/spatial/reference-lines.d.ts +12 -3
- package/dist/domain/spatial/reference-lines.js +37 -16
- package/dist/domain/spatial/reference-lines.js.map +1 -1
- package/dist/domain/spatial/render-inputs.d.ts +1 -1
- package/dist/domain/spatial/render-inputs.js +10 -2
- package/dist/domain/spatial/render-inputs.js.map +1 -1
- package/dist/domain/spatial/scene-cache.d.ts +13 -1
- package/dist/domain/spatial/scene-cache.js +88 -10
- package/dist/domain/spatial/scene-cache.js.map +1 -1
- package/dist/domain/spatial/scene-update.d.ts +6 -0
- package/dist/domain/spatial/scene-update.js +52 -0
- package/dist/domain/spatial/scene-update.js.map +1 -0
- package/dist/domain/spatial/scene.d.ts +3 -1
- package/dist/domain/spatial/scene.js +78 -20
- package/dist/domain/spatial/scene.js.map +1 -1
- package/dist/domain/style/model-input.d.ts +3 -0
- package/dist/domain/style/model-input.js +36 -0
- package/dist/domain/style/model-input.js.map +1 -0
- package/dist/domain/style/types.d.ts +7 -0
- package/dist/server/routes/spatial-sessions.js +28 -12
- package/dist/server/routes/spatial-sessions.js.map +1 -1
- package/dist/server/routes/style-library.js +39 -0
- package/dist/server/routes/style-library.js.map +1 -1
- package/dist/server/spatial-render-service.d.ts +21 -0
- package/dist/server/spatial-render-service.js +67 -0
- package/dist/server/spatial-render-service.js.map +1 -0
- package/dist/server/spatial-render-worker.d.ts +1 -0
- package/dist/server/spatial-render-worker.js +15 -0
- package/dist/server/spatial-render-worker.js.map +1 -0
- package/dist/server/spatial-render.d.ts +14 -2
- package/dist/server/spatial-render.js +38 -7
- package/dist/server/spatial-render.js.map +1 -1
- package/locales/en/common.json +60 -4
- package/migrations/0010_style_preview_models.sql +8 -0
- package/package.json +1 -1
- package/schemas/composition-draft.schema.json +457 -0
- package/skills/human2ai/SKILL.md +12 -4
- package/skills/human2ai/references/composition.md +192 -1
- package/skills/human2ai/references/spatial-modeling.md +20 -0
- package/web/out/404/index.html +1 -1
- package/web/out/404.html +1 -1
- package/web/out/__next.__PAGE__.txt +6 -6
- package/web/out/__next._full.txt +6 -6
- package/web/out/__next._tree.txt +3 -3
- package/web/out/_next/static/chunks/101.6ef34adad3e9815b.js +1 -0
- package/web/out/_next/static/chunks/130-7e9e715a084569bb.js +1 -0
- package/web/out/_next/static/chunks/166-96a8c6ae1e9aed59.js +1 -0
- package/web/out/_next/static/chunks/218.7b89674409b344b8.js +1 -0
- package/web/out/_next/static/chunks/484.92b016222d6749f2.js +1 -0
- package/web/out/_next/static/chunks/{773-24ba65074da7fa71.js → 635-611c009924b842be.js} +50 -50
- package/web/out/_next/static/chunks/653-6dfb97fec9a2d91b.js +1 -0
- package/web/out/_next/static/chunks/678-32d3aa1859450d63.js +1 -0
- package/web/out/_next/static/chunks/83607670-fd2f339702a222e4.js +1 -0
- package/web/out/_next/static/chunks/app/_not-found/page-b92817fdc4609975.js +1 -0
- package/web/out/_next/static/chunks/app/composition/page-6c12ee8472715448.js +1 -0
- package/web/out/_next/static/chunks/app/{layout-3b5f82ced220ef42.js → layout-1dd9196cde94389c.js} +1 -1
- package/web/out/_next/static/chunks/app/{page-d41d1cdb1d6ed018.js → page-741ecaf9ee8c3c07.js} +1 -1
- package/web/out/_next/static/chunks/app/spatial/page-5ba0940650df6c7f.js +1 -0
- package/web/out/_next/static/chunks/app/styles/page-1ccfc2c5fbc1e646.js +1 -0
- package/web/out/_next/static/chunks/app/ui-sketch/page-ef4f2e531583e684.js +1 -0
- package/web/out/_next/static/chunks/{c3f2cda1-9e279dab137b7272.js → c3f2cda1-ef85a0897724e46b.js} +1 -1
- package/web/out/_next/static/chunks/{main-app-ec9e35d71481270a.js → main-app-cf37a257d91ce62e.js} +1 -1
- package/web/out/_next/static/chunks/next/dist/client/components/builtin/global-error-33b4f58f02e82215.js +1 -0
- package/web/out/_next/static/chunks/webpack-d16ce1f994e98178.js +1 -0
- package/web/out/_next/static/css/06743b5635914999.css +5 -0
- package/web/out/_next/static/css/0b43ff4a0439c97e.css +1 -0
- package/web/out/_next/static/css/39e8cace36461a15.css +1 -0
- package/web/out/_not-found/__next._full.txt +3 -3
- package/web/out/_not-found/__next._not-found.__PAGE__.txt +3 -3
- package/web/out/_not-found/__next._tree.txt +1 -1
- package/web/out/_not-found/index.html +1 -1
- package/web/out/_not-found/index.txt +3 -3
- package/web/out/composition/__next._full.txt +6 -6
- package/web/out/composition/__next._tree.txt +3 -3
- package/web/out/composition/__next.composition.__PAGE__.txt +6 -6
- package/web/out/composition/index.html +1 -1
- package/web/out/composition/index.txt +6 -6
- package/web/out/index.html +1 -1
- package/web/out/index.txt +6 -6
- package/web/out/spatial/__next._full.txt +6 -6
- package/web/out/spatial/__next._tree.txt +3 -3
- package/web/out/spatial/__next.spatial.__PAGE__.txt +6 -6
- package/web/out/spatial/index.html +1 -1
- package/web/out/spatial/index.txt +6 -6
- package/web/out/styles/__next._full.txt +6 -6
- package/web/out/styles/__next._tree.txt +3 -3
- package/web/out/styles/__next.styles.__PAGE__.txt +6 -6
- package/web/out/styles/index.html +1 -1
- package/web/out/styles/index.txt +6 -6
- package/web/out/ui-sketch/__next._full.txt +6 -6
- package/web/out/ui-sketch/__next._tree.txt +3 -3
- package/web/out/ui-sketch/__next.ui-sketch.__PAGE__.txt +6 -6
- package/web/out/ui-sketch/index.html +1 -1
- package/web/out/ui-sketch/index.txt +6 -6
- package/web/out/_next/static/chunks/130-027b022c82d30077.js +0 -1
- package/web/out/_next/static/chunks/678-6f33e7277564a5df.js +0 -1
- package/web/out/_next/static/chunks/728-7597352c3a7eeaf9.js +0 -1
- package/web/out/_next/static/chunks/83607670-bc1279370476e59f.js +0 -1
- package/web/out/_next/static/chunks/app/_not-found/page-58bf95050b473956.js +0 -1
- package/web/out/_next/static/chunks/app/composition/page-30184e9c21352991.js +0 -1
- package/web/out/_next/static/chunks/app/spatial/page-fc3c66e1f94ed210.js +0 -1
- package/web/out/_next/static/chunks/app/styles/page-194a16109270e08d.js +0 -1
- package/web/out/_next/static/chunks/app/ui-sketch/page-c28eeab67fea766e.js +0 -1
- package/web/out/_next/static/chunks/next/dist/client/components/builtin/global-error-f62e60e5a6e74304.js +0 -1
- package/web/out/_next/static/chunks/webpack-fdd377b620f7ea99.js +0 -1
- package/web/out/_next/static/css/2ed56cbf8f662d23.css +0 -5
- package/web/out/_next/static/css/96839f63fcc5e50d.css +0 -1
- /package/web/out/_next/static/{Wakl9xK54qWYuP4Hpi0W9 → n4UcxqMmr_2CBmSxBp52z}/_buildManifest.js +0 -0
- /package/web/out/_next/static/{Wakl9xK54qWYuP4Hpi0W9 → n4UcxqMmr_2CBmSxBp52z}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { frameBoundsInCanvas, framePointToCanvas } from "./frame.js";
|
|
2
|
+
import { compositionPlanGeometry } from "./planning.js";
|
|
3
|
+
const EPSILON = 1e-7; // Physical canvas units, independent of editor zoom.
|
|
4
|
+
/** Derive isolated intersections from validated active-state plans, including hidden guides. */
|
|
5
|
+
export function compositionPlanningIntersections(draft) {
|
|
6
|
+
const frame = frameBoundsInCanvas(draft.frame);
|
|
7
|
+
const lines = (draft.plans ?? []).flatMap((plan) => {
|
|
8
|
+
const geometry = compositionPlanGeometry(plan, draft.frame);
|
|
9
|
+
const paths = plan.type === "triangle"
|
|
10
|
+
? geometry.paths[0].slice(0, -1).map((start, index) => [start, geometry.paths[0][index + 1]])
|
|
11
|
+
: geometry.paths;
|
|
12
|
+
return paths.map((points, index) => ({
|
|
13
|
+
source: { planId: plan.id, type: plan.type, lineId: planningLineId(plan, index), visible: plan.visible },
|
|
14
|
+
segments: points.slice(0, -1).map((start, index) => ({ start, end: points[index + 1] })),
|
|
15
|
+
maxCurveDeviationPx: (geometry.maxCurveDeviation ?? 0) * draft.frame.width / frame.width,
|
|
16
|
+
}));
|
|
17
|
+
});
|
|
18
|
+
const intersections = [];
|
|
19
|
+
for (let first = 0; first < lines.length; first += 1) {
|
|
20
|
+
for (let second = first + 1; second < lines.length; second += 1) {
|
|
21
|
+
const a = lines[first], b = lines[second];
|
|
22
|
+
const points = [], overlaps = [];
|
|
23
|
+
for (const aSegment of a.segments) {
|
|
24
|
+
for (const bSegment of b.segments) {
|
|
25
|
+
const hit = intersectSegments(aSegment, bSegment);
|
|
26
|
+
if (hit && "point" in hit)
|
|
27
|
+
points.push(hit.point);
|
|
28
|
+
else if (hit)
|
|
29
|
+
overlaps.push(hit.overlap);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
for (const point of points) {
|
|
33
|
+
if (point.x < frame.x - EPSILON || point.x > frame.x + frame.width + EPSILON
|
|
34
|
+
|| point.y < frame.y - EPSILON || point.y > frame.y + frame.height + EPSILON)
|
|
35
|
+
continue;
|
|
36
|
+
// Continuous overlaps have no unique intersection, including shared polyline vertices.
|
|
37
|
+
if (overlaps.some((segment) => pointOnSegment(point, segment)))
|
|
38
|
+
continue;
|
|
39
|
+
let intersection = intersections.find((entry) => Math.hypot(entry.point.x - point.x, entry.point.y - point.y) <= EPSILON);
|
|
40
|
+
if (!intersection) {
|
|
41
|
+
intersection = { point, sources: [], maxCurveDeviationPx: 0 };
|
|
42
|
+
intersections.push(intersection);
|
|
43
|
+
}
|
|
44
|
+
for (const source of [a.source, b.source]) {
|
|
45
|
+
if (!intersection.sources.some((entry) => entry.planId === source.planId && entry.lineId === source.lineId)) {
|
|
46
|
+
intersection.sources.push(source);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
intersection.maxCurveDeviationPx = Math.max(intersection.maxCurveDeviationPx, a.maxCurveDeviationPx, b.maxCurveDeviationPx);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return intersections.sort((a, b) => a.point.y - b.point.y || a.point.x - b.point.x).map((entry, index) => {
|
|
54
|
+
const framePoint = {
|
|
55
|
+
x: Math.max(0, Math.min(1, (entry.point.x - frame.x) / frame.width)),
|
|
56
|
+
y: Math.max(0, Math.min(1, (entry.point.y - frame.y) / frame.height)),
|
|
57
|
+
};
|
|
58
|
+
return {
|
|
59
|
+
id: `intersection-${index + 1}`,
|
|
60
|
+
framePoint,
|
|
61
|
+
canvasPoint: framePointToCanvas(framePoint, draft.frame),
|
|
62
|
+
sources: entry.sources,
|
|
63
|
+
precision: {
|
|
64
|
+
kind: entry.sources.some((source) => source.type === "golden-spiral") ? "approximate" : "exact",
|
|
65
|
+
maxCurveDeviationPx: entry.maxCurveDeviationPx,
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
function planningLineId(plan, index) {
|
|
71
|
+
if (plan.type === "thirds" || plan.type === "golden-section") {
|
|
72
|
+
const axis = plan.axes === "both" ? index % 2 === 0 ? "vertical" : "horizontal" : plan.axes;
|
|
73
|
+
return `${axis}-${plan.axes === "both" ? Math.floor(index / 2) + 1 : index + 1}`;
|
|
74
|
+
}
|
|
75
|
+
return plan.type === "triangle" ? `edge-${index + 1}` : plan.type === "radial" ? `ray-${index + 1}`
|
|
76
|
+
: plan.type === "symmetry" ? "axis" : "spiral";
|
|
77
|
+
}
|
|
78
|
+
function intersectSegments(a, b) {
|
|
79
|
+
if (Math.max(a.start.x, a.end.x) + EPSILON < Math.min(b.start.x, b.end.x)
|
|
80
|
+
|| Math.max(b.start.x, b.end.x) + EPSILON < Math.min(a.start.x, a.end.x)
|
|
81
|
+
|| Math.max(a.start.y, a.end.y) + EPSILON < Math.min(b.start.y, b.end.y)
|
|
82
|
+
|| Math.max(b.start.y, b.end.y) + EPSILON < Math.min(a.start.y, a.end.y))
|
|
83
|
+
return null;
|
|
84
|
+
const r = subtract(a.end, a.start), s = subtract(b.end, b.start), offset = subtract(b.start, a.start);
|
|
85
|
+
const rLength = Math.hypot(r.x, r.y), sLength = Math.hypot(s.x, s.y);
|
|
86
|
+
if (rLength <= EPSILON || sLength <= EPSILON)
|
|
87
|
+
return null;
|
|
88
|
+
const denominator = cross(r, s);
|
|
89
|
+
if (Math.abs(denominator) <= 1e-12 * rLength * sLength) {
|
|
90
|
+
if (Math.abs(cross(offset, r)) > EPSILON * rLength)
|
|
91
|
+
return null;
|
|
92
|
+
const start = (offset.x * r.x + offset.y * r.y) / rLength ** 2;
|
|
93
|
+
const end = start + (s.x * r.x + s.y * r.y) / rLength ** 2;
|
|
94
|
+
const low = Math.max(0, Math.min(start, end)), high = Math.min(1, Math.max(start, end));
|
|
95
|
+
if (high < low - EPSILON / rLength)
|
|
96
|
+
return null;
|
|
97
|
+
if (high - low <= EPSILON / rLength)
|
|
98
|
+
return { point: along(a, Math.max(0, Math.min(1, (low + high) / 2))) };
|
|
99
|
+
return { overlap: { start: along(a, low), end: along(a, high) } };
|
|
100
|
+
}
|
|
101
|
+
const t = cross(offset, s) / denominator, u = cross(offset, r) / denominator;
|
|
102
|
+
if (t < -EPSILON / rLength || t > 1 + EPSILON / rLength
|
|
103
|
+
|| u < -EPSILON / sLength || u > 1 + EPSILON / sLength)
|
|
104
|
+
return null;
|
|
105
|
+
return { point: along(a, Math.max(0, Math.min(1, t))) };
|
|
106
|
+
}
|
|
107
|
+
function pointOnSegment(point, segment) {
|
|
108
|
+
const delta = subtract(segment.end, segment.start), offset = subtract(point, segment.start);
|
|
109
|
+
const t = (offset.x * delta.x + offset.y * delta.y) / (delta.x ** 2 + delta.y ** 2);
|
|
110
|
+
const nearest = along(segment, Math.max(0, Math.min(1, t)));
|
|
111
|
+
return Math.hypot(point.x - nearest.x, point.y - nearest.y) <= EPSILON;
|
|
112
|
+
}
|
|
113
|
+
function subtract(a, b) { return { x: a.x - b.x, y: a.y - b.y }; }
|
|
114
|
+
function cross(a, b) { return a.x * b.y - a.y * b.x; }
|
|
115
|
+
function along(segment, t) {
|
|
116
|
+
return { x: segment.start.x + (segment.end.x - segment.start.x) * t,
|
|
117
|
+
y: segment.start.y + (segment.end.y - segment.start.y) * t };
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=planning-intersections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planning-intersections.js","sourceRoot":"","sources":["../../../src/domain/composition/planning-intersections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAuBxD,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,qDAAqD;AAE3E,gGAAgG;AAChG,MAAM,UAAU,gCAAgC,CAAC,KAAuB;IACtE,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACjD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU;YACpC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7F,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACnC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;YACxG,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACxF,mBAAmB,EAAE,CAAC,QAAQ,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;SACzF,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IACH,MAAM,aAAa,GAAuG,EAAE,CAAC;IAC7H,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,KAAK,IAAI,MAAM,GAAG,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAY,EAAE,EAAE,QAAQ,GAAc,EAAE,CAAC;YACrD,KAAK,MAAM,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAClC,KAAK,MAAM,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAClC,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAClD,IAAI,GAAG,IAAI,OAAO,IAAI,GAAG;wBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;yBAC7C,IAAI,GAAG;wBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,OAAO;uBACvE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO;oBAAE,SAAS;gBACzF,uFAAuF;gBACvF,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBAAE,SAAS;gBACzE,IAAI,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;gBAC1H,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,YAAY,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC;oBAC9D,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnC,CAAC;gBACD,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC5G,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACpC,CAAC;gBACH,CAAC;gBACD,YAAY,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC;YAC9H,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAA8B,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACpI,MAAM,UAAU,GAAG;YACjB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YACpE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;SACtE,CAAC;QACF,OAAO;YACL,EAAE,EAAE,gBAAgB,KAAK,GAAG,CAAC,EAAE;YAC/B,UAAU;YACV,WAAW,EAAE,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC;YACxD,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE;gBACT,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO;gBAC/F,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;aAC/C;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,IAAqB,EAAE,KAAa;IAC1D,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5F,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;IACnF,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,EAAE;QACjG,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnD,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAU,EAAE,CAAU;IAC/C,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;WACpE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;WACrE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;WACrE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACxF,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACtG,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,GAAG,OAAO,GAAG,OAAO,EAAE,CAAC;QACvD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,OAAO;YAAE,OAAO,IAAI,CAAC;QAChE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACxF,IAAI,IAAI,GAAG,GAAG,GAAG,OAAO,GAAG,OAAO;YAAE,OAAO,IAAI,CAAC;QAChD,IAAI,IAAI,GAAG,GAAG,IAAI,OAAO,GAAG,OAAO;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5G,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;IACpE,CAAC;IACD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC;IAC7E,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,OAAO;WAClD,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,OAAO;QAAE,OAAO,IAAI,CAAC;IACtE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,cAAc,CAAC,KAAY,EAAE,OAAgB;IACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5F,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;AACzE,CAAC;AAED,SAAS,QAAQ,CAAC,CAAQ,EAAE,CAAQ,IAAW,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvF,SAAS,KAAK,CAAC,CAAQ,EAAE,CAAQ,IAAY,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,SAAS,KAAK,CAAC,OAAgB,EAAE,CAAS;IACxC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QACjE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CompositionDraft, CompositionFrame, CompositionPlan, Point } from "./types.ts";
|
|
2
|
+
export declare const COMPOSITION_PLAN_TYPES: readonly ["thirds", "golden-section", "symmetry", "golden-spiral", "triangle", "radial"];
|
|
3
|
+
export declare function addCompositionPlan(input: CompositionDraft, type: CompositionPlan["type"]): {
|
|
4
|
+
draft: CompositionDraft;
|
|
5
|
+
id: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function replaceCompositionPlan(input: CompositionDraft, plan: CompositionPlan): CompositionDraft;
|
|
8
|
+
export declare function removeCompositionPlan(input: CompositionDraft, id: string): CompositionDraft;
|
|
9
|
+
export declare function moveCompositionPlans(input: CompositionDraft, ids: readonly string[], delta: Point): CompositionDraft;
|
|
10
|
+
type RadialPlan = Extract<CompositionPlan, {
|
|
11
|
+
type: "radial";
|
|
12
|
+
}>;
|
|
13
|
+
export declare function compositionRadialAngles(plan: RadialPlan): number[];
|
|
14
|
+
export declare function setCompositionRadialMode(plan: RadialPlan, mode: RadialPlan["mode"]): RadialPlan;
|
|
15
|
+
export declare function setCompositionRadialRayCount(plan: RadialPlan, count: number): RadialPlan;
|
|
16
|
+
/** Shared editor/CLI geometry in physical canvas units; generation references omit this layer. */
|
|
17
|
+
export declare function compositionPlanGeometry(plan: CompositionPlan, frame: CompositionFrame): {
|
|
18
|
+
paths: Point[][];
|
|
19
|
+
handles: Point[];
|
|
20
|
+
snapPoints?: Point[];
|
|
21
|
+
maxCurveDeviation?: number;
|
|
22
|
+
};
|
|
23
|
+
/** Move a guide or one of its controls by a physical canvas delta. */
|
|
24
|
+
export declare function transformCompositionPlan(plan: CompositionPlan, frame: CompositionFrame, delta: Point, handle?: number): CompositionPlan;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { normalizeCompositionSymmetryRotation, validateDraft } from "./draft.js";
|
|
2
|
+
import { compositionSymmetryRotations, frameBoundsInCanvas } from "./frame.js";
|
|
3
|
+
export const COMPOSITION_PLAN_TYPES = ["thirds", "golden-section", "symmetry", "golden-spiral", "triangle", "radial"];
|
|
4
|
+
export function addCompositionPlan(input, type) {
|
|
5
|
+
const draft = validateDraft(input);
|
|
6
|
+
const plans = draft.plans ?? [];
|
|
7
|
+
let number = 1;
|
|
8
|
+
while (plans.some((plan) => plan.id === `plan-${number}`))
|
|
9
|
+
number += 1;
|
|
10
|
+
const base = { id: `plan-${number}`, visible: true };
|
|
11
|
+
const plan = type === "triangle"
|
|
12
|
+
? { ...base, type, x: 0.5, y: 0.5, rotation: 0, width: 0.6, height: 0.6 }
|
|
13
|
+
: type === "symmetry" ? { ...base, type, x: 0.5, y: 0.5, rotation: 90 }
|
|
14
|
+
: type === "golden-spiral" ? { ...base, type, x: 0.618, y: 0.382, rotation: 135, scale: 0.65, mirrored: false }
|
|
15
|
+
: type === "radial" ? { ...base, type, mode: "uniform", x: 0.5, y: 0.5, rotation: 0, rayCount: 8, spread: 360 }
|
|
16
|
+
: { ...base, type, axes: "both" };
|
|
17
|
+
return { draft: validateDraft({ ...draft, plans: [...plans, plan] }), id: plan.id };
|
|
18
|
+
}
|
|
19
|
+
export function replaceCompositionPlan(input, plan) {
|
|
20
|
+
return validateDraft({ ...input, plans: (input.plans ?? []).map((current) => current.id === plan.id ? plan : current) });
|
|
21
|
+
}
|
|
22
|
+
export function removeCompositionPlan(input, id) {
|
|
23
|
+
return validateDraft({ ...input, plans: (input.plans ?? []).filter((plan) => plan.id !== id) });
|
|
24
|
+
}
|
|
25
|
+
export function moveCompositionPlans(input, ids, delta) {
|
|
26
|
+
return validateDraft({ ...input, plans: (input.plans ?? []).map((plan) => ids.includes(plan.id)
|
|
27
|
+
? transformCompositionPlan(plan, input.frame, delta) : plan) });
|
|
28
|
+
}
|
|
29
|
+
export function compositionRadialAngles(plan) {
|
|
30
|
+
if (plan.mode === "free")
|
|
31
|
+
return [...plan.angles];
|
|
32
|
+
const step = plan.spread / (plan.spread === 360 ? plan.rayCount : plan.rayCount - 1);
|
|
33
|
+
return Array.from({ length: plan.rayCount }, (_, index) => (plan.rotation + index * step) % 360);
|
|
34
|
+
}
|
|
35
|
+
export function setCompositionRadialMode(plan, mode) {
|
|
36
|
+
if (plan.mode === mode)
|
|
37
|
+
return plan;
|
|
38
|
+
const base = { id: plan.id, type: plan.type, visible: plan.visible, x: plan.x, y: plan.y };
|
|
39
|
+
const angles = compositionRadialAngles(plan);
|
|
40
|
+
return mode === "free" ? { ...base, mode, angles }
|
|
41
|
+
: { ...base, mode, rotation: angles[0], rayCount: angles.length, spread: 360 };
|
|
42
|
+
}
|
|
43
|
+
export function setCompositionRadialRayCount(plan, count) {
|
|
44
|
+
if (plan.mode === "uniform")
|
|
45
|
+
return { ...plan, rayCount: count };
|
|
46
|
+
const angles = plan.angles.slice(0, count);
|
|
47
|
+
while (angles.length < count) {
|
|
48
|
+
const sorted = [...angles].sort((a, b) => a - b);
|
|
49
|
+
const gaps = sorted.map((angle, index) => (sorted[index + 1] ?? sorted[0] + 360) - angle);
|
|
50
|
+
const widest = gaps.indexOf(Math.max(...gaps));
|
|
51
|
+
angles.push((sorted[widest] + gaps[widest] / 2) % 360);
|
|
52
|
+
}
|
|
53
|
+
return { ...plan, angles };
|
|
54
|
+
}
|
|
55
|
+
/** Shared editor/CLI geometry in physical canvas units; generation references omit this layer. */
|
|
56
|
+
export function compositionPlanGeometry(plan, frame) {
|
|
57
|
+
const bounds = frameBoundsInCanvas(frame);
|
|
58
|
+
const point = (p) => ({ x: bounds.x + p.x * bounds.width, y: bounds.y + p.y * bounds.height });
|
|
59
|
+
if (plan.type === "thirds" || plan.type === "golden-section") {
|
|
60
|
+
const start = plan.type === "thirds" ? 1 / 3 : (3 - Math.sqrt(5)) / 2;
|
|
61
|
+
const paths = [];
|
|
62
|
+
for (const division of [start, 1 - start]) {
|
|
63
|
+
if (plan.axes !== "horizontal")
|
|
64
|
+
paths.push([point({ x: division, y: 0 }), point({ x: division, y: 1 })]);
|
|
65
|
+
if (plan.axes !== "vertical")
|
|
66
|
+
paths.push([point({ x: 0, y: division }), point({ x: 1, y: division })]);
|
|
67
|
+
}
|
|
68
|
+
return { paths, handles: [] };
|
|
69
|
+
}
|
|
70
|
+
if (plan.type === "triangle") {
|
|
71
|
+
const center = point(plan);
|
|
72
|
+
const angle = plan.rotation * Math.PI / 180;
|
|
73
|
+
const width = plan.width * bounds.width, height = plan.height * bounds.height;
|
|
74
|
+
const vertices = [{ x: 0, y: -height / 2 }, { x: -width / 2, y: height / 2 }, { x: width / 2, y: height / 2 }]
|
|
75
|
+
.map(({ x, y }) => ({ x: center.x + x * Math.cos(angle) - y * Math.sin(angle), y: center.y + x * Math.sin(angle) + y * Math.cos(angle) }));
|
|
76
|
+
return { paths: [[...vertices, vertices[0]]], handles: vertices };
|
|
77
|
+
}
|
|
78
|
+
const center = point(plan.type === "symmetry" ? { x: 0.5, y: 0.5 } : plan);
|
|
79
|
+
const angle = (plan.type === "symmetry" ? normalizeCompositionSymmetryRotation(plan.rotation, frame)
|
|
80
|
+
: plan.type === "radial" ? 0 : plan.rotation) * Math.PI / 180;
|
|
81
|
+
const at = (radius, theta = 0) => ({
|
|
82
|
+
x: center.x + radius * Math.cos(angle + theta),
|
|
83
|
+
y: center.y + radius * Math.sin(angle + theta),
|
|
84
|
+
});
|
|
85
|
+
const edge = Math.min(bounds.width, bounds.height);
|
|
86
|
+
if (plan.type === "symmetry") {
|
|
87
|
+
const length = Math.hypot(bounds.width, bounds.height) + Math.hypot(center.x - bounds.x, center.y - bounds.y);
|
|
88
|
+
const snapPoints = compositionSymmetryRotations(frame).map((rotation) => at(edge * 0.3, rotation * Math.PI / 180 - angle));
|
|
89
|
+
return { paths: [[at(-length), at(length)]], handles: [center, at(edge * 0.3)], snapPoints };
|
|
90
|
+
}
|
|
91
|
+
if (plan.type === "radial") {
|
|
92
|
+
const length = Math.hypot(bounds.width, bounds.height) + Math.hypot(center.x - bounds.x, center.y - bounds.y);
|
|
93
|
+
const angles = compositionRadialAngles(plan).map((rotation) => rotation * Math.PI / 180);
|
|
94
|
+
const paths = angles.map((rotation) => [center, at(length, rotation)]);
|
|
95
|
+
const controls = plan.mode === "free" ? angles : angles.slice(0, 1);
|
|
96
|
+
return { paths, handles: [center, ...controls.map((rotation) => at(edge * 0.3, rotation))] };
|
|
97
|
+
}
|
|
98
|
+
const radius = edge * plan.scale;
|
|
99
|
+
const phi = (1 + Math.sqrt(5)) / 2;
|
|
100
|
+
const segments = 240, sweep = Math.PI * 6;
|
|
101
|
+
// A true logarithmic golden spiral: every quarter-turn increases radius by phi.
|
|
102
|
+
const curve = Array.from({ length: segments + 1 }, (_, index) => {
|
|
103
|
+
const theta = (index / segments - 1) * sweep;
|
|
104
|
+
return at(radius * phi ** (theta / (Math.PI / 2)), plan.mirrored ? -theta : theta);
|
|
105
|
+
});
|
|
106
|
+
// Linear interpolation error <= max |curve''| * step² / 8, in physical canvas units.
|
|
107
|
+
const growth = Math.log(phi) / (Math.PI / 2);
|
|
108
|
+
const maxCurveDeviation = radius * (1 + growth ** 2) * (sweep / segments) ** 2 / 8;
|
|
109
|
+
return { paths: [curve], handles: [center, at(radius)], maxCurveDeviation };
|
|
110
|
+
}
|
|
111
|
+
/** Move a guide or one of its controls by a physical canvas delta. */
|
|
112
|
+
export function transformCompositionPlan(plan, frame, delta, handle) {
|
|
113
|
+
if (plan.type === "thirds" || plan.type === "golden-section")
|
|
114
|
+
return plan;
|
|
115
|
+
const bounds = frameBoundsInCanvas(frame);
|
|
116
|
+
if (plan.type === "symmetry") {
|
|
117
|
+
const fixed = { ...plan, x: 0.5, y: 0.5, rotation: normalizeCompositionSymmetryRotation(plan.rotation, frame) };
|
|
118
|
+
if (handle !== 1)
|
|
119
|
+
return fixed;
|
|
120
|
+
const { handles: [center, end] } = compositionPlanGeometry(fixed, frame);
|
|
121
|
+
const dx = end.x + delta.x - center.x, dy = end.y + delta.y - center.y;
|
|
122
|
+
return Math.hypot(dx, dy) < 1 ? fixed
|
|
123
|
+
: { ...fixed, rotation: normalizeCompositionSymmetryRotation(Math.atan2(dy, dx) * 180 / Math.PI, frame) };
|
|
124
|
+
}
|
|
125
|
+
if (handle === undefined || (plan.type !== "triangle" && handle === 0)) {
|
|
126
|
+
return { ...plan, x: plan.x + delta.x / bounds.width, y: plan.y + delta.y / bounds.height };
|
|
127
|
+
}
|
|
128
|
+
const { handles } = compositionPlanGeometry(plan, frame);
|
|
129
|
+
const center = { x: bounds.x + plan.x * bounds.width, y: bounds.y + plan.y * bounds.height };
|
|
130
|
+
const dx = handles[handle].x + delta.x - center.x, dy = handles[handle].y + delta.y - center.y;
|
|
131
|
+
if (plan.type === "triangle") {
|
|
132
|
+
if (handle === 0) {
|
|
133
|
+
if (Math.hypot(dx, dy) < 1)
|
|
134
|
+
return plan;
|
|
135
|
+
return { ...plan, rotation: Math.atan2(dy, dx) * 180 / Math.PI + 90, height: 2 * Math.hypot(dx, dy) / bounds.height };
|
|
136
|
+
}
|
|
137
|
+
const angle = plan.rotation * Math.PI / 180;
|
|
138
|
+
return { ...plan,
|
|
139
|
+
width: Math.max(0.01, 2 * Math.abs(dx * Math.cos(angle) + dy * Math.sin(angle)) / bounds.width),
|
|
140
|
+
height: Math.max(0.01, 2 * (-dx * Math.sin(angle) + dy * Math.cos(angle)) / bounds.height),
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
if (Math.hypot(dx, dy) < 1)
|
|
144
|
+
return plan;
|
|
145
|
+
const rotation = Math.atan2(dy, dx) * 180 / Math.PI;
|
|
146
|
+
if (plan.type === "radial")
|
|
147
|
+
return plan.mode === "free"
|
|
148
|
+
? { ...plan, angles: plan.angles.map((angle, index) => index === handle - 1 ? rotation : angle) }
|
|
149
|
+
: { ...plan, rotation };
|
|
150
|
+
return { ...plan, rotation, scale: Math.max(0.01, Math.hypot(dx, dy) / Math.min(bounds.width, bounds.height)) };
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=planning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planning.js","sourceRoot":"","sources":["../../../src/domain/composition/planning.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { compositionLayerOrder } from "./layers.js";
|
|
2
|
+
import { compositionPlanGeometry } from "./planning.js";
|
|
2
3
|
import { validateDraft } from "./draft.js";
|
|
3
4
|
import { COMPOSITION_CANVAS, frameBoundsInCanvas, } from "./frame.js";
|
|
4
5
|
import { areaGeometry, compositionDraftWorldBounds, directionLineGeometry, geometryBounds, textRegionLines, } from "./geometry.js";
|
|
@@ -44,6 +45,13 @@ export function renderCompositionSvg(input, resolveImageSource) {
|
|
|
44
45
|
].join(""));
|
|
45
46
|
}
|
|
46
47
|
const orderedElements = [...background, ...orderedCompositionElements(draft, elements)];
|
|
48
|
+
if (draft.plans?.some((plan) => plan.visible)) {
|
|
49
|
+
orderedElements.push(`<defs><clipPath id="composition-planning-frame"><rect x="${format(frame.x)}" y="${format(frame.y)}" width="${format(frame.width)}" height="${format(frame.height)}"/></clipPath></defs>`);
|
|
50
|
+
for (const plan of draft.plans.filter((entry) => entry.visible)) {
|
|
51
|
+
const paths = compositionPlanGeometry(plan, draft.frame).paths.map((points) => `<polyline points="${points.map((p) => `${format(p.x)},${format(p.y)}`).join(" ")}"/>`).join("");
|
|
52
|
+
orderedElements.push(`<g data-composition-plan="${escapeAttribute(plan.id)}" clip-path="url(#composition-planning-frame)" fill="none" stroke="#B8C4D2" stroke-width="2" stroke-dasharray="8 5">${paths}</g>`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
47
55
|
orderedElements.push(`<rect x="${format(frame.x)}" y="${format(frame.y)}" width="${format(frame.width)}" height="${format(frame.height)}" fill="none" stroke="#000000" stroke-width="2"/>`);
|
|
48
56
|
return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="${format(world.x)} ${format(world.y)} ${format(world.width)} ${format(world.height)}" width="${format(world.width)}" height="${format(world.height)}" role="img" aria-label="构图草图">
|
|
49
57
|
${orderedElements.map((element) => ` ${element}`).join("\n")}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/domain/composition/render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/domain/composition/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { validateDraft } from "./draft.js";
|
|
|
3
3
|
import { compositionLayerOrder } from "./layers.js";
|
|
4
4
|
function captureLayout(draft) {
|
|
5
5
|
return {
|
|
6
|
+
...(draft.plans ? { plans: structuredClone(draft.plans) } : {}),
|
|
6
7
|
frame: { width: draft.frame.width, height: draft.frame.height, bounds: {
|
|
7
8
|
x: draft.frame.bounds.x, y: draft.frame.bounds.y,
|
|
8
9
|
width: draft.frame.bounds.width, height: draft.frame.bounds.height,
|
|
@@ -15,11 +16,13 @@ function captureLayout(draft) {
|
|
|
15
16
|
};
|
|
16
17
|
}
|
|
17
18
|
function applyLayout(draft, layout) {
|
|
19
|
+
const { plans: _plans, ...contentDraft } = draft;
|
|
18
20
|
const points = new Map(layout.focusPoints.map((node) => [node.id, node]));
|
|
19
21
|
const areas = new Map(layout.areas.map((node) => [node.id, node]));
|
|
20
22
|
const images = new Map(layout.images.map((node) => [node.id, node]));
|
|
21
23
|
return {
|
|
22
|
-
...
|
|
24
|
+
...contentDraft,
|
|
25
|
+
...(layout.plans ? { plans: structuredClone(layout.plans) } : {}),
|
|
23
26
|
frame: structuredClone(layout.frame),
|
|
24
27
|
layerOrder: [...layout.layerOrder],
|
|
25
28
|
focusPoints: draft.focusPoints.map((node) => ({ ...node, ...points.get(node.id) })),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"states.js","sourceRoot":"","sources":["../../../src/domain/composition/states.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"states.js","sourceRoot":"","sources":["../../../src/domain/composition/states.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,49 @@ export interface Point {
|
|
|
13
13
|
x: number;
|
|
14
14
|
y: number;
|
|
15
15
|
}
|
|
16
|
+
interface CompositionPlanBase {
|
|
17
|
+
id: string;
|
|
18
|
+
visible: boolean;
|
|
19
|
+
}
|
|
20
|
+
/** Planning positions are fractions of the current frame, independently of content nodes. */
|
|
21
|
+
export type CompositionPlan = CompositionPlanBase & ({
|
|
22
|
+
type: "thirds";
|
|
23
|
+
axes: "both" | "horizontal" | "vertical";
|
|
24
|
+
} | {
|
|
25
|
+
type: "golden-section";
|
|
26
|
+
axes: "both" | "horizontal" | "vertical";
|
|
27
|
+
} | {
|
|
28
|
+
type: "symmetry";
|
|
29
|
+
x: number;
|
|
30
|
+
y: number;
|
|
31
|
+
rotation: number;
|
|
32
|
+
} | {
|
|
33
|
+
type: "golden-spiral";
|
|
34
|
+
x: number;
|
|
35
|
+
y: number;
|
|
36
|
+
rotation: number;
|
|
37
|
+
scale: number;
|
|
38
|
+
mirrored: boolean;
|
|
39
|
+
} | {
|
|
40
|
+
type: "triangle";
|
|
41
|
+
x: number;
|
|
42
|
+
y: number;
|
|
43
|
+
rotation: number;
|
|
44
|
+
width: number;
|
|
45
|
+
height: number;
|
|
46
|
+
} | ({
|
|
47
|
+
type: "radial";
|
|
48
|
+
x: number;
|
|
49
|
+
y: number;
|
|
50
|
+
} & ({
|
|
51
|
+
mode: "uniform";
|
|
52
|
+
rotation: number;
|
|
53
|
+
rayCount: number;
|
|
54
|
+
spread: number;
|
|
55
|
+
} | {
|
|
56
|
+
mode: "free";
|
|
57
|
+
angles: number[];
|
|
58
|
+
})));
|
|
16
59
|
export interface CompositionFrameSize {
|
|
17
60
|
width: number;
|
|
18
61
|
height: number;
|
|
@@ -60,6 +103,7 @@ export interface CompositionImage extends Point, CompositionNodeMetadata, Human2
|
|
|
60
103
|
}
|
|
61
104
|
export type CompositionAreaMetadataPatch = Partial<Pick<CompositionArea, "visualWeight" | "displayText" | "isLightSource">>;
|
|
62
105
|
export interface CompositionDraft {
|
|
106
|
+
plans?: CompositionPlan[];
|
|
63
107
|
states?: CompositionState[];
|
|
64
108
|
activeStateId?: string;
|
|
65
109
|
layerOrder?: string[];
|
|
@@ -74,6 +118,7 @@ export interface CompositionDraft {
|
|
|
74
118
|
images: CompositionImage[];
|
|
75
119
|
}
|
|
76
120
|
export interface CompositionLayout {
|
|
121
|
+
plans?: CompositionPlan[];
|
|
77
122
|
frame: CompositionFrame;
|
|
78
123
|
layerOrder: string[];
|
|
79
124
|
focusPoints: Pick<FocusPoint, "id" | "x" | "y">[];
|
|
@@ -149,3 +194,4 @@ export interface VisibleAreaMetrics {
|
|
|
149
194
|
overlapArea: number;
|
|
150
195
|
visualCenter: Point;
|
|
151
196
|
}
|
|
197
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SpatialCamera, SpatialDraft, SpatialRenderPass } from "./types.ts";
|
|
2
|
+
/** Conservative image dependencies, shared by browser previews and server PNG caches. */
|
|
3
|
+
export declare class SpatialCameraRenderKeys {
|
|
4
|
+
private bounds;
|
|
5
|
+
private snapshot?;
|
|
6
|
+
key(draft: SpatialDraft, source: SpatialCamera, pass?: SpatialRenderPass, camera?: import("three").OrthographicCamera | import("three").PerspectiveCamera): string;
|
|
7
|
+
}
|