0
|
4402 Views
|
2 Replies
|
0 Total Likes
View groups...
Share
GROUPS:

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

Posted 10 years ago
 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
Sort By:
Posted 10 years ago
 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] ] 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] the boundary discretized region is a good candidate to work with in RevolutionPlo3D.
Posted 10 years ago
 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Ă this approach is rather generic because of the usage of mesh algorithms.