Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Realtime GPU-powered implicit function plotter in your browser (plotf.xyz)
41 points by timokoesters on Jan 24, 2023 | hide | past | favorite | 14 comments



Here's some more examples:

    cos((x - t)) + cos(0.5877852522924731*y + 0.8090169943749475*(x - t)) + cos(0.9510565162951535*y + 0.30901699437494745*(x - t)) + cos(0.9510565162951536*y - 0.30901699437494734*(x - t)) + cos(0.5877852522924732*y - 0.8090169943749473*(x - t)) = z

    10.0*(pow(sin(0.1*(x*x-y*y)), 2.0) + pow(sin(0.2*x*y), 2.0))/sqrt(x*x + y*y) = z

    x*x+y*y+z*z=2.0+cos(t+10.0*x+24.0*y)+cos(t - 10.0*x+24.0*y+16.0*z)+sin(t+x+y+2.0*z)+cos(3.0*t+y-z)+sin(2.0*t+x*y)+cos(t+3.0*x*y)+sin(0.1*t+y*z + 7.0*x*y)+cos(0.5*t+x*y*z)+cos(5.0*z)+cos(1.618*t+7.0*z)+cos((x+2.0*y)*(2.0\*z-y))


You escaped an * one time too many in the last one.


Adding a periodic unbounded function of time (like tan) makes the plot to "explode":

(6.0*(0.04*x*x - 1.0)*pow(0.2*x, 2.0) + pow(0.02*x*x - 1.0, 2.0) + 6.0*(0.04*y*y - 1.0)*pow(0.2*y, 2.0) + pow(0.04*y*y - 1.0, 2.0) + 6.0*(0.04*z*z - 1.0)*pow(0.2*z, 2.0) + pow(0.04*z*z - 1.0, 2.0)) = tan(t)

Adding more non-linearity makes the plot is more dynamic:

(6.0*(0.04*x*x - 1.0)*pow(0.2*x, 2.0) + pow(0.02*x*x - 1.0, 2.0) + 6.0*(0.04*y*y - 1.0)*pow(0.2*y, 2.0) + pow(0.04*y*y - 1.0, 2.0) + 6.0*(0.04*z*z - 1.0)*pow(0.2*z, 2.0) + pow(0.04*z*z - 1.0, 2.0)) = tan(t*cos(t))

Edit: Escaping.


This project is so cool!

Please copy some of the UI ideas from my 2D graphing calculator (which itself copied nearly all of the UI of graphtoy.com): https://memalign.github.io/m/formulagraph/index.html

- Buttons to load examples

- Quick way to share a link to the current plot

- Buttons that show what functions are supported


This is a truly impressive achievement in real-time browser rendering. The utilization of GPU power to plot implicit functions in real-time is a testament to the capabilities of modern web technologies. The ability to interactively explore and visualize these complex mathematical functions in the browser will undoubtedly prove to be a valuable tool for both researchers and students alike. The seamless integration of this technology into a web-based platform also makes it easily accessible to a wide audience, further increasing its impact. I am eager to see what other groundbreaking developments will come out of this field in the future.


A browser-based plotter, with GPU power to boot,

A tool for math students, a treasure to loot.

Implicit functions, once hard to explore,

Now with this tool, easily to deplore.

Real-time rendering, a sight to behold,

A new way to understand, the stories these functions have told.

Interactive and accessible, to all with a browser,

A true game-changer, like the discovery of a new rover.

No longer a struggle, to see and to know,

The beauty of math, it can now show.

This technology, a democratizer,

A bright future, it will inspire.

So let us embrace, this new way to see,

The complexity of math, now easy to be.


:0


:)


Dang, that's really pretty. Could do with a little interface polish, but really nice visualizations. How does 't' work? Would love to be able to feed an audio waveform into a fullscreen mode and some palette options.


t is just a time variable that's loaded from the CPU to the GPU every frame, so it's possible to use all sorts of other data as well.


Could the shader just compute the t by itself, without loading it every frame?


I've been meaning to do some project in the browser involving the GPU and can't decide on a framework to use.

What would you recommend? The cool kids seem to be using pure webGPU


This was made in Rust using WGPU and their WGSL shading language. It still needs more documentation and tutorials, but the results are great and port to many platforms.


Did you publish the source as well?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: