Files
anatomia/frontend/src/data/muscleReferenceImages.ts
T

42 lines
2.3 KiB
TypeScript

// Referência visual 2D pra músculos cuja malha 3D real (Z-Anatomy) não tem
// as subdivisões que os livros de anatomia mostram: as 4 camadas da parede
// abdominal (reto, oblíquo externo, oblíquo interno, transverso — cada uma
// aparece como uma superfície única e lisa no modelo 3D, sem a
// sobreposição em camadas de verdade) e a interdigitação entre serrátil
// anterior e oblíquo externo nas costelas. Confirmamos (comparando com a
// exportação bruta do Z-Anatomy E com o app oficial completo, não só a
// amostra do GitHub) que essa é uma limitação real do dado de origem, não
// um bug do pipeline — ver extract-manifest.mjs.
//
// Em vez de usar uma imagem de terceiros (a primeira tentativa, a prancha
// de Gray's Anatomy, saiu com o texto em latim pequeno demais pra ler),
// essas são ilustrações esquemáticas PRÓPRIAS em SVG — texto vetorial de
// verdade (nunca sai ilegível ou embaralhado, porque não é imagem
// rasterizada), em português, sem depender de licença de terceiros.
const ABDOMINAL_LAYERS = {
image: "/muscular/parede-abdominal-camadas.svg",
caption:
"No modelo 3D cada um desses músculos aparece como uma superfície única e lisa (o Z-Anatomy não modela a sobreposição real). Este esquema mostra as 4 camadas da parede abdominal, da mais superficial (oblíquo externo) à mais profunda (transverso).",
};
const SERRATUS_OBLIQUE_DIGITATIONS = {
image: "/muscular/serratil-obliquo-digitacoes.svg",
caption:
"No modelo 3D o serrátil anterior e o oblíquo externo aparecem sem esse encaixe (o Z-Anatomy não modela a interdigitação). Este esquema mostra como as digitações dos dois se entrelaçam nas costelas.",
};
// Substring do slug (sem o prefixo de sistema nem o sufixo de lado) →
// referência aplicável.
const MUSCLE_REFERENCE_MAP: Record<string, typeof ABDOMINAL_LAYERS> = {
"rectus-abdominis-muscle": ABDOMINAL_LAYERS,
"external-abdominal-oblique-muscle": ABDOMINAL_LAYERS,
"internal-abdominal-oblique-muscle": ABDOMINAL_LAYERS,
"transversus-abdominis-muscle": ABDOMINAL_LAYERS,
"serratus-anterior-muscle": SERRATUS_OBLIQUE_DIGITATIONS,
};
export function muscleReferenceImageFor(slug: string) {
const key = Object.keys(MUSCLE_REFERENCE_MAP).find((k) => slug.includes(k));
return key ? MUSCLE_REFERENCE_MAP[key] : null;
}