diff --git a/src/data-entry/beamstop.tsx b/src/data-entry/beamstop.tsx
index 9cb3241..b21e3eb 100644
--- a/src/data-entry/beamstop.tsx
+++ b/src/data-entry/beamstop.tsx
@@ -10,6 +10,7 @@ import {
} from "@mui/material";
import { DistanceUnits } from "../utils/units";
import { useBeamstopStore } from "./beamstopStore";
+import { useDetectorStore } from "./detectorStore";
export default function BeamStopDataEntry(): JSX.Element {
const centre = useBeamstopStore((state) => state.centre);
@@ -43,6 +44,16 @@ export default function BeamStopDataEntry(): JSX.Element {
);
};
+
+ const detector = useDetectorStore((state) => state.current)
+ const centreDetector = () => {
+ updateCentre({ x: detector.resolution.width / 2, y: detector.resolution.height / 2 })
+ }
+
+ const centreTopEdge = () => {
+ updateCentre({ x: detector.resolution.width / 2, y: 0 })
+ }
+
return (
Beamstop
@@ -80,7 +91,7 @@ export default function BeamStopDataEntry(): JSX.Element {
{" "}
px
-
@@ -96,7 +107,7 @@ export default function BeamStopDataEntry(): JSX.Element {
{" "}
px
-
+
Centre top edge
diff --git a/src/plot/centrePlot.tsx b/src/plot/centrePlot.tsx
index 9cfb442..a889889 100644
--- a/src/plot/centrePlot.tsx
+++ b/src/plot/centrePlot.tsx
@@ -12,12 +12,39 @@ import { Vector3 } from "three";
import { useBeamstopStore } from "../data-entry/beamstopStore";
import { useDetectorStore } from "../data-entry/detectorStore";
import { useCameraTubeStore } from "../data-entry/cameraTubeStore";
+import { getDomains } from "./plotUtils";
+import { PlotAxes, usePlotStore } from "./plotStore";
+import { Beamstop, CircularDevice, Detector } from "../utils/types";
export default function CentrePlot(): JSX.Element {
- const beamstop = useBeamstopStore();
- const detector = useDetectorStore();
- const cameraTube = useCameraTubeStore();
+ const plotConfig = usePlotStore();
+ const detector = useDetectorStore((state): Detector => {
+ if (plotConfig.plotAxes === PlotAxes.milimeter) {
+ return { resolution: { height: state.current.resolution.height * state.current.pixelSize, width: state.current.resolution.width * state.current.pixelSize }, pixelSize: state.current.pixelSize }
+ }
+ return state.current
+ });
+ const beamstop = useBeamstopStore((state): Beamstop => {
+ if (plotConfig.plotAxes === PlotAxes.milimeter) {
+ return { centre: { x: (state.centre.x ?? 0) * detector.pixelSize, y: (state.centre.y ?? 0) * detector.pixelSize }, diameter: state.diameter, clearance: (state.clearance ?? 0) * detector.pixelSize }
+ }
+ return {
+ centre: state.centre, diameter: (state.diameter / detector.pixelSize), clearance: state.clearance
+ }
+ });
+
+ const cameraTube = useCameraTubeStore((state): CircularDevice => {
+ if (plotConfig.plotAxes === PlotAxes.milimeter) {
+ return { centre: { x: (state.centre.x ?? 0) * detector.pixelSize, y: (state.centre.y ?? 0) * detector.pixelSize }, diameter: state.diameter }
+ }
+ return { centre: state.centre, diameter: (state.diameter / detector.pixelSize) }
+ });
+
+
+ //const cameraTube = useCameraTubeStore();
+ const domains = getDomains(detector, { centre: cameraTube.centre, diameter: cameraTube.diameter })
+
return (
@@ -25,27 +52,26 @@ export default function CentrePlot(): JSX.Element {
{(beamstopCentre: Vector3, beamstopPerimeter: Vector3, clearance: Vector3, cameraTubeCentre: Vector3, cameraTubePerimeter: Vector3, detectorLower: Vector3, detectorUpper: Vector3) => (
-
-
+
+
diff --git a/src/plot/legendBar.tsx b/src/plot/legendBar.tsx
index 7ba2831..eef5db2 100644
--- a/src/plot/legendBar.tsx
+++ b/src/plot/legendBar.tsx
@@ -26,12 +26,12 @@ export default function LegendBar(): JSX.Element {
Legend
Add something to do with colors here
- } label="Detector" />
- } label="Beamstop" />
- } label="Camera tube" />
- } label="Q range" />
- } label="Mask" />
- } label="Calibrant" />
+ } label="Detector" />
+ } label="Beamstop" />
+ } label="Camera tube" />
+ } label="Q range" />
+ } label="Mask" />
+ } label="Calibrant" />
Current calibrant: {5}
diff --git a/src/plot/plotStore.ts b/src/plot/plotStore.ts
index f399413..f1c6aa3 100644
--- a/src/plot/plotStore.ts
+++ b/src/plot/plotStore.ts
@@ -25,7 +25,7 @@ export interface PlotConfig {
}
export const usePlotStore = create((set) => ({
- detector: { inPlot: true, colour: "red" },
+ detector: { inPlot: false, colour: "red" },
beamstop: { inPlot: true, colour: "blue" },
cameraTube: { inPlot: true, colour: "green" },
clearnace: { inPlot: true, colour: "pink" },
diff --git a/src/plot/plotUtils.ts b/src/plot/plotUtils.ts
new file mode 100644
index 0000000..4e28abb
--- /dev/null
+++ b/src/plot/plotUtils.ts
@@ -0,0 +1,9 @@
+import { CircularDevice, Detector } from "../utils/types";
+import NumericRange from "../calculations/numericRange";
+
+const offset = 10;
+
+export const getDomains = (detector: Detector, cameraTube: CircularDevice): { xAxis: NumericRange, yAxis: NumericRange } => {
+ const maxLength = Math.max(detector.resolution.height, detector.resolution.width, cameraTube.diameter)
+ return { xAxis: new NumericRange(-offset, Math.round(maxLength + offset)), yAxis: new NumericRange(-offset, Math.round(maxLength + offset)) }
+}
\ No newline at end of file
diff --git a/src/presets/presetConfigs.json b/src/presets/presetConfigs.json
index 81f5733..83301f1 100644
--- a/src/presets/presetConfigs.json
+++ b/src/presets/presetConfigs.json
@@ -23,28 +23,28 @@
"minCameraLength": 10,
"maxCameraLength": 100
},
- "second": {
+ "I22 SAXS Isotropic": {
"detector": "Pilatus P3-2M",
"beamstop": {
"centre": {
- "x": 2,
- "y": 2
+ "x": 738,
+ "y": 100
},
"diameter": 4,
- "clearance": 1
+ "clearance": 10
},
"cameraTube": {
"centre": {
- "x": 2,
- "y": 2
+ "x": 738,
+ "y": 840
},
- "diameter": 2
+ "diameter": 310
},
- "angle": 1,
+ "angle": 1.57,
"cameraLength": 1,
"minWavelength": 1,
"maxWavelength": 1,
- "minCameraLength": 10,
+ "minCameraLength": 1.9,
"maxCameraLength": 100
}
}
\ No newline at end of file