init elas atelier #1
@@ -201,11 +201,11 @@ export function buildCybersigil(opts: SigilOptions = {}): string {
|
|||||||
// ── Terminal spike crown: long, straight, downward-converging needles
|
// ── Terminal spike crown: long, straight, downward-converging needles
|
||||||
// off the spine tail — the dripping barbed point that ends the growth.
|
// off the spine tail — the dripping barbed point that ends the growth.
|
||||||
const tip = spinePts[spinePts.length - 1];
|
const tip = spinePts[spinePts.length - 1];
|
||||||
const fan = 5 + Math.floor(rng() * 4); // 5–8
|
const fan = 4 + Math.floor(rng() * 3); // 4–6
|
||||||
for (let s = 0; s < fan; s++) {
|
for (let s = 0; s < fan; s++) {
|
||||||
const spread = (s / (fan - 1) - 0.5) * 1.5; // ~±0.75 rad around straight-down
|
const spread = (s / (fan - 1) - 0.5) * 1.0; // ~±0.5 rad — tighter dagger
|
||||||
const a = Math.PI / 2 + spread; // π/2 = +y (down)
|
const a = Math.PI / 2 + spread; // π/2 = +y (down)
|
||||||
const len = rnd(46, 78) * (1 - Math.abs(spread) * 0.35); // center longest
|
const len = rnd(64, 104) * (1 - Math.abs(spread) * 0.35); // center longest
|
||||||
const base: Pt = [tip[0], tip[1] - rnd(0, 8)];
|
const base: Pt = [tip[0], tip[1] - rnd(0, 8)];
|
||||||
const tt: Pt = [base[0] + Math.cos(a) * len, base[1] + Math.sin(a) * len];
|
const tt: Pt = [base[0] + Math.cos(a) * len, base[1] + Math.sin(a) * len];
|
||||||
emit(`M${n(base[0])} ${n(base[1])}L${n(tt[0])} ${n(tt[1])}`, 'cs-sig-barb');
|
emit(`M${n(base[0])} ${n(base[1])}L${n(tt[0])} ${n(tt[1])}`, 'cs-sig-barb');
|
||||||
|
|||||||
Reference in New Issue
Block a user