Files

4.0 KiB

Diophantine Sphere Component Conversation Log

Created: June 7, 2026

Current folder before relocation:

/Users/jenstandstad/Documents/glitch_diophantine_sphere

Initial Setup

The project began as an empty git folder. The sibling project ../glitch-bubble-simulator was inspected and used as the structural template. Its standalone Glitch component shape was copied:

  • src/Component.tsx
  • src/index.tsx
  • src/dev.tsx
  • src/styles.module.css
  • src/types.ts
  • vite.config.ts
  • tsconfig.json
  • package.json
  • glitch.manifest.json
  • README.md

No sibling SKILL.md file was found. The readable sibling docs were the README files for glitch-bubble-simulator and glitch_demographic_wave.

Core Visualization

The component was renamed and rebuilt as diophantine-sphere.

The initial mathematical model:

|x| + |y| + |z| = C

where x, y, and z are integers.

Each integer vector is reduced by gcd(|x|, |y|, |z|) so collinear integer vectors share one distinct ray. Points are then placed along those rays.

The component uses Three.js for the 3D scene.

Controls Added

The first controls were:

  • allow negative values
  • radius
  • complexity

Then these were extended into the current control set:

  • Surface, Single C, Range 1..C mode switch
  • Allow negative values
  • Normalize distance
  • D for distance / radius
  • C for complexity
  • R for dot radius

The public parameter labels in src/index.tsx were simplified to D, C, and R.

Modes

Surface

Shows a continuous surface, representing infinitely many points.

When Normalize distance is checked:

x² + y² + z² = r²

This is the round Euclidean sphere.

When Normalize distance is unchecked:

|x| + |y| + |z| = r

This is the continuous L1 surface, rendered as an octahedral surface.

Single C

Shows only vectors satisfying:

|x| + |y| + |z| = C

This mode is intended to reveal the triangular grid pattern.

Range 1..C

Shows all complexities from 1 through C.

Overlapping rays are merged. Point color indicates how many vectors collapse to the same ray direction.

Distance Normalization

When Normalize distance is checked, ray points are placed on the Euclidean sphere:

sqrt(x² + y² + z²) = D

When unchecked, ray points are scaled until:

|x| + |y| + |z| = D

This lets the user compare the round Euclidean projection with the taxicab / complexity boundary.

Color and Style

The visual style was shifted toward a green/yellow retro-futuristic palette.

The overlap color ramp now runs:

green -> yellow -> amber

The layout was simplified:

  • explanatory footer hidden
  • small kicker labels hidden
  • controls are on the left
  • square 3D viewport is on the right
  • count boxes were moved out of the header flow so they do not shrink the viewport
  • viewport remains square

The latest measured browser viewport size was approximately:

643 x 643

3D Scene Interaction

The viewport supports:

  • drag rotation
  • mouse wheel zoom
  • pinch zoom using two-pointer distance tracking

Idle auto-rotation was reduced to 25% of the original speed.

After user drag or zoom interaction, idle rotation restarts from zero and slowly accelerates back.

Surface Shading

The initial continuous sphere looked flat. The surface shell was changed from unlit MeshBasicMaterial to lit MeshLambertMaterial.

Lighting added:

  • ambient light
  • warm green/yellow key light
  • green fill light
  • pale rim light

The CSS viewport grid overlay was removed because it created vertical bars on the right side of the scene.

Current Verification State

The following checks were run repeatedly after changes:

  • npm install
  • npm run build
  • local Vite preview at http://127.0.0.1:3003/
  • browser DOM/layout checks
  • browser console error checks

The current build passes:

npm run build

The latest bundle exists at:

dist/diophantine-sphere.iife.js

Notes

The project is currently located in the wrong folder and will be moved. This log was created so the design and implementation context travels with the folder.