Graphorama is a function plotting application built using C# and WPF, utilizing the OxyPlot library for plotting mathematical functions. The app supports real-time graphing, multiple functions, and provides interactive features like zoom, graph clearing, and limit adjustments.
https://cloud-1ssjxizmq-hack-club-bot.vercel.app/02025-01-01_01-32-43.mp4 (video demo)
- Plot mathematical functions with support for a variety of operations
- Real-time graphing for dynamic function plotting
- Clear and reset graph functionality
- Adjustable axis limits
- Supports standard mathematical functions (sin, cos, tan, log, etc.)
- Input validation for safe expression evaluation
- Real-time speed control for faster/slower plotting
To run Graphorama, you'll need:
- Visual Studio 2019 or later (for compiling and running the code)
- .NET Framework (compatible version based on the project setup)
-
Clone the repository to your local machine:
git clone https://github.com/UltimaCodes/Graphorama.git
-
Open the project in Visual Studio.
-
Build and run the project using Visual Studio (use the "Start" button or press
F5
).OR
-
Extract all files from the latest release zip file to a folder on your computer.
-
Double-click
Graphorama.exe
to launch the application.
Once the application is running, you will see:
- A graphing area where mathematical functions will be plotted.
- An input box to enter the function you wish to plot.
- A list of previously entered functions.
- Buttons for adding, clearing, and interacting with the graph.
You can input standard mathematical functions and operations. Here's how:
- Addition:
2x + 3
- Subtraction:
x - 5
- Multiplication:
2 * x
- Division:
x / 2
- Sine:
sin(x)
- Cosine:
cos(x)
- Tangent:
tan(x)
- Arcsin (inverse sine):
asin(x)
→ type asArcSin(x)
- Arccos (inverse cosine):
acos(x)
→ type asArcCos(x)
- Arctan (inverse tangent):
atan(x)
→ type asArcTan(x)
- Square Root:
sqrt(x)
- Logarithm:
log(x)
- Exponential:
exp(x)
-
Enable Real-Time Plotting:
- Click on the "Real-Time: Off" button to toggle real-time graphing.
- When enabled, the function will be plotted dynamically as you input it.
- You can control the speed of real-time plotting using the Real-Time Speed input field (values between 1 and 256).
-
Input and Plot Function:
- Type your function in the input box (e.g.,
sin(x)
). - Click Add Expression to plot the function on the graph.
- Type your function in the input box (e.g.,
- Adjust X-axis Limits: Enter your desired X Min and X Max values in the respective input boxes and click Update Limits.
- Zoom Reset: Click the Reset Zoom button to reset the graph zoom to default.
- To remove a function from the graph, select it from the list and press the Delete or Backspace key.
- If you input an invalid function, an error message will be shown prompting you to correct the equation.
- Ensure proper syntax, such as matching parentheses and valid operators.
- Plot a sine wave:
sin(x)
- Plot an inverse sine function:
ArcSin(x)
- Plot a logarithmic function:
log(x)
- Plot
2x + 3
:2x + 3
Feel free to fork the repository and submit pull requests with any improvements or fixes.
- Fork the repository
- Create a new branch (
git checkout -b feature-name
) - Commit your changes (
git commit -am 'Add new feature'
) - Push to the branch (
git push origin feature-name
) - Open a pull request
This project is licensed under the MIT License - see the LICENSE file for details.