1
$\begingroup$

I'm trying to draw two curves and a surface, where one of the curves is to appear on the surface. Unfortunately the curves are drawn with very few points and appear extremely unclear. Is there a way to make them clear thick lines instead?

Here's the code:

Manipulate[
 ParametricPlot3D[{{Cos[[Phi]] Cos[[Theta]], 
    Sin[[Phi]] Cos[[Theta]], 
    Sin[[Theta]]}, {b0x + 2 brx Cos[[Phi]] + 2 bix Sin[[Phi]], 
    b0y + 2 bry Cos[[Phi]] + 2 biy Sin[[Phi]], 
    b0z + 2 brz Cos[[Phi]] + 
     2 biz Sin[[Phi]]}, {(b0x + 2 brx Cos[[Phi]] + 
       2 bix Sin[[Phi]])/
     Norm[{b0x + 2 brx Cos[[Phi]] + 2 bix Sin[[Phi]], 
       b0y + 2 bry Cos[[Phi]] + 2 biy Sin[[Phi]], 
       b0z + 2 brz Cos[[Phi]] + 2 biz Sin[[Phi]]}], (b0y + 
       2 bry Cos[[Phi]] + 2 biy Sin[[Phi]])/
     Norm[{b0x + 2 brx Cos[[Phi]] + 2 bix Sin[[Phi]], 
       b0y + 2 bry Cos[[Phi]] + 2 biy Sin[[Phi]], 
       b0z + 2 brz Cos[[Phi]] + 2 biz Sin[[Phi]]}], (b0z + 
       2 brz Cos[[Phi]] + 2 biz Sin[[Phi]])/
     Norm[{b0x + 2 brx Cos[[Phi]] + 2 bix Sin[[Phi]], 
       b0y + 2 bry Cos[[Phi]] + 2 biy Sin[[Phi]], 
       b0z + 2 brz Cos[[Phi]] + 2 biz Sin[[Phi]]}]}}, {[Phi], 0, 
   2 [Pi]}, {[Theta], -[Pi], [Pi]}, PlotRange -> {-2, 2}, 
  Mesh -> None, PlotStyle -> Thick, 
  PlotStyle -> Opacity[0.6]], {{b0x, 0}, -5, 5}, {{b0y, 0}, -5, 
  5}, {{b0z, 1}, -5, 5}, {{brx, 1}, -5, 5}, {{bry, 0}, -5, 
  5}, {{brz, 0}, -5, 5}, {{bix, 0}, -5, 5}, {{biy, 1}, -5, 
  5}, {{biz, 0}, -5, 5}]

$\endgroup$
1
  • $\begingroup$ Not sure but you can try PlotStyle -> Thickness[0.06]? $\endgroup$ Mar 22, 2015 at 0:09

1 Answer 1

4
$\begingroup$

You can use the option PlotStyle to style each of the three parts separately:

PlotStyle -> {Opacity[.6], EdgeForm[{Opacity[1], Thick, Blue}], 
  EdgeForm[{Opacity[1], Thick, Red}]}

Since the three-argument form of ParametricPlot3D produces polygons (i.e., those lines are not Lines!), you need to set the styles using EdgeForm.

We get a much cleaner picture using the two-argument form of ParametricPlot3D for curves and the three-argument form for surfaces and combine the two with Show:

Manipulate[Show[ParametricPlot3D[{
{b0x + 2 brx Cos[ϕ] + 2 bix Sin[ϕ],  b0y + 2 bry Cos[ϕ] + 2 biy Sin[ϕ], 
   b0z + 2 brz Cos[ϕ] + 2 biz Sin[ϕ]}, 
{(b0x + 2 brx Cos[ϕ] + 2 bix Sin[ϕ])/
    Norm[{b0x + 2 brx Cos[ϕ] + 2 bix Sin[ϕ], b0y + 2 bry Cos[ϕ] + 2 biy Sin[ϕ], 
  b0z + 2 brz Cos[ϕ] + 2 biz Sin[ϕ]}], 
 (b0y + 2 bry Cos[ϕ] + 2 biy Sin[ϕ])/
   Norm[{b0x + 2 brx Cos[ϕ] + 2 bix Sin[ϕ], b0y + 2 bry Cos[ϕ] + 2 biy Sin[ϕ], 
  b0z + 2 brz Cos[ϕ] + 2 biz Sin[ϕ]}], 
 (b0z + 2 brz Cos[ϕ] + 2 biz Sin[ϕ])/
   Norm[{b0x + 2 brx Cos[ϕ] + 2 bix Sin[ϕ], b0y + 2 bry Cos[ϕ] + 2 biy Sin[ϕ], 
  b0z + 2 brz Cos[ϕ] + 2 biz Sin[ϕ]}]}},
  {ϕ, 0, 2 π}, PlotRange -> {-2, 2}, BoxRatios -> 1, 
  PlotStyle -> {Directive[Thickness[.01], Blue], Directive[Thickness[.01], Red]}], 
ParametricPlot3D[{Cos[ϕ] Cos[θ], Sin[ϕ] Cos[θ], Sin[θ]},
  {ϕ, 0, 2 π}, {θ, -π, π}, 
  PlotRange -> {-2, 2}, Mesh -> None, PlotStyle -> Opacity[0.3]]],
{{b0x, 0}, -5, 5}, {{b0y, 0}, -5, 5}, {{b0z, 1}, -5, 5}, 
{{brx, 1}, -5, 5}, {{bry, 0}, -5, 5}, {{brz, 0}, -5, 5},
{{bix, 0}, -5, 5}, {{biy, 1}, -5, 5}, {{biz, 0}, -5, 5}]

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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