diff --git a/app/src/components/three/Sign3D.tsx b/app/src/components/three/Sign3D.tsx index ac1b184..74a547c 100644 --- a/app/src/components/three/Sign3D.tsx +++ b/app/src/components/three/Sign3D.tsx @@ -51,11 +51,13 @@ function SignModel({ const angleToNormalRad = ((90 - alpha) * Math.PI) / 180; const arrowDir = useMemo(() => new THREE.Vector3(Math.cos(angleToNormalRad), 0, Math.sin(angleToNormalRad)), [angleToNormalRad]); - // Posição da seta no plano da placa (inicia no ponto de aplicação com a excentricidade ao longo de Z) - const arrowStart = useMemo( - () => new THREE.Vector3(0, baseY + height / 2, applicationPoint), - [applicationPoint, height, baseY], - ); + // Posição alvo da seta no plano da placa (inicia no ponto de aplicação com a excentricidade ao longo de Z) + // Afastada um pouco do muro para não encostar fisicamente + const arrowStart = useMemo(() => { + const targetPos = new THREE.Vector3(0, baseY + height / 2, applicationPoint); + const offset = arrowDir.clone().multiplyScalar(-0.8); + return targetPos.add(offset); + }, [applicationPoint, height, baseY, arrowDir]); // Cor da placa: Azul (Pressão/Empuxo) com intensidade proporcional ao Cf const plateColor = useMemo(() => { @@ -122,6 +124,7 @@ function SignModel({ {/* === LINHAS DE COTA (CAD-Style Dimensions) === */}