OffsetSurfaceSphere::usage="An Offset surface, is a smooth surface (without edges, peaks, or singular points, where each point has a tangent plane. Examples: Spheres, ellipsoids, toroids, cylinders and planes)​, it is defined as follows:​
σ
d
​[u, v] = σ[u, v] ± d n[u, v]​ σ[u, v] it is a smooth surface, d = distance, n[u, v] it is the normal unitary vector to the surface σ[u, v]. In this notebook we will obtain the offset surface of the sphere: {3 Cos[u]Cos[v]​,3 Sin[u]Cos[v]​,3 Sin[v]​} with d = 2.​ References: Peternell, M. et al. Offsets, Conchoids and Pedal Surfaces​; Personal. ";
Development:
In[]:=
σ[u_,v_]:={3Cos[u]Cos[v],3Sin[u]Cos[v],3Sin[v]};​​
σ
u
[u_,v_]=D[σ[u,v],u];​​
σ
v
[u_,v_]=D[σ[u,v],v];​​d=2;n[u_,v_]:=
σ
u
[u,v]
σ
v
[u,v]
Norm[
σ
u
[u,v]
σ
v
[u,v]]
;​​σ[u,v]+dn[u,v]//FullSimplify​​σ[u,v]-dn[u,v]//FullSimplify​​​​
Cos[u]Cos[v]3+
2Cos[v]
2
Abs[Cos[u]
2
Cos[v]
]
+
2
Abs[
2
Cos[v]
Sin[u]]
+
2
Abs[Cos[v]Sin[v]]
,Cos[v]3+
2Cos[v]
2
Abs[Cos[u]
2
Cos[v]
]
+
2
Abs[
2
Cos[v]
Sin[u]]
+
2
Abs[Cos[v]Sin[v]]
Sin[u],3+
2Cos[v]
2
Abs[Cos[u]
2
Cos[v]
]
+
2
Abs[
2
Cos[v]
Sin[u]]
+
2
Abs[Cos[v]Sin[v]]
Sin[v];
Cos[u]Cos[v]3-
2Cos[v]
2
Abs[Cos[u]
2
Cos[v]
]
+
2
Abs[
2
Cos[v]
Sin[u]]
+
2
Abs[Cos[v]Sin[v]]
,Cos[v]3-
2Cos[v]
2
Abs[Cos[u]
2
Cos[v]
]
+
2
Abs[
2
Cos[v]
Sin[u]]
+
2
Abs[Cos[v]Sin[v]]
Sin[u],3-
2Cos[v]
2
Abs[Cos[u]
2
Cos[v]
]
+
2
Abs[
2
Cos[v]
Sin[u]]
+
2
Abs[Cos[v]Sin[v]]
Sin[v];
Animation:
In[]:=
SwatchLegend[{Orange,Blue,Yellow},{"Positive Offset surface","Negative Offset surface","Base surface"}]​​Manipulateσ[u_,v_]:={3Cos[u]Cos[v],3Sin[u]Cos[v],3Sin[v]};​​
σ
dp
[u_,v_]:=Cos[u]Cos[v]3+
2Cos[v]
2
Abs[Cos[u]
2
Cos[v]
]
+
2
Abs[
2
Cos[v]
Sin[u]]
+
2
Abs[Cos[v]Sin[v]]
,Cos[v]3+
2Cos[v]
2
Abs[Cos[u]
2
Cos[v]
]
+
2
Abs[
2
Cos[v]
Sin[u]]
+
2
Abs[Cos[v]Sin[v]]
Sin[u],3+
2Cos[v]
2
Abs[Cos[u]
2
Cos[v]
]
+
2
Abs[
2
Cos[v]
Sin[u]]
+
2
Abs[Cos[v]Sin[v]]
Sin[v];
σ
dn
[u_,v_]:=Cos[u]Cos[v]3-
2Cos[v]
2
Abs[Cos[u]
2
Cos[v]
]
+
2
Abs[
2
Cos[v]
Sin[u]]
+
2
Abs[Cos[v]Sin[v]]
,Cos[v]3-
2Cos[v]
2
Abs[Cos[u]
2
Cos[v]
]
+
2
Abs[
2
Cos[v]
Sin[u]]
+
2
Abs[Cos[v]Sin[v]]
Sin[u],3-
2Cos[v]
2
Abs[Cos[u]
2
Cos[v]
]
+
2
Abs[
2
Cos[v]
Sin[u]]
+
2
Abs[Cos[v]Sin[v]]
Sin[v];​​Show[ParametricPlot3D[σ[u,v],{u,0,π},{v,0,2π},PerformanceGoal"Quality",MeshStyleDirective[AbsoluteThickness[0.5],Opacity[0.2]],PlotStyle{Opacity[0.4],Yellow},Mesh->False,PlotPoints60],​​ParametricPlot3D[
σ
dp
[u,v],{u,0,k1},{v,0,2π},PerformanceGoal"Quality",MeshStyleDirective[AbsoluteThickness[0.5],Opacity[0.4]],PlotStyle{Opacity[0.2],Orange},PlotPoints60],​​​​ParametricPlot3D[
σ
dn
[u,v],{u,0,k1},{v,0,2π},PerformanceGoal"Quality",MeshStyleDirective[AbsoluteThickness[0.5],Opacity[0.4]],PlotStyle{Opacity[0.2],Blue},PlotPoints60],AxesLabel->(Style[#,15,Blue]&/@{"X","Y","Z"}),AxesOrigin{0,0,0},AxesTrue,BoxedFalse,ViewPoint{1.3,-2.4,2.},PlotLabelStyle[Framed["Offset surfaces"],16,Blue,BackgroundYellow],PlotRange{{-7,7},{-7,7},{-5,5}},ImageSize700​​],{k1,0.00001,π,0.00001},SaveDefinitionsTrue,ControlPlacementTop
Out[]=
Positive Offset surface
Negative Offset surface
Base surface
Out[]=
​
k1
Explanation :
Cutting the surface:
2
x
+
2
y
+
2
z
==9;
with the plane y = 0, results:
2
x
+
2
z
==9;
In[]:=
SwatchLegend[{Orange,Blue,DarkYellow,Black},{"Positive Offset","Negative Offset","Original function","Generatrix line"}]​​Manipulateζ[t_]:={3Cos[t],0,3Sin[t]};d=2;N1[t_]:=
(ζ'[t]ζ''[t])ζ'[t]
Norm[ζ'[t]ζ''[t]]Norm[ζ'[t]]
;​​​​
ζ
+
[t_]:=ζ[t]+dN1[t];​​
ζ
-
[t_]:=ζ[t]-dN1[t];;​​Show[{ParametricPlot3D[
ζ
+
[t],{t,0,t1},PlotStyle{Orange,Thick},PerformanceGoal->"Quality",PlotPoints60],ParametricPlot3D[
ζ
-
[t],{t,0,t1},PlotStyle{Blue,Thick},PerformanceGoal->"Quality",PlotPoints60],ParametricPlot3D[ζ[t],{t,0,2π},PlotStyle{DarkYellow,Thick}],Graphics3D[{Orange,Ball[
ζ
+
[t1],0.1]}],Graphics3D[{Blue,Ball[
ζ
-
[t1],0.1]}],Graphics3D[{Black,Thick,Line[{
ζ
-
[t1],ζ[t1],
ζ
+
[t1]}]}],Graphics3D[{DarkYellow,Ball[ζ[t1],0.1]}]},AxesTrue,AxesLabel->(Style[#,15,Blue]&/@{"X","Y","Z"}),BoxedFalse,AxesOrigin{0,0,0},BoxRatiosAutomatic,ImageSize700,PlotRange{{-6,6},{-6,6},{-5,5}},ViewPoint{1.3,-2.4,2.},PlotLabelStyle[Framed["Offset curves"],16,Blue,BackgroundYellow]],{{t1,0.00002,"Value (t1)"},0.00001,2π,0.00001},ControlPlacement->Top​​