Five months ago, Graph3DP 1.0 Beta 1 was released to the public, showing off some of the features of my 3D graphing Add-In for the Casio Prizm. Today, I am happy to introduce the first release candidate of Graph3DP. Enter one to six 3D equations Z=f(X,Y) in terms of X and Y, adjust the window as need, and spin and zoom the resulting graph! This release candidate includes all of the functions and features of the finished product, including entering multiple equations, graphing, adjusting settings, and even tracing graphs. The underlying equation-parsing system has been overhauled for speed and correctness, and now includes thirteen built-in math functions, from sin() to atan() to sqrt() to ln(). Since the first beta:

:: The equation parser, gCAS2, has been overhauled by AHelper0 to be faster, more accurate, and handle more equation forms.
:: I have made independent changes to gCAS2 to make it more foolproof, support more functions, understand the negative sign, and much more.
:: The 3D rotation subsystem of Graph3DP's custom-built 3D rendering engine has been overhauled to make off-axis rotation possible. Now, when you press the arrow keys to rotate a graph, it will rotate exactly as you would expect.
:: Many issues from the beta have been debugged and solved; many new features have been added, including improved tracing and the ability to quickly toggle which graph(s) are displayed.

As this is a release candidate, I need feedback from you, our faithful Cemetech users. Please test out Graph3DP, put it through its paces, and report any problems, glitches, or useability issues. Please also feel free to mention any positive comments or feedback; once enough users have either reported bugs or given this build a pass, I will be able to publish it as a final 1.0 release.

Download
Graph3DP 1.0 Release Candidate 1

OK, just a couple comments on the UI.

First, I like the dynamic tilting, but personally, I think the left and right arrow keys should always rotate around the Z axis, and the up and down keys should be dynamic.

Also, it would be nice if it remembered the color of graph and background that user selects.

Also, allowing the user to see the x/y/z axis lines and also having a view box that can be dynamically zoomed would be great.

Trace function is awesome.

I think that's it.. Nice job Smile
flyingfisch wrote:
OK, just a couple comments on the UI.

First, I like the dynamic tilting, but personally, I think the left and right arrow keys should always rotate around the Z axis, and the up and down keys should be dynamic.
I appreciate the feedback, but given the amount of time I spent on this aspect, this is one feature I won't be changing. Smile

Quote:
Also, it would be nice if it remembered the color of graph and background that user selects.
That's doable, but I'm not sure how important that one is. What do others think?

Quote:
Also, allowing the user to see the x/y/z axis lines and also having a view box that can be dynamically zoomed would be great.
Axes are a good idea; I could implement those. There would probably also need to be a setting to turn them on and off, I suppose? I guess [F3] in the Graph screen could do it, like [F4] and [F6] control colors.

Quote:
Trace function is awesome.

I think that's it.. Nice job Smile
Thanks for being the first person to weigh in with some feedback! I hope others will follow your fine example.
It is fun to make pretty looking graphs with this. I will probably use it when I'm bored in class. Smile
Spenceboy98 wrote:
It is fun to make pretty looking graphs with this. I will probably use it when I'm bored in class. Smile
Great to hear. Smile I'm surprised that Casio doesn't have their own in-built 3D grapher; I'm debating whether to contact them about working with me to get this pre-loaded on their calculators. Then again, they reinvented the wheel with their own Periodic Table despite Merthsoft's efforts, so I'd probably be barking up a vain tree.
KermMartian wrote:
flyingfisch wrote:
OK, just a couple comments on the UI.

First, I like the dynamic tilting, but personally, I think the left and right arrow keys should always rotate around the Z axis, and the up and down keys should be dynamic.
I appreciate the feedback, but given the amount of time I spent on this aspect, this is one feature I won't be changing. Smile


OK, then would it be possible to make 2 keys rotate around the z axis? I just find it sort of difficult to rotate the graph with the current function.

OR

You could make a button set the rotation so that x and y are flat.
flyingfisch wrote:
KermMartian wrote:
flyingfisch wrote:
OK, just a couple comments on the UI.

First, I like the dynamic tilting, but personally, I think the left and right arrow keys should always rotate around the Z axis, and the up and down keys should be dynamic.
I appreciate the feedback, but given the amount of time I spent on this aspect, this is one feature I won't be changing. Smile


