This commit is contained in:
Rodrigo Bertoldo de Sousa Martins committed 2026-09-13 19:05:51 -03:00
1 parent 038ad91bbe
commit bc23a068dd
5 files changed
+45 -6

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

@@ -1,5 +1,6 @@
import { useAtlasStore } from "../store/useAtlasStore.js";
import type { Structure } from "../lib/api.js";
import { MUSCLE_REFERENCE_IMAGE, hasMuscleReferenceImage } from "../data/muscleReferenceImages.js";
export function StructureInfoPanel({
bySlug,
@@ -59,6 +60,18 @@ export function StructureInfoPanel({
<p className="text-sm text-slate-300 leading-relaxed">{structure.description}</p>
)}
{hasMuscleReferenceImage(structure.slug) && (
<div className="rounded-lg border border-white/10 bg-white p-2">
<img
src={MUSCLE_REFERENCE_IMAGE.image}
alt="Ilustração clássica da parede abdominal mostrando reto do abdome, oblíquo externo e serrátil anterior"
className="w-full h-auto rounded"
/>
<p className="text-xs text-slate-600 mt-2 leading-snug">{MUSCLE_REFERENCE_IMAGE.caption}</p>
<p className="text-[11px] text-slate-500 mt-1">{MUSCLE_REFERENCE_IMAGE.credit}</p>
</div>
)}
{structure.regionPath.length > 0 && (
<p className="text-xs text-slate-500">{structure.regionPath.join(" › ")}</p>
)}
@@ -0,0 +1,26 @@
// Referência visual 2D pra músculos cuja malha 3D real (Z-Anatomy) não tem
// as subdivisões que a ilustração clássica de anatomia mostra — reto do
// abdome (intersecções tendíneas, o "tanquinho"), serrátil anterior e
// oblíquo externo do abdome (digitações que se entrelaçam 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 tentar esculpir essas divisões em cima de uma malha que não as
// tem, mostramos a prancha clássica de Gray's Anatomy (Henry Vandyke
// Carter, 1918 — domínio público, sem restrição de uso) que já ilustra
// exatamente essas três estruturas e como se relacionam.
export const MUSCLE_REFERENCE_IMAGE = {
image: "/muscular/parede-abdominal-gray392.png",
credit:
"Henry Vandyke Carter, em Henry Gray, Anatomy of the Human Body (1918) — domínio público (via Wikimedia Commons).",
caption:
"No modelo 3D esses três músculos aparecem como superfícies únicas e lisas (o Z-Anatomy não modela essas subdivisões). Esta ilustração clássica mostra onde fica cada um e como se relacionam de verdade.",
};
// Substrings do slug (sem o prefixo de sistema nem o sufixo de lado) que
// identificam um músculo coberto por essa referência.
const MUSCLE_REFERENCE_KEYS = ["rectus-abdominis-muscle", "serratus-anterior-muscle", "external-abdominal-oblique-muscle"];
export function hasMuscleReferenceImage(slug: string): boolean {
return MUSCLE_REFERENCE_KEYS.some((key) => slug.includes(key));
}
+1 -1
View File
@@ -1 +1 @@
{"root":["./src/app.tsx","./src/main.tsx","./src/vite-env.d.ts","./src/components/celldiagram3d.tsx","./src/components/clippingcontrols.tsx","./src/components/cookieconsent.tsx","./src/components/feedbackwidget.tsx","./src/components/layertoggle.tsx","./src/components/layout.tsx","./src/components/microscopydiagram.tsx","./src/components/onlinecounter.tsx","./src/components/quickregionnav.tsx","./src/components/searchnav.tsx","./src/components/skindiagram3d.tsx","./src/components/structureinfopanel.tsx","./src/components/viewer/exammarkers.tsx","./src/components/viewer/mannequin.tsx","./src/components/viewer/scene.tsx","./src/components/viewer/systemmodel.tsx","./src/data/microscopycredits.ts","./src/data/microscopyhotspots.ts","./src/data/physicalexam.ts","./src/hooks/usestructures.ts","./src/hooks/usesystemstructures.ts","./src/lib/analytics.ts","./src/lib/api.ts","./src/routes/adminstatspage.tsx","./src/routes/atlaspage.tsx","./src/routes/physicalexampage.tsx","./src/routes/planespage.tsx","./src/routes/quizpage.tsx","./src/store/useatlasstore.ts"],"version":"5.9.3"}
{"root":["./src/app.tsx","./src/main.tsx","./src/vite-env.d.ts","./src/components/celldiagram3d.tsx","./src/components/clippingcontrols.tsx","./src/components/cookieconsent.tsx","./src/components/feedbackwidget.tsx","./src/components/layertoggle.tsx","./src/components/layout.tsx","./src/components/microscopydiagram.tsx","./src/components/onlinecounter.tsx","./src/components/quickregionnav.tsx","./src/components/searchnav.tsx","./src/components/skindiagram3d.tsx","./src/components/structureinfopanel.tsx","./src/components/viewer/exammarkers.tsx","./src/components/viewer/mannequin.tsx","./src/components/viewer/scene.tsx","./src/components/viewer/systemmodel.tsx","./src/data/microscopycredits.ts","./src/data/microscopyhotspots.ts","./src/data/musclereferenceimages.ts","./src/data/physicalexam.ts","./src/hooks/usestructures.ts","./src/hooks/usesystemstructures.ts","./src/lib/analytics.ts","./src/lib/api.ts","./src/routes/adminstatspage.tsx","./src/routes/atlaspage.tsx","./src/routes/physicalexampage.tsx","./src/routes/planespage.tsx","./src/routes/quizpage.tsx","./src/store/useatlasstore.ts"],"version":"5.9.3"}