Skip to content

Commit 501b120

Browse files
committed
Rotate FlatBlocks
1 parent e0bfbc1 commit 501b120

File tree

4 files changed

+24
-21
lines changed

4 files changed

+24
-21
lines changed

src/components/plots/AxisLines.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -343,11 +343,10 @@ const FlatAxis = () =>{
343343
isFlat: state.isFlat
344344
})))
345345

346-
const {plotType, zSlice, ySlice, xSlice} = usePlotStore(useShallow(state=>({
347-
plotType: state.plotType,
348-
zSlice: state.zSlice,
349-
ySlice: state.ySlice,
350-
xSlice: state.xSlice
346+
const {plotType, zSlice, ySlice, xSlice, rotateFlat} = usePlotStore(useShallow(state=>({
347+
plotType: state.plotType, zSlice: state.zSlice,
348+
ySlice: state.ySlice, xSlice: state.xSlice,
349+
rotateFlat:state.rotateFlat
351350
})))
352351

353352
const {hideAxis, hideAxisControls} = useImageExportStore(useShallow( state => ({
@@ -442,7 +441,10 @@ const FlatAxis = () =>{
442441
const yTitleOffset = useMemo(() => (axisNames[heightIdx].length * FLAT_AXIS_CONSTANTS.TITLE_FONT_SIZE / 2 + 0.1), [axisNames, heightIdx]);
443442

444443
return (
445-
<group visible={plotType == 'flat' && !hideAxis}>
444+
<group
445+
visible={plotType == 'flat' && !hideAxis}
446+
rotation={[rotateFlat ? -Math.PI/2 : 0, 0, 0]}
447+
>
446448
{/* X Group */}
447449
<group position={[0, -(swap ? 1 : shapeRatio)-tickLength/2, 0]} rotation={[ Math.PI/2, 0, 0]}>
448450
<primitive key={'xLine'} object={xLine} />

src/components/plots/FlatBlocks.tsx

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,11 @@ const FlatBlocks = ({textures} : {textures: THREE.Data3DTexture[] | THREE.DataTe
1414
dataShape: state.dataShape,
1515
textureArrayDepths: state.textureArrayDepths
1616
})))
17-
const { animProg, cOffset, cScale, nanColor, nanTransparency, displacement, offsetNegatives} = usePlotStore(useShallow(state=> ({
18-
animate: state.animate,
19-
animProg: state.animProg,
20-
cOffset: state.cOffset,
21-
cScale: state.cScale,
22-
nanColor: state.nanColor,
23-
nanTransparency: state.nanTransparency,
24-
displacement: state.displacement,
25-
sphereResolution: state.sphereResolution,
26-
offsetNegatives: state.offsetNegatives
17+
const { animProg, cOffset, cScale, nanColor, nanTransparency, displacement, offsetNegatives, rotateFlat} = usePlotStore(useShallow(state=> ({
18+
animate: state.animate, animProg: state.animProg, cOffset: state.cOffset,
19+
cScale: state.cScale, nanColor: state.nanColor, nanTransparency: state.nanTransparency,
20+
displacement: state.displacement, sphereResolution: state.sphereResolution,
21+
offsetNegatives: state.offsetNegatives, rotateFlat:state.rotateFlat
2722
})))
2823

2924
const width = dataShape[dataShape.length-1]
@@ -94,6 +89,7 @@ const FlatBlocks = ({textures} : {textures: THREE.Data3DTexture[] | THREE.DataTe
9489

9590
<instancedMesh
9691
scale={[1, flipY ? -1 : 1, 1]}
92+
rotation={[rotateFlat ? -Math.PI/2 : 0, 0, 0]}
9793
args={[geometry, shaderMaterial, (width * height)]}
9894
frustumCulled={false}
9995
/>

src/components/ui/MainPanel/AdjustPlot.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -325,11 +325,11 @@ const PointOptions = () =>{
325325
}
326326

327327
const FlatOptions = () =>{
328-
const {displacement, displaceSurface, offsetNegatives,
328+
const {displacement, displaceSurface, offsetNegatives, rotateFlat,
329329
setDisplacement, setDisplaceSurface, setOffsetNegatives,
330330
setResetCamera} = usePlotStore(useShallow(state=> ({
331331
displacement: state.displacement, displaceSurface: state.displaceSurface,
332-
offsetNegatives: state.offsetNegatives, setDisplacement: state.setDisplacement,
332+
offsetNegatives: state.offsetNegatives, rotateFlat:state.rotateFlat, setDisplacement: state.setDisplacement,
333333
setDisplaceSurface: state.setDisplaceSurface, setOffsetNegatives: state.setOffsetNegatives,
334334
setResetCamera: state.setResetCamera
335335
})))
@@ -338,7 +338,7 @@ const FlatOptions = () =>{
338338
<div className='grid gap-2 mb-2'>
339339
<div
340340
className='relative w-full text-center h-10 bg-primary rounded-full cursor-pointer mb-2 flex items-center justify-between px-4'
341-
onClick={() => {if (!displaceSurface){setResetCamera(!usePlotStore.getState().resetCamera)}; setDisplaceSurface(!displaceSurface); }}
341+
onClick={() => {if (!displaceSurface){setResetCamera(!usePlotStore.getState().resetCamera)}; setDisplaceSurface(!displaceSurface); usePlotStore.setState({rotateFlat: false}) }}
342342
>
343343
<span className={`z-10 font-semibold transition-colors ${displaceSurface ? 'text-primary' : 'text-secondary'}`}>
344344
Flat
@@ -354,6 +354,7 @@ const FlatOptions = () =>{
354354
</div>
355355
<Hider show={!displaceSurface}>
356356
<div className='grid gap-2'>
357+
357358
<b>Displacement</b>
358359
<UISlider
359360
min={0}
@@ -364,8 +365,11 @@ const FlatOptions = () =>{
364365
onValueChange={(vals:number[]) => (setDisplacement(vals[0]))}
365366
/>
366367
<div className='grid grid-cols-[auto_20%] items-center gap-2 text-left'>
367-
<label htmlFor="offset-switch">Offset Negatives</label>
368+
<label htmlFor="offset-switch"><b>Offset Negatives</b></label>
368369
<Switch id='offset-switch' checked={offsetNegatives} onCheckedChange={e=>setOffsetNegatives(e)} />
370+
371+
<label htmlFor="rotate-switch"><b>Rotate</b></label>
372+
<Switch id='rotate-switch' checked={rotateFlat} onCheckedChange={e=>usePlotStore.setState({rotateFlat: e})} />
369373
</div>
370374
</div>
371375
</Hider>

src/utils/GlobalStates.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ type PlotState ={
207207
xSlice: [number , number | null],
208208
interpPixels: boolean;
209209
useOrtho: boolean;
210+
rotateFlat: boolean;
210211

211212
setQuality: (quality: number) => void;
212213
setTimeScale: (timeScale : number) =>void;
@@ -314,7 +315,7 @@ export const usePlotStore = create<PlotState>((set, get) => ({
314315
xSlice: [0, null],
315316
interpPixels: false,
316317
useOrtho: false,
317-
318+
rotateFlat: false,
318319

319320
setVTransferRange: (vTransferRange) => set({ vTransferRange }),
320321
setVTransferScale: (vTransferScale) => set({ vTransferScale }),

0 commit comments

Comments
 (0)