🚀 Auto-deploy: BrainWind atualizado em 27/07/2026 23:01:47

This commit is contained in:
2026-07-27 23:01:47 +00:00
parent 812a180bd8
commit 3e289b5dde
6 changed files with 429 additions and 65 deletions
+12 -4
View File
@@ -5,7 +5,7 @@ import { Text, Grid, Environment } from '@react-three/drei';
import { ViewerOrbitControls as OrbitControls } from './ViewerOrbitControls';
import SceneCanvas from '../SceneCanvas';
import { useCanvasTheme } from '@/lib/theme';
import type { ShelterCondition, OpeningPosition } from '@/lib/nbr-tables/table-shelters';
import type { ShelterCondition, OpeningPosition, ShelterWindAngle } from '@/lib/nbr-tables/table-shelters';
export interface Shelter3DProps {
condition: ShelterCondition;
@@ -18,6 +18,7 @@ export interface Shelter3DProps {
rightClosure: number;
openingPos: OpeningPosition;
backRange?: [number, number];
windAngle?: ShelterWindAngle;
viewMode: '3d' | 'elevation';
}
@@ -66,6 +67,7 @@ function ShelterModel({
rightClosure,
openingPos,
backRange,
windAngle = 0,
viewMode,
}: Shelter3DProps) {
const isElevation = viewMode === 'elevation';
@@ -160,8 +162,8 @@ function ShelterModel({
{renderWallWithGap(depth, height, rightClosure, 'distributed', Math.PI / 2, [halfW, 0, 0])}
{/* 4. Linhas de Corrente e Vetores de Vento (Ilustrativo e Didático) */}
<group position={[0, 0, 0]}>
{/* Vento de entrada (Barlavento) entrando pela frente em direção ao abrigo */}
<group position={[0, 0, 0]} rotation={[0, -((windAngle || 0) * Math.PI) / 180, 0]}>
{/* Vento de entrada (Barlavento) entrando em direção ao abrigo */}
<WindArrow start={[0, height * 0.5, -halfD - 4]} end={[0, height * 0.5, -halfD + 1]} color="#38bdf8" speed={1.2} />
<WindArrow start={[-halfW * 0.5, height * 0.7, -halfD - 4]} end={[-halfW * 0.5, height * 0.7, -halfD + 1]} color="#38bdf8" speed={1.4} />
<WindArrow start={[halfW * 0.5, height * 0.4, -halfD - 4]} end={[halfW * 0.5, height * 0.4, -halfD + 1]} color="#38bdf8" speed={1.3} />
@@ -195,7 +197,13 @@ function ShelterModel({
{isElevation ? 'CORTE A-A (Elevação)' : 'Abrigo / Pórtico (NBR 6123)'}
</Text>
<Text position={[0, 0.3, -halfD - 1.2]} rotation={[0, Math.PI, 0]} fontSize={0.35} color="#38bdf8">
VENTO FRONTAL
{`VENTO ${windAngle === 0 ? 'FRONTAL (0°)' : windAngle === 45 ? 'OBLÍQUO (45°)' : 'LATERAL (90°)'}`}
</Text>
<Text position={[0, height + slopeRise + 0.25, 0]} rotation={[0, Math.PI, 0]} fontSize={0.32} color="#f43f5e">
Arrancamento [+Fz ]
</Text>
<Text position={[0, height * 0.5, halfD + 1.2]} rotation={[0, Math.PI, 0]} fontSize={0.32} color="#fb923c">
Empuxo no Fundo [+Fx ]
</Text>
</group>
);