top | item 37859085

Desmos 3D graphing calculator

449 points| benpm | 2 years ago |desmos.com

83 comments

order
[+] tanvach|2 years ago|reply
There are a bunch of YouTubers making Desmos animations. I haven’t played with it myself, but always find it fascinating with what people come up with.

https://youtu.be/4_8eY_Ij-5k

[+] seanp2k2|2 years ago|reply
and here I was having fun spinning the camera around with `xy`...comments section once again delivers.
[+] WithinReason|2 years ago|reply
Well it passes the sin(x)sin(y)sin(z)>0.1 test

Edit: also sin(x)sin(y)sin(z)+0.1sin(10x)sin(10y)sin(10z)>0.1

https://www.desmos.com/3d/85d41ad6c6

[+] westurner|2 years ago|reply
ENH: desmos [3d]: Support complex exponents; with i and/or a complex() function

Test equations for geogebra:

    equation -- what I think it looks like
    xi^2 -- Integer coordinate grid
    e^xπi -- Unit circle with another little circle also about the origin (0,0)
    e^(πi^x) -- crash / not responding: a(x)=e^(πi^(x))
                though it seems to work with x in Z+
    e**(x*pi*I)

    e^(x π i^π) -- somewhat scale-invariant interposed spirals around a single point attractor. (Zoom in/out)
Only SageMath preprocesses Python to replace XOR (^) with exp() or **, so:

  f(x) = x^2
  g(x) = x**2  # Python
  h(x) = exp(x, 2)
  x**2         # SymPy Gamma, Beta

  x**math.pi   # Python: 3.141592653589793
  x**pi        # SymPy: π

  x**1j        # Python
  x**I         # SymPy

  x**(1+I)    # BUG/ENH: Plot complex expressions with SymPy

  import sympy as sy
  display(sy.E, sy.I, sy.pi)
  from sympy import E, pi, I
  x,y = sy.symbols('x,y', real=True); display(x,y)
  eq01 = sy.Eq(y, E**(x*pi*I)); display(eq01)
  eq02 = sy.Rel(y, E**(x*pi*I), '=='); display(eq02)
  func01 = sy.Function('f')(E**(x*pi*I)); display(func01)
  func02 = sy.Function('f')(eq02.rhs); display(func02)
  assert eq01 == eq01
  assert func01 == func02

  import unittest
  test = unittest.TestCase()
  test.assertEqual(eq01, eq02)
  test.assertEqual(func01, func02)
Sympy Gamma: https://gamma.sympy.org/

Sympy Beta is SymPy Gamma compiled to WASM: https://github.com/eagleoflqj/sympy_beta

What methods for visualizing complex coordinate(s) are helpful? You can map the complex coordinate into e.g. the z-axis; or is complex phase - as is necessary to model [qubit] wave functions psi - just another high-dimensional dimension to also visualize?

[+] JadeNB|2 years ago|reply
What is the nature of the test? Is this something that plotters are notoriously prone to misrendering? If so, then do they do so in any predictable way?
[+] RichieAHB|2 years ago|reply
My phone gets pretty warm when I zoom out but the UI remains nice and responsive …
[+] iandanforth|2 years ago|reply
Thank you to whomever thought about gimbal lock when designing the rotate controls.
[+] jlhawn|2 years ago|reply
We're all Quaternionerds now.
[+] avitzur|2 years ago|reply
You're welcome
[+] amathprof|2 years ago|reply
This looks nice, and I could see using it in some cases when I teach 3D functions, especially for complex functions that require more accuracy. But when introducing 3D it's often nicer to have graphs that showing gridding rather than smooth curves. For most purposes I'll probably stick to CalcPlot3D. It also has some nice features for showing points and vectors on a function, doing contour plots, and a nice surface of revolution visualization.

https://c3d.libretexts.org/CalcPlot3D/index.html

[+] silcoon|2 years ago|reply
Our math lab teacher in high school made us create a 2d functions representation on an infinite cartesian chart, with integrals and derivatives. Then I extended the program to print 3D functions with rotations and rainbow colours.

Was a great project in C#, since it all started with a dot on a canvas, and all the rest of things was composed extending the base objects.

(x^{2}+9/4y^{2}+z^{2}-1)^{3}-x^{2}z^{3}-9/(80)y^{2}z^{3}=0

[+] titaniumtown|2 years ago|reply
Desmos is the best, free (as in cost) and easily accessible graphing calculator out there. I wish it was opensource though. I've even tried to make an alternative and it's really hard to match their functionality (or I'm just inexperienced). I hope an opensource alternative crops up.

Edit: Seems there has https://www.geogebra.org/

[+] namibj|2 years ago|reply
GeoGebra is the closest I know, at least when limiting to copyleft [or theoretically the SQLite model would be fine, but it's pretty unique in dependability and selflessness for open source projects not subject to copyleft] "middle/high school (constructive?) geometry & function graphing teaching aid" classroom-grade robustness: bored & curious children are somewhat creative in their play/"(ab)use" of teaching/classroom software: buggy/anti-intuitive software can't survive the combination of:

- bored curious children playing around, bright and capable curious children exploring (way) beyond what the teacher explained, - normal students just getting by with the topic and relying on the software to aid their subject matter comprehension, - and teachers trying to plan lessons around it where they have to rely on it not needing a tutorial because there wouldn't really be time for such in the curriculum schedule.

[+] omneity|2 years ago|reply
I've been using Geogebra since it was recommended to me by my high-school math teacher, what feels like almost a century ago.

It never disappointed!

Desmos looks like a solid spiritual successor, if it wasn't closed source.

[+] knlje|2 years ago|reply
I've been using GeoGebra for years. I have tried Desmos twice but couldn't immediately spot the differences. What are the benefits of Desmos over GeoGebra?
[+] creata|2 years ago|reply
Can someone here explain how this works?

I'm not sure how reliable it is, but here's[1] an old Reddit comment describing the method that Desmos (2D) uses. That method works in 3D, so maybe Desmos 3D uses it, too.

[1]: https://www.reddit.com/r/desmos/comments/qlhmbc

[+] GuB-42|2 years ago|reply
After playing a bit with it, it looks like some variant of the marching cubes algorithm, and it looks recursive, as expected. Same as your Reddit thread but in 3D.

There are most likely a bunch of optimizations, but I can't think of another way of doing it. There are raytracing/raymarching techniques too, but these look different, and they are most likely cost prohibitive for arbitrary function. There is the marching tetrahedra algorithm too, but I doesn't look like it and don't see a reason to use it now that the patent for the marching cubes algorithm has expired.

[+] anthk|2 years ago|reply
I like calc paired with gnuplot.

https://github.com/lcn2/calc

inb4 dc(1)/bc(1)... calc supports complex numbers, C-like pseudo structures/functions, custom decimal points and lots more.

Also, calc/gnuplot will run on a toaster or even legacy systems from 20-25 years ago.

[+] Aardwolf|2 years ago|reply
This is fantastic! So easy to move, zoom and rotate the graph with exactly the mouse buttons you'd expect. In most even commercial math packages this is always super clunky
[+] mkishi|2 years ago|reply
How does one move with the mouse? I could only find gestures for rotation and zoom; for movement I had to resort to manually entering coordinates in the settings.
[+] ge96|2 years ago|reply
That's awesome, just rotating the cube is fun.

Makes me think of space maps for some reason in scifi

Edit: I know there's cool stuff to graph like saddle from calc 3

[+] ChuckMcM|2 years ago|reply
Fun, there was a program for the Amiga called "Doug's Math Aquarium" which I found to be pretty neat, it has a lot of that feel. Don't know how to get it to insert i (aka sqrt(-1)) but that can be worked around. Another fun thing would be color gradient for magnitude. Definitely fun times and super quick.
[+] JohnScolaro|2 years ago|reply
I can't wait to play Super Mario in this when someone inevitably makes a 3D rendering engine in it.
[+] HeWhoLurksLate|2 years ago|reply
Desmos is honestly probably one of the best things to come out of the web- it's an impressive tool and I am truly thankful for all the insight it's given me in my mathematics classes. Super stoked to see what bananas things the desmos community makes with this!
[+] RomanPushkin|2 years ago|reply
Can anyone recommend calculator to explain basic concepts to 10 year old? Like 3 * 10 = 30. Or 100 * 200 = 2000. Or 3 * 3 * 3 = 27, etc.
[+] franky47|2 years ago|reply
The 2D calculator could already display 3D curves with a projection layer [1], but it's nice to have it built-in. I built a few models of analog hardware with that trick that brought it to its knees back in 2016.

[1] https://www.desmos.com/calculator/atydw7bpnu