5
$\begingroup$

I want to make a 3d circular scale with 100 divisions (marked from 0 to 100) in it. I think it is possible by making divisions over the outer surface of a 3d cylinder. enter image description here

$\endgroup$
1
  • 3
    $\begingroup$ Do you mean to generate the tick marks from 0..99 in 3D in a cylindrical arrangement? You can use Table to create a list of Line primitives. If you don't know how to work with Graphics and Graphics3D, read this short tutorial. It's really easy: just construct a list of graphics primitives (like Line) and wrap them with Graphics3D. $\endgroup$
    – Szabolcs
    Aug 29 '17 at 16:27
15
$\begingroup$

You can get this effect by building the "label" for the cylinder using Graphics objects, and then "wrapping" it around a 3D parametric plot of a cylinder using Texture:

label = Graphics[
           Join[Table[Line[{{0, 99 - i}, {If[Mod[i, 10] == 0, 6, If[Mod[i, 5] == 0, 4, 3]], 99 - i}}], {i, 0, 99}], 
                Table[Text[ToString[i], {8, 99 - i}, {-1, 0}], {i, 0, 90, 10}]]]

enter image description here

ParametricPlot3D[{Cos[th], Sin[th], -z}, {z, 0, 1}, {th, 0, 2 Pi}, 
   PlotStyle -> Texture[label], Lighting -> "Neutral", Mesh -> None, ImageSize -> Large]

enter image description here

If it is desired that the cylinder have end-caps, this can be accomplished by combining this with other ParametricPlot3D or Graphics3D objects.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.