From 4533910bce394e7a0ee6debfc05ca1221ee51899 Mon Sep 17 00:00:00 2001 From: victor Date: Sat, 24 Oct 2026 15:57:01 +0200 Subject: Astra! --- src/models/electric-flux/state.ts | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/models/electric-flux/state.ts (limited to 'src/models/electric-flux/state.ts') diff --git a/src/models/electric-flux/state.ts b/src/models/electric-flux/state.ts new file mode 100644 index 0000000..7bded33 --- /dev/null +++ b/src/models/electric-flux/state.ts @@ -0,0 +1,36 @@ +import type { ClosedSurface, PointCharge, SurfaceShape } from './physics'; + +export interface FluxState { + chargeNC: number; + chargeX: number; + size: number; + shape: SurfaceShape; + fieldLines: boolean; + surface: boolean; + normals: boolean; +} + +export const defaultState: Readonly = { + chargeNC: 2, + chargeX: 0, + size: 1.8, + shape: 'sphere', + fieldLines: true, + surface: true, + normals: false, +}; + +export const presets = { + positive: { ...defaultState }, + negative: { ...defaultState, chargeNC: -2 }, + outside: { ...defaultState, chargeX: 3.2 }, +} satisfies Record; + +export type Preset = keyof typeof presets; + +export function physicsInputs(state: FluxState): { charge: PointCharge; surface: ClosedSurface } { + return { + charge: { coulombs: state.chargeNC * 1e-9, position: { x: state.chargeX, y: 0, z: 0 } }, + surface: { shape: state.shape, size: state.size }, + }; +} -- cgit v1.2.3