#17025: can't view vectors with canvas3d
----------------------------+------------------------
       Reporter:  kcrisman  |        Owner:
           Type:  defect    |       Status:  new
       Priority:  minor     |    Milestone:  sage-6.4
      Component:  graphics  |   Resolution:
       Keywords:            |    Merged in:
        Authors:            |    Reviewers:
Report Upstream:  N/A       |  Work issues:
         Branch:            |       Commit:
   Dependencies:            |     Stopgaps:
----------------------------+------------------------

Comment (by kcrisman):

 Here's the precise problem.
 {{{
 sage: V = vector([1,2,3])
 sage: W = V.plot()
 sage: W.json_repr(W.default_render_params())
 []
 sage: W.default_render_params()
 <class 'sage.plot.plot3d.base.RenderParams'>
 sage: type(W)
 <class 'sage.plot.plot3d.shapes2.Line'>
 }}}
 whereas most of the primitives are `<class
 'sage.plot.plot3d.base.TransformGroup'>` or `<type
 'sage.plot.plot3d.parametric_surface.ParametricSurface'>` or something
 similar.


 ----

 Okay, specifically the file plot/plot3d/shapes2.py lacks `json_repr`
 methods, so it goes back to the (empty) default.  Looks like `Line`,
 `Point`, and `bezier3d`.   It turns out that the radius attribute gets you
 something because it relies on shapes.pyx.
 {{{
 sage: L = line3d([(0,0,0), (1,1,1)], radius=0.1)
 sage: L.json_repr(L.default_render_params())
 
[[["{vertices:[{x:1,y:1,z:1},{x:0.978868,y:1.07887,z:0.942265},{x:1.04082,y:1.04082,z:0.91835},{x:1.07887,y:0.978868,z:0.942265},{x:1.07071,y:0.929289,z:1},{x:1.02113,y:0.921132,z:1.05774},{x:0.959175,y:0.959175,z:1.08165},{x:0.921132,y:1.02113,z:1.05774},{x:0.929289,y:1.07071,z:1},{x:-0.0211325,y:0.0788675,z:-0.057735},{x:0.0408248,y:0.0408248,z:-0.0816497},{x:0.0788675,y:-0.0211325,z:-0.057735},{x:0.0707107,y:-0.0707107,z:-6.93889e-18},{x:0.0211325,y:-0.0788675,z:0.057735},{x:-0.0408248,y:-0.0408248,z:0.0816497},{x:-0.0788675,y:0.0211325,z:0.057735},{x:-0.0707107,y:0.0707107,z:6.93889e-18},{x:0,y:0,z:0}],faces:[[0,2,1],[0,3,2],[0,4,3],[0,5,4],[0,6,5],[0,7,6],[0,8,7],[0,1,8],[1,2,10,9],[2,3,11,10],[3,4,12,11],[4,5,13,12],[5,6,14,13],[6,7,15,14],[7,8,16,15],[8,1,9,16],[9,10,17],[10,11,17],[11,12,17],[12,13,17],[13,14,17],[14,15,17],[15,16,17],[16,9,17]],color:'6666ff'}"]]]
 sage: L = line3d([(0,0,0), (1,1,1)])
 sage: L.json_repr(L.default_render_params())
 []
 }}}

 ----

 An easy fix to the problem here is to fix this:
 {{{

         if plot_type == 'arrow' or plot_type == 'point':
             dimension = len(coords)
             if dimension == 3:
                 from sage.plot.plot3d.shapes2 import line3d, point3d

                 if plot_type == 'arrow':
                     return line3d([start, [(u+v) for u,v in zip(coords,
 start)]], arrow_head=True, **kwds)
                 else:
                     return point3d(coords, **kwds)
 }}}
 Of course, in such a way that 'nice' things are relied upon, such as
 `arrow3d`
 {{{
 sage: X = arrow3d((0,0,0),(1,2,3))
 sage: X.json_repr(X.default_render_params())
 
[[["{vertices:[{x:0.951893,y:1.90379,z:2.85568},{x:0.950307,y:1.92061,z:2.84499},{x:0.96967,y:1.90748,z:2.84729},{x:0.964466,y:1.88924,z:2.86119},{x:0.941886,y:1.8911,z:2.86747},{x:0.933136,y:1.91049,z:2.85746},{x:-0.00158573,y:0.0168285,z:-0.0106904},{x:0.0177771,y:0.00369219,z:-0.00838714},{x:0.0125726,y:-0.0145466,z:0.00550691},{x:-0.0100068,y:-0.0126825,z:0.0117906},{x:-0.0187571,y:0.00670842,z:0.00178008},{x:0,y:0,z:0}],faces:[[0,2,1],[0,3,2],[0,4,3],[0,5,4],[0,1,5],[1,2,7,6],[2,3,8,7],[3,4,9,8],[4,5,10,9],[5,1,6,10],[6,7,11],[7,8,11],[8,9,11],[9,10,11],[10,6,11]],color:'6666ff'}"],
 
[["{vertices:[{x:1,y:2,z:3},{x:0.947136,y:1.95427,z:2.82361},{x:1.00522,y:1.91486,z:2.83052},{x:0.989611,y:1.86015,z:2.8722},{x:0.921873,y:1.86574,z:2.89105},{x:0.895622,y:1.92391,z:2.86102},{x:0.951893,y:1.90379,z:2.85568}],faces:[[0,2,1],[0,3,2],[0,4,3],[0,5,4],[0,1,5],[1,2,6],[2,3,6],[3,4,6],[4,5,6],[5,1,6]],color:'6666ff'}"]]]]
 }}}
 and `LineSegment`.  So perhaps a different ticket could be actually fixing
 these base classes by providing `json_repr()` for them.

--
Ticket URL: <http://trac.sagemath.org/ticket/17025#comment:2>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to