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

3D plots? #1

Open
waldyrious opened this issue May 23, 2014 · 6 comments
Open

3D plots? #1

waldyrious opened this issue May 23, 2014 · 6 comments

Comments

@waldyrious
Copy link
Contributor

Not sure if there's anything from http://syzygy.virtualave.net/webwork/javascript/plotter.htm that can be of use to TextPlot.jl, but I thought I'd at least make a mention of it.

Particularly, they seem to support 3D plots, which would be a nice addition.

@sunetos
Copy link
Owner

sunetos commented May 23, 2014

That is slick. I'm not sure 3d plotting would hold up in a terminal setting, but I might take a stab at it eventually. If you need that level of plotting, you should probably use Gadfly.

@sunetos
Copy link
Owner

sunetos commented Sep 19, 2014

I've thought about this more, and so far I can only come up with one semi-reasonable idea to make a 3d orthographic plot legible at such an insanely low resolution.

If instead of doing the striping on both x & y axes to show the descent into the z axis like the javascript example (and like most 3d plotting systems), we borrowed from the Mathematica-style rainbow gradient to reflect depth: dots with a higher z value would be a darker color.

We can detect if Julia is running with terminal colors enabled, and show a warning message when trying to 3d plot without running in a proper (at least ANSI 256-color) terminal.

This way, instead of a mess of dots that don't make sense, the striping would only be done at each dimension's boundaries, and at sample intervals along the z-axis.

This is pretty hard to describe correctly, so let me know if that made no sense.

@sunetos
Copy link
Owner

sunetos commented Sep 19, 2014

In other words, instead of properly tesselating a smooth 3d surface into quads like the other systems, we could get away with just curves that run from min Z to max Z, fading to dark as they approach max Z.

@waldyrious
Copy link
Contributor Author

If I understand correctly, you're talking about elevation contour lines, right? Sounds like it could work, but I assume when they get too close to each other and essentially would overlap in the same Braille character, some averaging would have to be used (similar to what's been discussed in #6) in order to preserve the color gradient effect... in any case, it'd surely worth a try :)

@sunetos
Copy link
Owner

sunetos commented Sep 20, 2014

I was assuming a left-handed coordinate system, where right on the screen is increasing X, up on the screen is increasing Y (like it is now), and diagonally into the screen is increasing Z. So I was proposing holding X & Y constant, and tracing from minZ to maxZ (going diagonally into the screen). It looks like contour lines are the opposite: holding Z constant, and tracing X at spaced Y intervals.

I really should just draw a picture. In fact I will, since I just ordered this little gadget specifically for these types of projects: http://www.myboogieboard.com/na/products/boogie-board-sync-9.html . Once it gets here early next week, I'll try to show what's in my head.

Your point about intersections is still valid though; that's a messy one.

@waldyrious
Copy link
Contributor Author

Oh, I see. I think I got it now, but I'm sure a diagram would make this even clearer. Looking forward to see that sketch :)

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

2 participants