First time here? Check out the FAQ!

Ask Your Question
0

3D graphics bug?

asked 12 years ago

anonymous user

Anonymous

updated 12 years ago

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)
Preview: (hide)

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 ( 12 years ago )

sorry! here's the code:

glee2 gravatar imageglee2 ( 12 years ago )

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 ( 12 years ago )

Ok, I pasted that above for clarity.

kcrisman gravatar imagekcrisman ( 12 years ago )

I see it now. Like sunspots...

kcrisman gravatar imagekcrisman ( 12 years ago )

2 Answers

Sort by » oldest newest most voted
0

answered 12 years ago

Jason Grout gravatar image

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

Preview: (hide)
link

Comments

Probably right.

kcrisman gravatar imagekcrisman ( 12 years ago )
0

answered 12 years ago

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...

Preview: (hide)
link

Comments

kcrisman gravatar imagekcrisman ( 12 years ago )

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 ( 12 years ago )

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: 12 years ago

Seen: 1,022 times

Last updated: Jul 30 '12