Skip to content
Omar Shehata edited this page Nov 19, 2017 · 12 revisions

Our approach to understanding 4D geometry is inspired by Edwin Abbot's Flatland. We've set up the app so that you can view 1D slices of 2D objects, as well as 2D slices of 3D objects, in the hopes that students will be able to make sense of the 3D slices they see of 4D objects.

Input

Both 2D and 3D modes support 3 ways of input:

  • Cartesian equation
  • Parametric equation
  • Convex hull

In 4D, only convex hull is currently fully supported. Cartesian equations are possible to view but only as slices.

All input is controlled in the control box in the top right.

[TODO: Insert image of the control box?]

All modes also have a set of built in examples you can access in this controls menu.

2D Mode

Cartesian Functions

The default object in 2D is a circle, defined by its cartesian equation x^2+y^2 = 10. On the left, is the full 2D object. On the right, is a 1 dimensional slice. The orange line is the 1-dimensional "plane" of intersection. You can move that using the viewing controls:

[TODO: Insert gif of slicing a circle]

You can also switch the slicing axis using the drop down.

Now try changing the equation to something like x^2+y^2 < 10. Now you should see a whole region filled in. You can also choose to see the full shape when slicing by ticking the [TODO: Insert name of checkbox when we know what it is] box.

**[TODO: Insert gif of slicing filled in circle, with whole shape slicing] **

Any cartesian function works here, including something as crazy as cos(x)=sin(y).

Parametric Functions

In 2D, we allow you to draw parametric functions in 2 variables so that you can draw filled in shapes. The a variable describes the shape, while the b variable fills it in.

Convex Hulls

Points are entered as a list of pairs. The default square is (5,5),(5,-5),(-5,-5),(-5,5). You can change any of these points and the shape will update. If you don't see anything, you're likely missing a comma, or a parenthesis. The app needs at least four points to draw a shape.

3D Mode

Cartesian Functions

Currently, only cartesian equations with an equal sign are supported (as opposed to being able to define regions with < and > in 2D). You don't need to use all the variables. For example, you can just draw y=5 as a plane.

The slices will treat it as if the shape was filled in. So despite the fact that this tube is open, the slice is rendered as a filled in region:

slicing tube

Parametric Functions

This is the same as the 2D equivalent, except you only get 2 parameters to define the surface of the shape. Parametric volumes using the 3rd parameter are a work in progress.

4D Mode

The left view on this mode might take some getting used to. What you're seeing there is a 3D projection of a 4D object on a 2D screen.

The right view is a regular 3D visualization, it just represents one slice of a hyperplane in 4D.

Cartesian Functions

You can enter any 4D cartesian equation. You can't see it projected, but you can see its slices along any of the 4 axes.

Convex Hulls

Entering enough 4 dimensional points to get a solid shape can be tedious, so try the built in examples. The tesseract will populate the field with 16 points to build a 4D cube. You can slide the hyperplane along any of the axes to see its intersection.

[TODO: Insert gif of slicing tesseract]

You can also zoom in on any of the views by using the mouse wheel. You can toggle the coordinate axes in the left view by hitting the B key on your keyboard.

You can rotate the shape along any of the W rotation planes using the keyboard:

  • Q & E to rotate along WZ
  • W & S to rotate along WY
  • A & D to rotate along WX

Rotating like this does NOT affect the slicing view. It only changes the projection.

Exercise Examples

TODO: Talk about some examples of things you can see in the app as a way of understanding higher dimensions. Maybe try the ribbon rotation example?

Troubleshooting

If things start to break, try refreshing the page, and also please let us know what broke by opening an issue on this repo!

Clone this wiki locally