Tesseract 4D
Explore a tesseract with two independent 4D rotations, coloured cubic cells and perspective or orthographic projection.
About this tool
Explore a tesseract with two ordered plane rotations. Each toolbar group selects a rotation plane and angle; drag a slider or use its arrow keys. Parameters provides precise angles, signed speeds, projection and distance. Changes update immediately. Play explicitly starts 4D motion; mouse dragging rotates only the 3D camera. Ctrl/Meta + wheel zooms, a plain wheel scrolls the page. Reset fits the model to the available view.
The tesseract has 16 vertices (±1,±1,±1,±1), 32 edges of length 2, 24 square faces and 8 cubic cells. Blue/yellow identify the original opposite −w/+w cells, with violet connections. These identities rotate with the object. Rotation 1 is applied before rotation 2; overlapping planes do not generally commute.
Perspective uses viewpoint (0,0,0,d) and image hyperplane w=0: xyz/(1 − w/d). Distance d ≥ 2.1 keeps all rotations clear of the projection pole; large d approaches the orthographic view, which drops w. A fixed analytic all-pose radius keeps the camera stable during playback. Fitting uses both horizontal and vertical fields of view. Projected edges or vertices can coincide; this does not make the 4D model degenerate.
Speeds are in degrees per second and may be negative. Two zero speeds disable Play. Pause holds the current angles; editing, opening Parameters, exporting or leaving pauses playback. Only manually entered raw values persist, including invalid drafts. Computed playback angles, camera and results are not stored; reload restores the last angles you entered yourself. Without WebGL, numeric coordinates and CSV remain available.
Open Coordinates inside Parameters to inspect rotated 4D and projected 3D values rounded to six decimal places. CSV exports all 16 current vertices as complete JavaScript numbers. PNG exports the current camera view with numeric input/model/camera metadata. Input changes discard pending outdated PNG exports. All processing stays in your browser; this is a two-rotation edge viewer, not a general polytope editor.