# Extract the generating curves from a Graphics3D returned from RevolutionPlot3D

I have a plot

g = RevolutionPlot3D[{Sin[t], t}, {t, 0, π}, {θ, -π, π + 3 π/4}];


Is it possible to extract the generatrices (generating curves) from g?

Sometimes, I want to concentrate on plotting the surface in different ways, and what I need is the all the generating curves. Can I obtain these curves from g?.

For example, this is what I need (the data could be plot by Line /@ curves and could be exported elsewhere).

curves = Table[RotationMatrix[θ, {0, 0, 1}]. {Sin[t], 0, t},
{θ, 0, 2π, .3}, {t, 0, π, .3}];


The example result, curves, is what I want, but I obtain that by re-think about generating method and {Sin[t], 0, t}. Seems defining g was a waste of time.

But in the plot of g, such lines/meshes are really shown by Mathematica, so I would like to extract them.

• Pardon me, but what is a "mother line" in this context? Jan 26 '14 at 8:28
• @xzczd okay, so what is a generatrix? The usual resources come up empty. Jan 26 '14 at 9:31
• @Mr.Wizard Well, I didn't expect it's so hard to find a detailed explanation for this word……Dictionaries (for example, this: thefreedictionary.com/generatrix) do include it though. This word can be found in the wiki page of cone. Jan 26 '14 at 9:51
• Imo OP wants to extract mesh, especially vertical part, which is {Sin[z],0,0} But the latter explanation about generating different surfaces is not clear to me.
– Kuba
Jan 26 '14 at 10:03
• @xzczd Ha! "Learning Chinese by induction" :) Jan 26 '14 at 10:25

You can see them with:

g2 = RevolutionPlot3D[{Sin[t], t}, {t, 0, π}, {θ, -π, π + 3 π/4},
PlotStyle -> None, Mesh -> {0, 10}, BoundaryStyle -> None] And since you want coordinates aswell, then:

Cases[ Normal@g2, _Line, \[Infinity]]

{Line[{<<185>>}], Line[{<<85>>}], Line[{<<85>>}], Line[{<<85>>}],
Line[{<<85>>}], Line[{<<73>>}], Line[{<<73>>}], Line[{<<73>>}],
Line[{<<73>>}], Line[{<<73>>}], <<1>>}

• nice! I think this is what I need, thanks. Jan 26 '14 at 10:19
• But I should check the order of the lines. Let me see. Jan 26 '14 at 10:21
• Cases[Normal@g2, _Line, \[Infinity]] do you know the sort method used in this result, I found one thing is that Cases[Normal@g2, _Line, \[Infinity]][] looks like two lines(joined). Jan 26 '14 at 10:24
• @SEuser2013 p.s it is boundary line so just add BoundaryStyle->None to g2.
– Kuba
Jan 26 '14 at 10:27
• well, Let's set mesh->{0,100}. can we let this rotate smoothly from [0,2Pi]· Manipulate[Graphics3D[Cases[Normal@g2,_Line,\[Infinity]][[x]],PlotRange->5],{x,1,100,1}] Jan 26 '14 at 10:49