Ask Your Question
0

3D graphics bug?

asked 2012-07-24 14:04:56 +0200

anonymous user

Anonymous

updated 2012-07-24 14:55:43 +0200

kcrisman gravatar image

Hi,

When I use the following code and I change the values of phi or theta, the previous red dot(point of projection) remains on the image and the new dot is added onto the image, giving two red dots. If I repeatedly change the values then more red dots appear. This problem does not occur if I get rid of the polygon inside the sphere. I'm not sure why this is happening...


Works:

S = sphere(size=10,color="yellow",opacity=0.5)
north_pole = point3d((0,0,10), color="blue")
r = 10
@interact
def _(theta = slider(0,2*pi,pi/20, default = pi/3, label="theta"),
      phi = slider(0,2*pi,pi/20, default = pi/4, label="phi")):
          point_of_projection = point3d((r*sin(theta)*cos(phi),r*sin(theta)*sin(phi),r*cos(theta)), color="red")
          show(S + north_pole + point_of_projection)

Doesn't work:

Z = Polyhedron([[2,3,3],[3,0,3],[2,6,1],[1,0,1],[6,7,2]]) 
Z_set_as_graphics = Z.show() 
S = sphere(size=10,color="yellow",opacity=0.5) 
north_pole = point3d((0,0,10), color="blue") 
r = 10 
@interact 
def _(theta = slider(0,2*pi,pi/20, default = pi/3, label="theta"), phi = slider(0,2*pi,pi/20, default = pi/4, label="phi")): 
    point_of_projection = point3d((r*sin(theta)*cos(phi),r*sin(theta)*sin(phi),r*cos(theta)), color="red")
    show(Z_set_as_graphics + S + north_pole + point_of_projection)
edit retag flag offensive close merge delete

Comments

1

I just tried this, and don't get this behavior... maybe because you posted the version of the code without the polygon?

kcrisman gravatar imagekcrisman ( 2012-07-24 14:14:57 +0200 )edit

sorry! here's the code:

glee2 gravatar imageglee2 ( 2012-07-24 14:25:07 +0200 )edit

Z = Polyhedron([[2,3,3],[3,0,3],[2,6,1],[1,0,1],[6,7,2]]) Z_set_as_graphics = Z.show() S = sphere(size=10,color="yellow",opacity=0.5) north_pole = point3d((0,0,10), color="blue") r = 10 @interact def _(theta = slider(0,2*pi,pi/20, default = pi/3, label="theta"), phi = slider(0,2*pi,pi/20, default = pi/4, label="phi")): point_of_projection = point3d((r*sin(theta)*cos(phi),r*sin(theta)*sin(phi),r*cos(theta)), color="red") show(Z_set_as_graphics + S + north_pole + point_of_projection)

glee2 gravatar imageglee2 ( 2012-07-24 14:25:13 +0200 )edit

Ok, I pasted that above for clarity.

kcrisman gravatar imagekcrisman ( 2012-07-24 14:54:40 +0200 )edit

I see it now. Like sunspots...

kcrisman gravatar imagekcrisman ( 2012-07-24 14:56:18 +0200 )edit

2 Answers

Sort by ยป oldest newest most voted
0

answered 2012-07-24 15:09:54 +0200

kcrisman gravatar image

Okay, what I think is going on here is that Polyhedron doesn't really play nice with other graphics methods. It's probably pretty old (for Sage) code that stems from a time before we had lots of nice 3d options - maybe?

So in particular, the way it renders vertices is also via point3d

return point3d(self.coordinates_of(self.points), **kwds)

so my somewhat educated guess is that since you are adding things to Z_set_as_graphics (itself a hack you shouldn't have to do, but that's another story), and since you defined that outside the interact, it is adding those points to itself. So the following works.

S = sphere(size=10,color="yellow",opacity=0.5) 
north_pole = point3d((0,0,10), color="blue") 
r = 10 
@interact 
def _(theta = slider(0,2*pi,pi/20, default = pi/3, label="theta"), phi = slider(0,2*pi,pi/20, default = pi/4, label="phi")): 
    point_of_projection = point3d((r*sin(theta)*cos(phi),r*sin(theta)*sin(phi),r*cos(theta)), color="red")
    Z = Polyhedron([[2,3,3],[3,0,3],[2,6,1],[1,0,1],[6,7,2]]) 
    Z_set_as_graphics = Z.plot() 
    show(Z_set_as_graphics + S + north_pole + point_of_projection)

Note that you could make many of the other things interactive too, and could probably even get the outputs to the sliders to LaTeX up nicely...

edit flag offensive delete link more

Comments

kcrisman gravatar imagekcrisman ( 2012-07-24 15:16:39 +0200 )edit

My guess is that this is just a manifestation of this bug: http://trac.sagemath.org/sage_trac/ticket/9089

Jason Grout gravatar imageJason Grout ( 2012-07-30 11:51:30 +0200 )edit
0

answered 2012-07-30 11:52:34 +0200

Jason Grout gravatar image

My guess is that this is just a manifestation of this bug: http://trac.sagemath.org/sage_trac/ti...

edit flag offensive delete link more

Comments

Probably right.

kcrisman gravatar imagekcrisman ( 2012-07-30 15:02:52 +0200 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 2012-07-24 14:04:56 +0200

Seen: 580 times

Last updated: Jul 30 '12