OK, then would it be possible to make 2 keys rotate around the z axis? I just find it sort of difficult to rotate the graph with the current function.

OR

You could make a button set the rotation so that x and y are flat.

Perhaps you could have a setting where people could choose which style they want to use? Or maybe have a way to map certain keys, and just have a few actions for what Fisch wants and a few for your current system.
well, I originally had non-dynamic axes, in that the left and right arrow keys always rotated along one axis, and the up and down arrow keys always rotated along another axis, regardless of which way the graph was currently rotating. However, after buying a TI-92 Plus and earning a Casio ClassPad, I investigated how each of those calculators did 3D graphing, and found that both calculators used "dynamic" axes, ie, what Graph3DP does now. The five-month hiatus between the first G3DP beta and the current RC was mostly to implement those changes, so I'm probably going to dig in my heels and be stubborn about this one. Wink For the button to set X and Y flat: you can just tap TRACE! If you switch back to GRAPH, it will remember the reset rotation.
KermMartian wrote:
well, I originally had non-dynamic axes, in that the left and right arrow keys always rotated along one axis, and the up and down arrow keys always rotated along another axis, regardless of which way the graph was currently rotating. However, after buying a TI-92 Plus and earning a Casio ClassPad, I investigated how each of those calculators did 3D graphing, and found that both calculators used "dynamic" axes, ie, what Graph3DP does now. The five-month hiatus between the first G3DP beta and the current RC was mostly to implement those changes, so I'm probably going to dig in my heels and be stubborn about this one. Wink For the button to set X and Y flat: you can just tap TRACE! If you switch back to GRAPH, it will remember the reset rotation.


No, that's not what I meant. I meant having the Z axis parallel to the screen, so to speak.

This way the x and y axis are facing the user.

Anyway, I have gotten used to it and I do not think it is a huge issue any more.

EDIT:

How about having an option to zoom the graph out without changing the v-window settings?

Drawing a wireframe box around the graph would be nice option too, it could be with the same toggle button as showing axis would be.

And, lastly, a way to reset the v-window settings to defaults.
The dynamic axes feel great! Amazing work on this as always Very Happy
KermMartian wrote:
flyingfisch wrote:
[Also, it would be nice if it remembered the color of graph and background that user selects.
That's doable, but I'm not sure how important that one is. What do others think?
I was about to suggest that too. It's not terribly important, but it's a bit annoying to toggle the black background every time (I prefer it over the white background). It also doesn't feel right that it remembers the equations I have (like it's saving my state) but not the color preferences (like it's starting from scratch).
KermMartian wrote:
flyingfisch wrote:
Also, allowing the user to see the x/y/z axis lines and also having a view box that can be dynamically zoomed would be great.
Axes are a good idea; I could implement those. There would probably also need to be a setting to turn them on and off, I suppose? I guess [F3] in the Graph screen could do it, like [F4] and [F6] control colors.
I'd like to see the axes too—I often get confused by the time the lines start overlapping, and I can't tell which direction the graph is rotating (like in that dancer illusion). I don't know if axes would help much, but who knows. I agree that they should be toggled on and off, for clarity and speed.

I would also suggest diagonal rotation (like holding the left and up keys at the same time), if that's possible. Something like the way in Raptor the ship moves diagonally if you press the arrow pad in a corner (which IMHO is actually a pain in that game, but would be nice in Graph3DP).

Graphing multiple functions at once is just awesome. (If that was already in the beta, sorry I didn't notice it Razz) Having F5 plot them one at a time is a nice touch too in my opinion.

I don't know if it's still supposed to be somewhat unstable, but seeing as it's labeled as an RC I thought I'd report this. I got a crash when it tried to graph an equation ending in +) (I accidentally left out a term after that plus sign).

Some more minor suggestions:
  • A/C (ON) to clear a line in the Z= editor
  • Allowing unclosed parentheses at the end
  • EXIT to exit the context menu brought up by F1 on the graph screen (rather than just F6)
Quote:
How about having an option to zoom the graph out without changing the v-window settings?
That's what the [+] and [-] keys are for. Smile

Quote:
And, lastly, a way to reset the v-window settings to defaults.
Zoom->Default. Is that what you wanted?

Quote:
Drawing a wireframe box around the graph would be nice option too, it could be with the same toggle button as showing axis would be.
Ah, I like that idea too.

Edit: Now, Deep Thought's comments, since I missed his post the first time around:
Quote:
I don't know if it's still supposed to be somewhat unstable, but seeing as it's labeled as an RC I thought I'd report this. I got a crash when it tried to graph an equation ending in +) (I accidentally left out a term after that plus sign).
Yes, that's certainly worth reporting. Are you able to replicate that crash? What's the shortest equation you can get it with?
Quote:
Some more minor suggestions:

