Message Boards Message Boards

0
|
4213 Views
|
2 Replies
|
0 Total Likes
View groups...
Share
Share this post:
GROUPS:

Solid plot with different transversal section. (Triangles, Square, Etc)

It´s possible to make a solid plot with different transversal section ?

For example, if we have to make a solid of revolution we just take the command "RevolutionPlot3D". But what happen when you need to plot a different solid with different transversal sections like triangles, square, ellipses, Etc.

It is capable mathematica to plot a solid whose characteristics are the following : The solid formed by a deformable circle whose center moves around the periphery of an ellipse. The radius of the circle measures the distance between the point (x,0) and (x,y), where "y" is defined as: y=(b / a) Sqrt(a^2 - x^2) (Ellipse)

Another example: The solid with circular base whose cross sections perpendicular to the diameter of the circle are square . The side of the square is defined as parallel to the diameter of the rope circumference. ( The side of the square is variable) .

So, If Mathematica is able to plot such solids. What kind of command should I use to draw it. Right now i´m using Wólfram Mathematica 10.

2 Replies

It is capable mathematica to plot a solid whose characteristics are the following : The solid formed by a deformable circle whose center moves around the periphery of an ellipse. The radius of the circle measures the distance between the point (x,0) and (x,y), where "y" is defined as: y=(b / a) Sqrt(a^2 - x^2) (Ellipse)

First look at it in 2D

With[{a = Pi, b = 1},
 Graphics[{
    {Blue, Table[Circle[{x, b/a Sqrt[a^2 - x^2]}, b Sqrt[1 + x^2/b^2 - x^2/a^2]], {x, -a, a, a/17}]}, 
    {Red, Thick,Circle[{0, 0}, {a, b}]}, 
    {Green, Table[Circle[{x, -b/a Sqrt[a^2 - x^2]}, b Sqrt[1 + x^2/b^2 - x^2/a^2]], {x, -a, a, a/17}]}}, 
  Frame -> True]
 ]

bakker1

then produce the solid of revolution. Because analytical calculations can become cumbersome often an visual equivalent procedure is the following: get the contour in 2D of the points depicted and use an interpolating function on it to get the input necessary to run RevolutionPlot3D. To do so one switches from Circle to Disk

R = With[{a = 2 \[Pi], b = 1},
   BooleanRegion[Or, 
    Join[Table[Disk[{x, b/a Sqrt[a^2 - x^2]}, b Sqrt[1 + x^2/b^2 - x^2/a^2]], {x, -a, a, a/17}], 
           Table[Disk[{x, -b/a Sqrt[a^2 - x^2]}, b Sqrt[1 + x^2/b^2 - x^2/a^2]], {x, -a, a, a/17}]
    ]
  ]
];

and discretizes it:

DiscretizeRegion[R]
BoundaryDiscretizeRegion[R]

discretized regions

the boundary discretized region is a good candidate to work with in RevolutionPlo3D.

POSTED BY: Udo Krause

To continue one uses straightforward

Clear[R]
R = With[{a = \[Pi], b = 1},
   BooleanRegion[Or, Join[
     Table[Disk[{x, b/a Sqrt[a^2 - x^2]}, b Sqrt[1 + x^2/b^2 - x^2/a^2]], {x, -a, a, a/17}], 
     Table[Disk[{x, -b/a Sqrt[a^2 - x^2]}, b Sqrt[1 + x^2/b^2 - x^2/a^2]], {x, -a, a, a/17}]]]];

bdr = BoundaryDiscretizeRegion[R];

Clear[g]
g = Interpolation[Select[MeshCoordinates[bdr], #[[2]] >= 0 &]];

to produce the wanted solids of revolution

RevolutionPlot3D[g[t], {t, -6.28, 6.28}, PerformanceGoal -> "Quality"]
RevolutionPlot3D[{g[t], t}, {t, -6.28, 6.28}, PerformanceGoal -> "Quality"]

et voilĂ 

revolution examples

this approach is rather generic because of the usage of mesh algorithms.

POSTED BY: Udo Krause
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract