This could be worth a ticket? On Sunday, October 11, 2015 at 10:27:07 AM UTC-4, Lubomir Dechevsky wrote: > > Here is one suggestion for a general solution in SAGE to the problem about > generating arbitrary meshes of curves on surfaces in 3D or of curves and/or > surfaces in 3D-volume deformations (i.e., > (x=fx(u,v,w),y=fy(u,v,w),z=fz(u,v,w)), which includes also 3D-scalar fields > (i.e., t=f(x,y,z), t is a scalar, say, real). In this setting, the > necessary result is achieved in a simple way using the currently available > visualization classes parametric_plot3d and implicit_plot3d: > > > http://ask.sagemath.org/question/29836/plotting-families-depending-on-integer-parameters-of-curvilinear-coordinate-and-isolevel-lines-and-surfaces-resp-for-functional-and-parametric/ > > Comments, remarks, improvements and optimizations are very welcome! > > Regards, > > shao-linux :) > > On Tuesday, November 3, 2009 at 2:56:58 PM UTC+1, Jonathan wrote: >> >> Thanks, I'll try to get a look at it. This appears to be what I >> needed to find. No promises, as I'm pretty swamped, but now I have >> somewhere to start. >> >> Jonathan >> >> >> On Nov 3, 1:02 am, Jason Grout <jason-s...@creativetrax.com> wrote: >> > Jonathan wrote: >> > > Jason, >> > > I think this is a great idea. As I use Sage a bit in my teaching, >> > > it would be nice to have a primitive with separate items for axes, >> > > axes' labels, axes scale (the numbers on the axes). Then buttons >> > > could be added to turn these on and off at the user request. If some >> > > things can be passed to Jmol as functions, they will render well at >> > > any zoom level. It would also be easier to use the slab function for >> > > slicing 3-D objects. >> > > That said there are some serious problems with how the notebook/ >> > > plot3D uses Jmol presently, that have little to do with whether a >> > > primitive exists or not. I'm willing to help fix them, but need to >> > > understand where in the code the html and javascript for Jmol is >> > > generated. The way it is presently done the following things are a >> > > problem: >> > >> > > 1) It does not work in Firefox on Macs. Since I never have trouble >> > > with this, I'm assuming something abnormal is being done with the >> > > javascript that controls Jmol. Again, I bet I can help with this, >> but >> > > I could not easily find where the code was generated. All I can do >> is >> > > look at a web page. >> > > 2) Since people are running into memory problems, I suggest that only >> > > a limited number of live Jmols (present default JavaVM configurations >> > > support about 8 - 10 per page) be allowed in any given notebook. I >> > > provided some example code that does not require any server >> > > intervention that does this. I could help fold this in, if I could >> > > figure out how you are generating the javascript to control Jmol. >> > > 3) Since there is room next to Jmol in the notebook, I suggest that >> > > simple instructions on what Jmol can do and how to access the pop-up >> > > be added and maybe a link to more extensive documentation (the Jmol >> > > Site?). I'm an expert with Jmol and found it difficult to do >> anything >> > > but rotate the image without significant experimentation. >> > > 4) It also might be worth loading only a static image first with a >> > > link to make live. This saves a lot of bandwidth and will decrease >> > > the time users have to wait to see their plots. >> > > 5) It would probably be a good idea to upgrade Jmol to the latest >> > > stable release 11.8. I will try slipping that into a copy of 4.2 I >> > > just downloaded. >> > >> > > These are just some thoughts. The key thing is I think I could help, >> > > but do not have time to wade through the code to figure out how >> > > everything is connected. Can someone just tell me were to look? >> > >> > Here's what I found by poking around for a bit. Everything has changed >> > since the new notebook, so someone that knows, *please* correct me if >> > I'm wrong. >> > >> > In Sage 4.2, it looks like the jmol-invoking javascript code is in: >> > >> > local/lib/python2.6/site-packages/sagenb/data/sage/js/jmol_lib.js >> > >> > That appears to be the code that actually sets up a jmol applet and >> > makes the "Get Image" link. >> > >> > That file is loaded in >> > local/lib/python2.6/site-packages/sagenb/data/sage/js/notebook_lib.js >> > >> > Jmol is initialized at the bottom of the template file: >> > >> > >> local/lib/python2.6/site-packages/sagenb/data/sage/html/notebook/head.tmpl >> > >> > The actual jmol application is in: >> > >> > local/lib/python2.6/site-packages/sagenb/data/jmol >> > >> > The jmol code gets invoked when a ".jmol" file is created by a 3d plot. >> > The notebook then comes by, sees the .jmol file, and creates the jmol >> > applet. The code that does this is in >> > local/lib/python2.6/site-packages/sagenb/notebook/cell.py (search for >> > jmol). >> > >> > The code in Sage that generates the .jmol files is (I believe) in >> > devel/sage/sage/plot/plot3d/base.pyx (see the show method, starting >> with >> > the following code. EMBEDDED_MODE is True when you are inside the >> > notebook, and False if you are not executing inside the notebook.) >> > >> > if DOCTEST_MODE or viewer=='jmol': >> > # Temporary hack: encode the desired applet size in the >> end >> > of the filename: >> > # (This will be removed once we have dynamic resizing of >> > applets in the browser.) >> > base, ext = os.path.splitext(filename) >> > fg = figsize[0] >> > #if fg >= 2: >> > # fg = 2 >> > filename = '%s-size%s%s'%(base, fg*100, ext) >> > ext = "jmol" >> > archive_name = "%s.%s.zip" % (filename, ext) >> > if EMBEDDED_MODE: >> > # jmol doesn't seem to correctly parse the ?params >> part >> > of a URL >> > archive_name = "%s-%s.%s.zip" % (filename, randint(0, >> 1 >> > << 30), ext) >> > >> > T = self._prepare_for_jmol(frame, axes, >> frame_aspect_ratio, >> > aspect_ratio, zoom) >> > T.export_jmol(archive_name, force_reload=EMBEDDED_MODE, >> > zoom=zoom*100, **kwds) >> > viewer_app = "sage-native-execute " + >> > os.path.join(sage.misc.misc.SAGE_LOCAL, "bin/jmol") >> > >> > # We need a script to load the file >> > f = open(filename + '.jmol', 'w') >> > f.write('set defaultdirectory "%s"\n' % archive_name) >> > f.write('script SCRIPT\n') >> > f.close() >> > >> > I hope this helps. >> > >> > Thanks, >> > >> > Jason >> > >> > -- >> > Jason Grout > >
-- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at http://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.