🚀 Auto-deploy: BrainWind atualizado em 27/07/2026 23:01:47
This commit is contained in:
@@ -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>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user