atualizacao atlas
Signed-off-by: Rodrigo Bertoldo de Sousa Martins <rodrigo@martinsevieira.adv.br>
This commit is contained in:
1 parent
a874b5bd92
commit
a55e8c50df
2 files changed
+37
-5
No files matched your search
@@ -560,6 +560,33 @@ function stripSideSuffix(rawName) {
|
||||
return { base: rawName.trim(), suffix: null };
|
||||
}
|
||||
|
||||
// O Z-Anatomy tem os 3 músculos intercostais (externo/interno/íntimo)
|
||||
// como 11 instâncias repetidas por lado (uma por espaço intercostal), mas
|
||||
// só com o nome genérico — sem indicar QUAL espaço. Nomeamos cada
|
||||
// instância pelo espaço intercostal, usando `n` (o contador de ocorrência
|
||||
// já calculado por nome bruto — ver `nameCounts` no loop principal): a
|
||||
// ordem em que o Z-Anatomy lista as instâncias no arquivo original segue
|
||||
// a ordem anatômica das costelas (1º espaço primeiro, ao lado da
|
||||
// clavícula), então o contador de ocorrência já serve como número do
|
||||
// espaço, sem precisar calcular posição 3D nenhuma. Só pra pedidos de
|
||||
// espaço intercostal — não altera nenhum outro músculo.
|
||||
const INTERCOSTAL_MUSCLE_BASES = new Set([
|
||||
"external intercostal muscles",
|
||||
"internal intercostal muscles",
|
||||
"innermost intercostal muscles",
|
||||
]);
|
||||
|
||||
function ordinalEn(n) {
|
||||
const rem100 = n % 100;
|
||||
if (rem100 >= 11 && rem100 <= 13) return `${n}th`;
|
||||
switch (n % 10) {
|
||||
case 1: return `${n}st`;
|
||||
case 2: return `${n}nd`;
|
||||
case 3: return `${n}rd`;
|
||||
default: return `${n}th`;
|
||||
}
|
||||
}
|
||||
|
||||
// Retorna null se o nome bruto não corresponder a nenhum dos 206 ossos —
|
||||
// nesse caso a malha é ignorada (não vira estrutura, mas continua no
|
||||
// arquivo .glb; como não há "structure" apontando pra ela, o frontend já
|
||||
@@ -848,8 +875,13 @@ for (const { fbx, key } of SOURCES) {
|
||||
const { base, suffix } = stripSideSuffix(rawName);
|
||||
const sideLabelPt = suffix === "l" ? " Esquerdo" : suffix === "r" ? " Direito" : "";
|
||||
const sideWordEn = suffix === "l" ? "Left " : suffix === "r" ? "Right " : "";
|
||||
namePt = `${translateToPt(base)}${sideLabelPt}` + (n > 1 ? ` (${n})` : "");
|
||||
nameEn = `${sideWordEn}${base}` + (n > 1 ? ` (${n})` : "");
|
||||
const isIntercostal = key === "muscular" && INTERCOSTAL_MUSCLE_BASES.has(base.toLowerCase());
|
||||
namePt = isIntercostal
|
||||
? `${translateToPt(base)}${sideLabelPt} — ${n}º Espaço Intercostal`
|
||||
: `${translateToPt(base)}${sideLabelPt}` + (n > 1 ? ` (${n})` : "");
|
||||
nameEn = isIntercostal
|
||||
? `${sideWordEn}${base} — ${ordinalEn(n)} Intercostal Space`
|
||||
: `${sideWordEn}${base}` + (n > 1 ? ` (${n})` : "");
|
||||
description =
|
||||
key === "regions"
|
||||
? REGION_DESCRIPTIONS[base.toLowerCase()] ?? ""
|
||||
|
||||
Reference in new issue
Block a user