# Get a 3d plot with points (no surface) from a parametric_plot3d? I would like to plot only points in a defined resolution, which I get from a parametric_plot3d().

Here is my Sage code:

var('u,v')
a(u,v)=-7*sin(((u-100)/(100))*pi)^2+0.2*sin(((3*u-300)/(10))*pi)
b(u,v)=-8*cos(((u-100)/(100))*pi)+0.2*cos(((3*u-300)/(10))*pi)
c(u,v)=-12*cos(((u-100)/(100))*pi)+15*sin(((v-20)/(40))*pi)
def x(u,v):
if u < 100:
return 7*sin((u/100)*pi)^2+0.15*sin((3*u/10)*pi)
else:
return a(u,v)
def y(u,v):
if u < 100:
return 8*cos((u/100)*pi)+0.15*cos((3*u/10)*pi)
else:
return b(u,v)
def z(u,v):
if u < 100:
return 12*cos((u/100)*pi)+15*sin(((v-20)/40)*pi)
else:
return c(u,v)
p = parametric_plot3d([x,y,z], (u, 0, 200), (v, 0, 40), frame=False)


I'm looking for a result, which is similar to: So I don't need a real surface, only the points.

How can I achieve this?

edit retag close merge delete

Sort by » oldest newest most voted

You can use the points function to do so. The only difference is that you will have to sample the function yourself. Here I am sampling it at [40, 40] points which is the default for parametric plot.

sage: pointlist = [(x(u,v), y(u,v), z(u,v)) for u in xrange(0, 200, 5) for v in xrange(40)]
sage: points(pointlist)

more