Message Boards Message Boards

Scaling 3D Parametric Plots in Mathematica for Export

Posted 10 years ago

http://community.wolfram.com/groups/-/m/t/399511?p_p_auth=k9gxD9b2

Ok so in this last discussion, I was trying to figure out the size of graphics in mathematica to compare it to what I was getting in Makerbot. The conclusion was that Makerbot was indeed messing with the size of the seashells as well as the ratio between axes. So we tried to fix the problem by manipulating size in makerbot to restore the same ratio that was present in Mathematica. Unfortunately, it simply would not work at the desired magnification. Every time I changed one axis, the others would get changed. The only way to manipulate the axes separately was at the original size, but trying to scale it up to the desired size would once again mess up the ratio. So at this point, we're looking at scaling the seashells while still in Mathematica and then comparing the size in mathematica to what makerbot spits out. If the changes are minimal, we'll stick with them. Unfortunately, the ratios get extremely distorted when we scale up in Makerbot. Here's the code again:

a = 1.06 
b = 6 
c = 1.5 
d = 1
e = 1.2
tr = 0
tmax = 50
ParametricPlot3D[a^ t {
   Cos[t] (1 + c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]])),
   Sin[t] (1 + c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]])),
   b + c (Cos[\[Theta]] Sin[e] - d Cos[e] Sin[\[Theta]])},
 {\[Theta], -Pi, Pi}, {t, -tmax, 0},
 PlotStyle -> 
  Directive[Opacity[1 - 0], Lighter[Yellow, .3], 
   Specularity[White, 10], Thickness[.1]], Axes -> True, 
 ViewPoint -> {1, 1, -3}, Boxed -> True, PlotRange -> All, 
 ImageSize -> {400, 450}, Mesh -> None, PlotPoints -> 400, 
 MaxRecursion -> ControlActive[0, Automatic]]

So an optimal size is 25-37.5x the generated size. Is there any way to scale the seashells up by that much and then export as STL to be printed in Makerbot?

POSTED BY: Shinji Ishida
3 Replies
Posted 10 years ago

Mission Successful

So I need to still mess with the scaling factor, but it definitely works!

POSTED BY: Shinji Ishida
Posted 10 years ago

You've done it again, Jim! I'm almost positive that this will do the trick. Thank a bunch! I'm testing it out as we speak

POSTED BY: Shinji Ishida
Posted 10 years ago

If I understand correctly, then just multiplying by the desired scaling factor should work:

a = 1.06
b = 6
c = 1.5
d = 1
e = 1.2
tr = 0
tmax = 50
(* Scaling factor *)
scalingFactor = 30
ParametricPlot3D[
 scalingFactor a^
   t {Cos[t] (1 + c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]])), 
   Sin[t] (1 + c (Cos[e] Cos[\[Theta]] + d Sin[e] Sin[\[Theta]])), 
   b + c (Cos[\[Theta]] Sin[e] - 
       d Cos[e] Sin[\[Theta]])}, {\[Theta], -Pi, Pi}, {t, -tmax, 0}, 
 PlotStyle -> 
  Directive[Opacity[1 - 0], Lighter[Yellow, .3], 
   Specularity[White, 10], Thickness[.1]], Axes -> True, 
 ViewPoint -> {1, 1, -3}, Boxed -> True, PlotRange -> All, 
 ImageSize -> {400, 450}, Mesh -> None, PlotPoints -> 400, 
 MaxRecursion -> ControlActive[0, Automatic]]

And this reference seems very related: http://community.wolfram.com/groups/-/m/t/139463

POSTED BY: Jim Baldwin
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