diff options
| author | LalleSX | 2026-10-24 04:35:56 +0200 |
|---|---|---|
| committer | LalleSX | 2026-10-24 04:35:56 +0200 |
| commit | c4c1c840f8761ea45a3d2dcc912a59d8ced78cb5 (patch) | |
| tree | 8fcbbfffb6a34af73697a703f77e6b82f191b91f /src/physics/electricField.test.ts | |
| download | 3D-Electrophysics-c4c1c840f8761ea45a3d2dcc912a59d8ced78cb5.tar.gz 3D-Electrophysics-c4c1c840f8761ea45a3d2dcc912a59d8ced78cb5.zip | |
init
Diffstat (limited to 'src/physics/electricField.test.ts')
| -rw-r--r-- | src/physics/electricField.test.ts | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/physics/electricField.test.ts b/src/physics/electricField.test.ts new file mode 100644 index 0000000..2e01309 --- /dev/null +++ b/src/physics/electricField.test.ts @@ -0,0 +1,21 @@ +import { describe, expect, it } from 'vitest'; +import { electricField, COULOMB_CONSTANT } from './electricField'; + +describe('Coulomb electric field', () => { + it('points away from a positive charge with inverse-square magnitude', () => { + const field = electricField({ x: 2, y: 0, z: 0 }, [{ x: 0, y: 0, z: 0, coulombs: 1e-9 }]); + expect(field.x).toBeCloseTo(COULOMB_CONSTANT * 1e-9 / 4); + expect(field.y).toBe(0); + expect(field.z).toBe(0); + }); + it('superposes opposite charges in the same direction at the midpoint', () => { + const field = electricField({ x: 0, y: 0, z: 0 }, [ + { x: -1, y: 0, z: 0, coulombs: 1e-9 }, + { x: 1, y: 0, z: 0, coulombs: -1e-9 }, + ]); + expect(field.x).toBeCloseTo(2 * COULOMB_CONSTANT * 1e-9); + }); + it('omits singular samples within the visualization exclusion radius', () => { + expect(electricField({ x: 0, y: 0, z: 0 }, [{ x: 0, y: 0, z: 0, coulombs: 1e-9 }])).toEqual({ x: 0, y: 0, z: 0 }); + }); +}); |