banner



How To Draw A Backwards Cap

Here is something I have used earlier to make plots of polarization states in vector fields. It does geometric transformations on a basic shape similar to what Cylinder produces:

          pacman[{θ1_, θ2_}, scale_, thickness_, capStyle_,    wedgeStyle_] := {{capStyle,     RevolutionPlot3D[      thickness, {t, 0, scale}, {θ, θ1, θ2},       Mesh -> False][[i]],    RevolutionPlot3D[-thickness, {t, 0,        calibration}, {θ, θ1, θ2}, Mesh -> Simulated][[one]]},   RevolutionPlot3D[{scale, t}, {t, -thickness,       thickness}, {θ, θ1, θ2}, Mesh -> Simulated][[one]],   {wedgeStyle,     Polygon[{{0, 0, -thickness}, {calibration Cos[θ1],        scale Sin[θ1], -thickness}, {scale Cos[θ1],        scale Sin[θ1], thickness}, {0, 0,        thickness}, {scale Cos[θ2], scale Sin[θ2],        thickness}, {scale Cos[θ2],        scale Sin[θ2], -thickness}}]}}  ellipse3D[abrList_, wedgeList_: {{0, 2 π}}, scale_: .1,    thickness_: .01, capStyle_: {}, wedgeStyle_: {}] :=  {EdgeForm[],   MapThread[GeometricTransformation[{       pacman[#ii, calibration, thickness, capStyle, wedgeStyle]       },      AffineTransform[{        Transpose[         Append[Most[#], Normalize[Cross @@ Most[#]]]], Last[#]}       ]] &,    {abrList, PadRight[wedgeList, Length[abrList], {Last[wedgeList]}]}]}                  

Edit

In the to a higher place lawmaking, I added the ability to draw a filled "arc" of an ellipse, more than normally known equally a squished Pacman. The examples beneath stay the same if you don't specify a pair of angles for the wedge in the ellipse. I'll add an instance with a wedge opening below.

          Graphics3D[{   Carmine,   ellipse3D[{     {      (* Axes a, b, position r: *)      {one, 0, 0}, {0, .5, 0}, {0, 0, 0}      }     }    ]   }]                  

ellipse3d

The office ellipse3D takes a listing of points as its argument, so that I can plot more than a single ellipse at a time. Each element of the listing consists of a three entries:

          {a, b, r}                  

where a and b are three-dimensional vectors pointing in the management of the semi-major and semi-small axes. Their length determines the eccentricity of the ellipse. If a and b aren't perpendicular to each other, you can also produce a skewed ellipse. The third vector r is the position at which the ellipse is centered.

The optional arguments scale and thickness make up one's mind the overall size of the object. The lengths given by a and b are multiplied by calibration before plotting, and the z acme of the cylinder which represents the ellipse in 3D is given by thickness.

Here is some other instance that shows how to employ it with a list of ellipses:

          Graphics3D[{   Magenta,   ellipse3D[{     {      (* First ellipse; axes a, b,       position r: *)      {1/Sqrt[2], 1/Sqrt[2], 0}, {0, .5, 0}, {0, 0,        0}      },     {      (* 2nd ellipse; axes a, b,       position r: *)      {.5, 1, .5}, {.25, .25, .v}, {1, ane, i}      },     {      (* Tertiary ellipse; axes a, b,       position r: *)      {-.5, .1, 1/Sqrt[2]}, {0, .five, 0}, {0, ane,        0.5}      },     {      (* Circle: *)      {1, 0, 1}, {0, i, 0}, {.5, 1, 0}      }     }]   }, ViewPoint -> Elevation]                  

more ellipses

Hither is an ellipse with a wedge:

          Graphics3D[{   Red,   ellipse3D[{     {      (* Axes a, b, position r: *)      {one, 0, 0}, {0, .five, 0}, {0, 0, 0}      }     }    , {{0, five}}    ]   }]                  

wedge

The second statement (wedgeList) of ellipse3D at present was specified as a list of bending pairs - one for each ellipse to exist drawn. If in that location is only a single chemical element, all subsequent ellipses specified by the get-go argument (abrList) are fatigued with the aforementioned angle spans.

Edit 2

In order to also exist able to draw open up ellipse arcs I added 2 further arguments to the part, specifying the manner in which the unlike faces of the ellipse are rendered. For the acme and bottom faces, the style is in the variable capStyle (with the default value capStyle = {} cap style is taken from the enclosing graphics). The sides of the wedge tin be styled with the terminal argument, wedgeStyle. To suppress any of these, apply FaceForm[].

For example, here is a hollow pacman:

          Graphics3D[{   Reddish,   ellipse3D[{     {      (* Axes a, b, position r: *)      {1, 0, 0}, {0, .five, 0}, {0, 0, 0}      }     }    , {{0, five}}, .1, .01, FaceForm[], Directive[Opacity[.5], Blue]    ]   }]                  

hollowpacman

As an awarding example, I'll just evidence a more complicated plot fabricated with this kind of function. It requires also many additional definitions to put into this answer, but you can get a improve impression of how 3D ellipses tin exist really useful:

sphericalHarmonic

Source: https://mathematica.stackexchange.com/questions/6526/how-to-draw-an-ellipse-arc-in-3d

Posted by: aldrichfater1942.blogspot.com

0 Response to "How To Draw A Backwards Cap"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel