Skip to content
Implementation

Archétypes d'anneaux

RING_ARCHETYPES liste 12 formes prédéfinies. Chaque archétype a un profil radial fixe (8 samples d'opacité) que le shader interpole + jitter au build pour produire des centaines de variations.

Catalogue

ArchétypeForme
broadLarge enveloppe type Saturne
doubleDeux bandes brillantes, gap sombre central
narrowUne seule bande brillante avec épaules douces
dustyHalo nébulaire diffus
tripleTrois bandes brillantes
outerBord extérieur lumineux, intérieur faible
shepherdPic très fin (style Uranus)
quadrupleQuatre bandes alternées
skewedInBrillant à l'intérieur, fade vers l'extérieur
skewedOutFaible à l'intérieur, brillant vers l'extérieur
denseBande quasi-uniforme pleine
sparsePics épars irréguliers

Forcer un archétype

Le seed pousse un archétype par défaut, mais vous pouvez l'override :

ts
import { ARCHETYPE_PROFILES } from '@cedric-pouilleux/stellexjs/core'

const body = useBody(config, DEFAULT_TILE_SIZE)

if (body.variation.rings) {
  body.variation.rings = {
    ...body.variation.rings,
    archetype: 'shepherd',
    profile:   ARCHETYPE_PROFILES.shepherd,
  }
}
// puis seulement après cette mutation : <Body :body="body" /> ou buildBodyRings(...)

L'override doit être fait avant que <Body> ne mount le ring (i.e. dans le même tick que useBody).

Profil radial

Chaque archétype expose Profile8 — un tuple de 8 floats [0..1] interpolés du bord intérieur (t=0) au bord extérieur (t=1) :

ts
import { ARCHETYPE_PROFILES } from '@cedric-pouilleux/stellexjs/core'

ARCHETYPE_PROFILES.broad
// [0.05, 0.45, 0.85, 0.95, 0.95, 0.85, 0.5, 0.1]

ARCHETYPE_PROFILES.shepherd
// [0.0, 0.0, 0.05, 0.95, 0.95, 0.05, 0.0, 0.0]

Pour une forme custom, il suffit de fournir un tuple de 8 floats à la place de profile :

ts
body.variation.rings.profile = [0.0, 0.2, 0.6, 0.9, 0.9, 0.6, 0.2, 0.0]

Distribué sous la licence indiquée dans le dépôt.