A/C (ON) to clear a line in the Z= editor
Allowing unclosed parentheses at the end
EXIT to exit the context menu brought up by F1 on the graph screen (rather than just F6)
[EXIT] makes a lot of sense for that, I shall implement that. I might look into making the gCAS2 parser accept pEND in place of one or more pRPAREN's preceding pEND, but no guarantees. I also agree that some kind of [CLEAR] key is needed; does the Prizm's Run/Matrix app use [A/C] for that?
KermMartian wrote:
Deep Thought wrote:
I don't know if it's still supposed to be somewhat unstable, but seeing as it's labeled as an RC I thought I'd report this. I got a crash when it tried to graph an equation ending in +) (I accidentally left out a term after that plus sign).
Yes, that's certainly worth reporting. Are you able to replicate that crash? What's the shortest equation you can get it with?
Turns out it has nothing to do with the plus sign. Z=sqrt(), Z=sin(), and so on all cause a crash, so it seems to be something with functions disabling a sanity check somewhere.
KermMartian wrote:
I also agree that some kind of [CLEAR] key is needed; does the Prizm's Run/Matrix app use [A/C] for that?
Yes it does—that's why it's labeled A/C Smile
So, to summarize:
[X] Make A/C clear the current line
[X] In Graph mode and Trace mode, make F3 toggle bounding box, axes, both, or neither.
[X] Make Graph3DP remember background, axes/bound, and graph color settings
[ ] Solve the bad function args crash
[X] Solve the offset axes display glitch
[X] Add third color mode
[X] Fix problem with crash when state file changes size.
[X] Fix missing bounds-only display mode
[X] Fix glitch in clipped line routine when both endpoints are off (different) edges
[ ] Re-color without resetting rotation? Or re-rotate?
[X] Change axes without resetting rotation
[ ] Odd memory error on restore...?
KermMartian wrote:
Quote:
How about having an option to zoom the graph out without changing the v-window settings?
That's what the [+] and [-] keys are for. Smile

Umm, no. It doesn't make the actual graph size smaller, it just changes how much of the graph is shown in the view window.

Also, could the zoom function remember you're POV instead of changing it back the the Z-axis-up orientation?


KermMartian wrote:

Quote:
And, lastly, a way to reset the v-window settings to defaults.
Zoom->Default. Is that what you wanted?


Yeah, for some reason I thought that did something else...

Rolling Eyes


EDIT:

A couple of other things:

Allow turning off the calc with shift+ac. I don't know if this would be possible but it would be nice.

When viewing only one graph at a time, display the graph equation at the top of the screen. (like in trace)
flyingfisch wrote:
Allow turning off the calc with shift+ac. I don't know if this would be possible but it would be nice.
I think that would be nice. It would feel more like one of the native graphing apps.
I'd agree anything you can do to make it feel as much like one of the native apps would be best imo.
ruler501 wrote:
I'd agree anything you can do to make it feel as much like one of the native apps would be best imo.


I agree. If you want to have any chance of having the add-in distributed by Casio, you'll need to make it look like it was done by Casio.

Allowing for Shift+AC and Shift+7 (Capture) would be really useful. Allowing for capturing the screen would allow for inclusion of 3D graphs on eActivity documents, something I'm sure some students and teachers will find useful.

Also, consider adding a global settings menu (like Casio does) for the add-in, on Shift+Menu, where one would be able to set the color scheme, axis and etc.. IMHO having these settings on the graph screen is confusing for newbies/people used to Casio's way of doing things.
Plus, if some sort of G-Solve or Sketch functions are ever added (like those on native 2D graphs), they'd fit better on the graph screen Fkeys (and then settings would need to move elsewhere).
gbl08ma wrote:
ruler501 wrote:
I'd agree anything you can do to make it feel as much like one of the native apps would be best imo.


I agree. If you want to have any chance of having the add-in distributed by Casio, you'll need to make it look like it was done by Casio.

Allowing for Shift+AC and Shift+7 (Capture) would be really useful. Allowing for capturing the screen would allow for inclusion of 3D graphs on eActivity documents, something I'm sure some students and teachers will find useful.

Also, consider adding a global settings menu (like Casio does) for the add-in, on Shift+Menu, where one would be able to set the color scheme, axis and etc.. IMHO having these settings on the graph screen is confusing for newbies/people used to Casio's way of doing things.
Plus, if some sort of G-Solve or Sketch functions are ever added (like those on native 2D graphs), they'd fit better on the graph screen Fkeys (and then settings would need to move elsewhere).


Yes, maybe making a setup menu instead f using the f-keys would work...


EDIT:

Just an observation... In default casio apps, you can clear the active line with exit, as well as ac/on.

Also, why not making it like native casio in that you can select/deselect an equation with the up/down keys, which will highlight the selected equation, and then use the left/right keys to edit.



EDIT:

pressing [exit] while in graph mode should bring the user back to the equation screen.
I'm afraid I don't currently know how to turn the calculator off, so the [SHIFT][AC/ON] idea is out, unfortunately. Same goes with the CAPTURE combination. If you guys have any ideas on those, or know the syscalls, please throw them my way. Smile Current progress:

[X] Make A/C clear the current line in equation editor
[X] In Graph mode and Trace mode, make F3 toggle bounding box, axes, both, or neither.
[X] Make Graph3DP remember background, axes/bound, and graph color settings
[X] Solve the bad function args crash (thanks Deep Thought)
[X] Solve the offset axes display glitch
[X] Add third color mode
[X] Fix problem with crash when state file changes size.
[X] Fix missing bounds-only display mode
[X] Fix glitch in clipped line routine when both endpoints are off (different) edges
[X] Change axes without resetting rotation
[ ] Re-color without resetting rotation? Or re-rotate?
[ ] Odd memory error on restore...?

I think I'll save the setup menu for a future version, since I'm in the Release Candidate part of the cycle at the moment.
KermMartian wrote:
I'm afraid I don't currently know how to turn the calculator off, so the [SHIFT][AC/ON] idea is out, unfortunately. Same goes with the CAPTURE combination. If you guys have any ideas on those, or know the syscalls, please throw them my way.


GetKey should handle it all (it also has the advantage of calling Bdisp_PutDisp_DD automatically, something I learned with AHelper). If you must use GetKey in a non-standard way that doesn't process these keys, or if you have your own keyboard-handling code, then the only thing I can help with is powering off the calculator.

There's a syscall, 0x1839, for powering off:

Code:
void PowerOff( int DisplayCasioLogo );

(it amazes me it isn't in the wiki already... is it? I might add it)

With DisplayCasioLogo set to 0, shutdown is often almost instant (but current state is still saved).

I have used this syscall in CGLock, but TBH I don't remember if I used my self-compiled libfxcg with it, or if I just used inline assembly. If you bother to go checking, you'll see what approach I did take by looking into CGLock's source code and looking for assembly instructions... if they aren't there, then I added PowerOff to libfxcg but never contributed it back...

Again, I think using GetKey would be the best approach (but I know you have your own debouncing code, which may or may not work well with GetKey...) as it would allow for the OS to "breathe" while the add-in is running. I don't know if using GetKey would affect the speed in any way, though.

PS: on the setup menu, I think there should be some (still unknown) syscalls for it (look in the Geometry add-in, Shift+Menu: these settings aren't seen anywhere else). These are my conclusions after looking at the test mode of the Prizm... ask balping, who also discovered the tabbed menu thing, about it Wink
For the time being, it'll be easier to develop a setup menu clone (like AHelper's developing the file opening screen clone), though.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 5
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement