Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

💡 Ideas #204

Open
23 of 37 tasks
unageek opened this issue Aug 3, 2021 · 4 comments
Open
23 of 37 tasks

💡 Ideas #204

unageek opened this issue Aug 3, 2021 · 4 comments

Comments

@unageek
Copy link
Owner

unageek commented Aug 3, 2021

Graphing Engine

  • Efficient algorithm for common parametric relations: x = f(t) && y = g(t) && P(t)
  • Efficient algorithm for explicit relations: y = f(x) && P(x) or x = f(y) && P(y)
  • Regression testing of graphs
  • Evaluate constant relations only once, without subdivisions
  • Make block::MIN_K smaller
  • Port to Windows
  • Add (U+2212) as an alias for -
  • Add , , and ¬ as aliases for &&, ||, and !, respectively
  • Conditional/piecewise expressions
  • Complex functions
  • Integer parameters
  • Add source locations to AST nodes for better error messages
  • Revise the definition of the exponentiation of real numbers x^y to match exp(y ln(x)).
    • The domain would be (y ∈ ℤ ∧ x ≠ 0) ∨ (y ∈ ℤ ∧ y ≥ 1) ∨ (x ≥ 0 ∧ y > 0) ∨ x > 0.
    • Keep the current definition with a different syntax, such as x^^y?
    • Leave both 0^0 and 0^^0 undefined for the best consistency.
      • ^ (real) is a subset of ^ (complex) and ^^.
  • Lazy evaluation of conditional expressions (if)
  • Migrate to Rust 2021
  • Transform polynomials into Horner form
  • Shorthand for chained if (flattened arguments?)
  • User-defined "macros" (generic constants/functions)
    • Use := for definitions
  • Terser syntax?
  • Exact handling of more numbers in Real?
    • Algebraic numbers
    • Transcendental numbers (sin(π/2) = 1, etc.)
    • Try Calcium

App

  • Use Slate in RelationInput
  • Automatically add/delete closing brackets while typing
  • Assign the same ID to relations that are mapped to the same AST
  • Exporting graphs as an image
    • Anti-aliasing can be done by supersampling + dilation (for preserving the stroke thickness).
    • The graphs of some relations such as y = ⌊x⌋ may look worse than now when low-level supersampling is used. On the other hand, high-level supersampling cannot be incorporated in real-time rendering. So anti-aliasing involving resampling would be an option only for exporting graphs.
  • Setting pen size for exporting
  • Setting pen size for displaying
  • Saving/loading graphs
  • Dark mode?
  • Place the symbols button near the input cursor
  • Support for fractional DPI scaling (125%, 150%, etc.)
  • Draw the axes/grids in the exported image
  • Framed layout
  • Saving/loading settings
  • Interactive parameters?
  • Make RAM/CPU usage configurable
  • Use mdBook for the user guide, and split the documentation of each function into its own page?

Website?

  • Gallery page
@unageek unageek pinned this issue Aug 3, 2021
@RuixiZhang42
Copy link

Very excited about where this project is headed! Will the complex functions extension follow GrafEqℂ: Reliable graphing in the complex plane by Becuwe et al. (2005)?

@unageek
Copy link
Owner Author

unageek commented Aug 5, 2021

@RuixiZhang42 Thank you for your comment!

Will the complex functions extension follow GrafEqℂ: Reliable graphing in the complex plane by Becuwe et al. (2005)?

Maybe, but I'm still thinking about the details.

@unageek unageek unpinned this issue Oct 5, 2021
@unageek unageek pinned this issue Oct 5, 2021
@unageek unageek changed the title 📜 Roadmap 💡 Ideas Dec 29, 2021
@Firestar-Reimu
Copy link

Firestar-Reimu commented Feb 2, 2024

Wonderful Project! Linux Version Please?


OK I see how to build it from source on Ubuntu, but also you can make an excecutible file/Appimage file, Thanks!

@Firestar-Reimu
Copy link

image
Maybe it is good to have a hide button to hide unwanted relation graphs thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants