Skip to content

Commit

Permalink
Update README and add future plans
Browse files Browse the repository at this point in the history
  • Loading branch information
lyczak committed Nov 20, 2020
1 parent f5512c5 commit f7519f9
Showing 1 changed file with 47 additions and 3 deletions.
50 changes: 47 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
# Woah, this looks cool!

## What is it?
MineMath is a multivariate function plotting toolkit to help
students develop 3D visualization skills through Minecraft.
students develop mathematics and 3D visualization skills
through Minecraft.

You can think of this as a **3D graphing calculator in Minecraft**.
MineMath is [Bukkit plugin](https://gaming.stackexchange.com/a/16573) and can be installed on Bukkit/Spigot-compatible
Minecraft server. We recommend [Paper](https://papermc.io).
Minecraft server. I recommend [Paper](https://papermc.io).

## What can I do with it?
MineMath supports the following features out of the box...
MineMath is still **under active development** but many basic
features are supported out of the box. So far it can do most
of the plot-related things I can do on my [TI-89](https://en.wikipedia.org/wiki/TI-89_series)
graphing calculator (though none of that fancy algebraic stuff).

### Features
- Defining plotting areas using an in-game wand tool
- `/m2 defplot`
- Plotting [parametric curves](https://en.wikipedia.org/wiki/Parametric_equation#Examples_in_three_dimensions)
Expand All @@ -27,3 +35,39 @@ MineMath supports the following features out of the box...
- Defining custom functions to use in your plots
- `/m2 defun d(a,b)=a*cos(pi*b)`
- `/m2 plot d(x,y)`

### In-Progress Features
A few other features have been implemented in code but aren't (yet)
available in game.
- A number of settings relating to plots that aren't yet changable in game
- Un-swapping the Y and Z axis
- Drawing the axes somewhere else
- Matrix inversion and multiplication allowing
for change-of-basis via linear transformations
- The `PlotMaterialProvider` interface, allowing plots
to be made of different types of blocks
- This includes `DefaultMaterialProvider` which has some basic
presets to make plots out of different colors of glass and wool.
- The `PlayerInstruction` interface, allowing easy hooking of `PlayerEvent`
objects to handle actions that players perform other than commands.
- `PlaterInstruction<E>` objects are stored in a `PlayerSession`
- The `instructionQueue` holds an ordered
set of steps to be followed
- The `instructionList` holds free
instructions that can be run at any time

### Future Plans
Here are some ideas I have and things I might want to add or change.
- Session and plot persistence (probably in a file)
- Choosing between multiple plot areas without having
to reselect them with the wand
- Drawing a cube-like frame around the plotting area
- Polishing time-varying animated plots
- Adding size constraints to plotting areas
- Making more things asynchronous and timing-safe
- Adding tools users can use to manipulate their plots
- Zoom, rotate, pan, redraw, etc.
- Allowing users to share plotting areas between each other
- Binding plots to tools to allow users to quickly switch plots
- Adding funky plotting colors via `PlotMaterialProvider`
- Who knows what else...?

0 comments on commit f7519f9

Please sign in to comment.