musculo
This commit is contained in:
1 parent
038ad91bbe
commit
bc23a068dd
5 files changed
+45
-6
No files matched your search
@@ -16,8 +16,8 @@ export const MUSCLE_DESCRIPTIONS = {
|
|||||||
"triceps brachii": "Único extensor do cotovelo; suas três cabeças (longa, lateral e medial) convergem no olécrano da ulna.",
|
"triceps brachii": "Único extensor do cotovelo; suas três cabeças (longa, lateral e medial) convergem no olécrano da ulna.",
|
||||||
"pectoralis major": "Músculo grande e em leque do tórax anterior; aduz e roda medialmente o braço, e o flexiona a partir de posição estendida.",
|
"pectoralis major": "Músculo grande e em leque do tórax anterior; aduz e roda medialmente o braço, e o flexiona a partir de posição estendida.",
|
||||||
"pectoralis minor": "Sob o peitoral maior; traciona a escápula para baixo e para frente, e eleva as costelas na respiração forçada.",
|
"pectoralis minor": "Sob o peitoral maior; traciona a escápula para baixo e para frente, e eleva as costelas na respiração forçada.",
|
||||||
"rectus abdominis": "Par de músculos verticais na linha média do abdome (o 'tanquinho'); flexiona o tronco e comprime o conteúdo abdominal.",
|
"rectus abdominis": "Par de músculos verticais na linha média do abdome; flexiona o tronco e comprime o conteúdo abdominal. Na malha 3D aparece como uma superfície lisa, mas na pessoa de verdade é cruzado por 3-4 intersecções tendíneas horizontais que criam o 'tanquinho' — veja a ilustração na descrição.",
|
||||||
"external oblique": "Camada mais superficial dos músculos laterais do abdome; flexiona e roda o tronco para o lado oposto, e comprime o abdome.",
|
"external oblique": "Camada mais superficial dos músculos laterais do abdome; flexiona e roda o tronco para o lado oposto, e comprime o abdome. Suas fibras superiores se entrelaçam (interdigitam) com as do serrátil anterior nas costelas, um encaixe que não aparece na malha 3D — veja a ilustração na descrição.",
|
||||||
"internal oblique": "Camada intermediária dos músculos laterais do abdome; flexiona e roda o tronco para o mesmo lado, e comprime o abdome.",
|
"internal oblique": "Camada intermediária dos músculos laterais do abdome; flexiona e roda o tronco para o mesmo lado, e comprime o abdome.",
|
||||||
"latissimus dorsi": "O maior músculo do dorso; estende, aduz e roda medialmente o braço — o principal músculo do movimento de 'puxar para baixo' (ex: nadar, remar).",
|
"latissimus dorsi": "O maior músculo do dorso; estende, aduz e roda medialmente o braço — o principal músculo do movimento de 'puxar para baixo' (ex: nadar, remar).",
|
||||||
"gluteus maximus": "O maior e mais superficial músculo glúteo; principal extensor do quadril, essencial para subir escadas e levantar-se de uma cadeira.",
|
"gluteus maximus": "O maior e mais superficial músculo glúteo; principal extensor do quadril, essencial para subir escadas e levantar-se de uma cadeira.",
|
||||||
@@ -92,10 +92,10 @@ export const MUSCLE_DESCRIPTIONS = {
|
|||||||
"thyro-epiglottic part of thyro-arytenoid muscle": "Porção tireoepiglótica do tireoaritenóideo; auxilia a estreitar a entrada da laringe durante a deglutição, protegendo a via aérea.",
|
"thyro-epiglottic part of thyro-arytenoid muscle": "Porção tireoepiglótica do tireoaritenóideo; auxilia a estreitar a entrada da laringe durante a deglutição, protegendo a via aérea.",
|
||||||
|
|
||||||
// ---- Coluna, dorso e parede do tronco ----
|
// ---- Coluna, dorso e parede do tronco ----
|
||||||
"external abdominal oblique muscle": "Mesma função do 'external oblique': camada mais superficial da parede lateral do abdome, flexiona e roda o tronco para o lado oposto.",
|
"external abdominal oblique muscle": "Mesma função do 'external oblique': camada mais superficial da parede lateral do abdome, flexiona e roda o tronco para o lado oposto. Suas fibras superiores se entrelaçam (interdigitam) com as do serrátil anterior nas costelas — um encaixe que a malha 3D não modela; veja a ilustração na descrição.",
|
||||||
"internal abdominal oblique muscle": "Mesma função do 'internal oblique': camada intermediária, flexiona e roda o tronco para o mesmo lado.",
|
"internal abdominal oblique muscle": "Mesma função do 'internal oblique': camada intermediária, flexiona e roda o tronco para o mesmo lado.",
|
||||||
"transversus abdominis muscle": "Camada mais profunda da parede abdominal, com fibras horizontais; comprime o conteúdo abdominal (como uma 'cinta' natural), estabilizando o tronco.",
|
"transversus abdominis muscle": "Camada mais profunda da parede abdominal, com fibras horizontais; comprime o conteúdo abdominal (como uma 'cinta' natural), estabilizando o tronco.",
|
||||||
"rectus abdominis muscle": "Mesma função do 'rectus abdominis': flexiona o tronco e comprime o abdome.",
|
"rectus abdominis muscle": "Mesma função do 'rectus abdominis': flexiona o tronco e comprime o abdome. Na pessoa de verdade é cruzado por 3-4 intersecções tendíneas horizontais (o 'tanquinho'), que a malha 3D não modela — veja a ilustração na descrição.",
|
||||||
"pyramidalis muscle": "Pequeno músculo variável na frente do reto abdominal; tensiona a linha alba.",
|
"pyramidalis muscle": "Pequeno músculo variável na frente do reto abdominal; tensiona a linha alba.",
|
||||||
"quadratus lumborum muscle": "Na parede posterior do abdome; flexiona lateralmente o tronco e estabiliza a 12ª costela durante a respiração.",
|
"quadratus lumborum muscle": "Na parede posterior do abdome; flexiona lateralmente o tronco e estabiliza a 12ª costela durante a respiração.",
|
||||||
"psoas major": "Junto ao ilíaco (iliopsoas), é o principal flexor do quadril, essencial para caminhar e subir escadas.",
|
"psoas major": "Junto ao ilíaco (iliopsoas), é o principal flexor do quadril, essencial para caminhar e subir escadas.",
|
||||||
@@ -155,7 +155,7 @@ export const MUSCLE_DESCRIPTIONS = {
|
|||||||
"levator scapulae": "Eleva a escápula (encolher os ombros) e auxilia a inclinar o pescoço.",
|
"levator scapulae": "Eleva a escápula (encolher os ombros) e auxilia a inclinar o pescoço.",
|
||||||
"rhomboid major muscle": "Retrai (aproxima da coluna) e roda a escápula para baixo, fixando-a contra o tórax.",
|
"rhomboid major muscle": "Retrai (aproxima da coluna) e roda a escápula para baixo, fixando-a contra o tórax.",
|
||||||
"rhomboid minor muscle": "Mesma ação do romboide maior: retrai e roda a escápula para baixo.",
|
"rhomboid minor muscle": "Mesma ação do romboide maior: retrai e roda a escápula para baixo.",
|
||||||
"serratus anterior muscle": "Protrai a escápula (empurrar para frente, como em um soco) e a roda para cima, permitindo levantar o braço acima da cabeça.",
|
"serratus anterior muscle": "Protrai a escápula (empurrar para frente, como em um soco) e a roda para cima, permitindo levantar o braço acima da cabeça. Origina-se em várias digitações (\"dentes de serra\") nas costelas, que se entrelaçam com as do oblíquo externo do abdome — um encaixe que a malha 3D não modela; veja a ilustração na descrição.",
|
||||||
"subclavius muscle": "Estabiliza e abaixa discretamente a clavícula, protegendo os vasos subclávios logo abaixo.",
|
"subclavius muscle": "Estabiliza e abaixa discretamente a clavícula, protegendo os vasos subclávios logo abaixo.",
|
||||||
"supraspinatus muscle": "Um dos músculos do manguito rotador; inicia a abdução do ombro e estabiliza a cabeça do úmero na cavidade glenoide.",
|
"supraspinatus muscle": "Um dos músculos do manguito rotador; inicia a abdução do ombro e estabiliza a cabeça do úmero na cavidade glenoide.",
|
||||||
"infraspinatus muscle": "Músculo do manguito rotador; roda lateralmente o braço e estabiliza a articulação do ombro.",
|
"infraspinatus muscle": "Músculo do manguito rotador; roda lateralmente o braço e estabiliza a articulação do ombro.",
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 75 KiB |
@@ -1,5 +1,6 @@
|
|||||||
import { useAtlasStore } from "../store/useAtlasStore.js";
|
import { useAtlasStore } from "../store/useAtlasStore.js";
|
||||||
import type { Structure } from "../lib/api.js";
|
import type { Structure } from "../lib/api.js";
|
||||||
|
import { MUSCLE_REFERENCE_IMAGE, hasMuscleReferenceImage } from "../data/muscleReferenceImages.js";
|
||||||
|
|
||||||
export function StructureInfoPanel({
|
export function StructureInfoPanel({
|
||||||
bySlug,
|
bySlug,
|
||||||
@@ -59,6 +60,18 @@ export function StructureInfoPanel({
|
|||||||
<p className="text-sm text-slate-300 leading-relaxed">{structure.description}</p>
|
<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 && (
|
{structure.regionPath.length > 0 && (
|
||||||
<p className="text-xs text-slate-500">{structure.regionPath.join(" › ")}</p>
|
<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 @@
|
|||||||
{"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"}
|
||||||
Reference in new issue
Block a user