Skip to main content
replaced http://mathematica.stackexchange.com/ with https://mathematica.stackexchange.com/
Source Link

As noted in this threadthis thread, it's often more convenient to manipulate B-splines instead of lines.

Thus, using the B-spline representation derived by Piegl and Tiller in this article, we have the following routine:

greatCircle[φ_, θ_, r_: 1] := BSplineCurve[ Composition[RotationTransform[θ, {0, 0, 1}], RotationTransform[-φ, {0, 1, 0}]] /@ (r {{1, 0, 0}, {1, 1, 0}, {-1, 1, 0}, {-1, 0, 0}, {-1, -1, 0}, {1, -1, 0}, {1, 0, 0}}), SplineDegree -> 2, SplineKnots -> {0, 0, 0, 1/4, 1/2, 1/2, 3/4, 1, 1, 1}, SplineWeights -> {1, 1/2, 1/2, 1, 1/2, 1/2, 1}] 

Try it out:

With[{ε = 1*^-3 (* shrinks sphere slightly *), φ = 30° (* inclination *)}, Graphics3D[{{Opacity[2/5, Blue], Sphere[{0, 0, 0}, 1 - ε]}, {Directive[AbsoluteThickness[3], Red], greatCircle[φ, 0]}}, Lighting -> "Neutral"]] 

sphere and great circle

Spin things around a bit:

With[{ε = 10^-3, φ = 30°}, Animate[Graphics3D[{{Opacity[2/5, Blue], Sphere[{0, 0, 0}, 1 - ε]}, {Directive[AbsoluteThickness[3], Red], greatCircle[φ, θ]}}, Lighting -> "Neutral", SphericalRegion -> True], {θ, 0, 360°, 15°}]] 

rotating sphere and great circle

Adding the fancy stuff (e.g. arrows and planes) is left to you as an exercise.

As noted in this thread, it's often more convenient to manipulate B-splines instead of lines.

Thus, using the B-spline representation derived by Piegl and Tiller in this article, we have the following routine:

greatCircle[φ_, θ_, r_: 1] := BSplineCurve[ Composition[RotationTransform[θ, {0, 0, 1}], RotationTransform[-φ, {0, 1, 0}]] /@ (r {{1, 0, 0}, {1, 1, 0}, {-1, 1, 0}, {-1, 0, 0}, {-1, -1, 0}, {1, -1, 0}, {1, 0, 0}}), SplineDegree -> 2, SplineKnots -> {0, 0, 0, 1/4, 1/2, 1/2, 3/4, 1, 1, 1}, SplineWeights -> {1, 1/2, 1/2, 1, 1/2, 1/2, 1}] 

Try it out:

With[{ε = 1*^-3 (* shrinks sphere slightly *), φ = 30° (* inclination *)}, Graphics3D[{{Opacity[2/5, Blue], Sphere[{0, 0, 0}, 1 - ε]}, {Directive[AbsoluteThickness[3], Red], greatCircle[φ, 0]}}, Lighting -> "Neutral"]] 

sphere and great circle

Spin things around a bit:

With[{ε = 10^-3, φ = 30°}, Animate[Graphics3D[{{Opacity[2/5, Blue], Sphere[{0, 0, 0}, 1 - ε]}, {Directive[AbsoluteThickness[3], Red], greatCircle[φ, θ]}}, Lighting -> "Neutral", SphericalRegion -> True], {θ, 0, 360°, 15°}]] 

rotating sphere and great circle

Adding the fancy stuff (e.g. arrows and planes) is left to you as an exercise.

As noted in this thread, it's often more convenient to manipulate B-splines instead of lines.

Thus, using the B-spline representation derived by Piegl and Tiller in this article, we have the following routine:

greatCircle[φ_, θ_, r_: 1] := BSplineCurve[ Composition[RotationTransform[θ, {0, 0, 1}], RotationTransform[-φ, {0, 1, 0}]] /@ (r {{1, 0, 0}, {1, 1, 0}, {-1, 1, 0}, {-1, 0, 0}, {-1, -1, 0}, {1, -1, 0}, {1, 0, 0}}), SplineDegree -> 2, SplineKnots -> {0, 0, 0, 1/4, 1/2, 1/2, 3/4, 1, 1, 1}, SplineWeights -> {1, 1/2, 1/2, 1, 1/2, 1/2, 1}] 

Try it out:

With[{ε = 1*^-3 (* shrinks sphere slightly *), φ = 30° (* inclination *)}, Graphics3D[{{Opacity[2/5, Blue], Sphere[{0, 0, 0}, 1 - ε]}, {Directive[AbsoluteThickness[3], Red], greatCircle[φ, 0]}}, Lighting -> "Neutral"]] 

sphere and great circle

Spin things around a bit:

With[{ε = 10^-3, φ = 30°}, Animate[Graphics3D[{{Opacity[2/5, Blue], Sphere[{0, 0, 0}, 1 - ε]}, {Directive[AbsoluteThickness[3], Red], greatCircle[φ, θ]}}, Lighting -> "Neutral", SphericalRegion -> True], {θ, 0, 360°, 15°}]] 

rotating sphere and great circle

Adding the fancy stuff (e.g. arrows and planes) is left to you as an exercise.

Source Link
user5844
user5844

As noted in this thread, it's often more convenient to manipulate B-splines instead of lines.

Thus, using the B-spline representation derived by Piegl and Tiller in this article, we have the following routine:

greatCircle[φ_, θ_, r_: 1] := BSplineCurve[ Composition[RotationTransform[θ, {0, 0, 1}], RotationTransform[-φ, {0, 1, 0}]] /@ (r {{1, 0, 0}, {1, 1, 0}, {-1, 1, 0}, {-1, 0, 0}, {-1, -1, 0}, {1, -1, 0}, {1, 0, 0}}), SplineDegree -> 2, SplineKnots -> {0, 0, 0, 1/4, 1/2, 1/2, 3/4, 1, 1, 1}, SplineWeights -> {1, 1/2, 1/2, 1, 1/2, 1/2, 1}] 

Try it out:

With[{ε = 1*^-3 (* shrinks sphere slightly *), φ = 30° (* inclination *)}, Graphics3D[{{Opacity[2/5, Blue], Sphere[{0, 0, 0}, 1 - ε]}, {Directive[AbsoluteThickness[3], Red], greatCircle[φ, 0]}}, Lighting -> "Neutral"]] 

sphere and great circle

Spin things around a bit:

With[{ε = 10^-3, φ = 30°}, Animate[Graphics3D[{{Opacity[2/5, Blue], Sphere[{0, 0, 0}, 1 - ε]}, {Directive[AbsoluteThickness[3], Red], greatCircle[φ, θ]}}, Lighting -> "Neutral", SphericalRegion -> True], {θ, 0, 360°, 15°}]] 

rotating sphere and great circle

Adding the fancy stuff (e.g. arrows and planes) is left to you as an exercise.