Truly Bizarre - The unit tangent and unit normal vectors aren't orthogonal

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
5 replies · 3K views
jdinatale
Messages
153
Reaction score
0
OK, this looks like a differential geometry problem, which it is, but at the end of the day I am trying to figure out why the unit normal and unit tangent vectors to a curve aren't orthogonal, so even if you don't know about DG, please respond.

Joseph-2.png


Obviously the two choices for E_1 and E_2 are the unit normal and unit tangent vectors to the curve.

Using Mathematica...

alpha[t_] := {Cos[t], 2 Sin[t]};

alphaprime[t_] := {-Sin[t], 2 Cos[t]};

alphaprimeprime[t_] := {-Cos[t], -2 Sin[t]};

unittangentvector[t_] := alphaprime[t] / Norm[alphaprime[t]];

unitnormalvector[t_] := alphaprimeprime[t] / Norm[alphaprimeprime[t]];

Or by hand...


[itex]\alpha(t) = {Cos(t), 2Sin(t)}[/itex]
[itex]\alpha'(t) = {-Sin(t), 2Cos(t)}[/itex]
[itex]\alpha''(t) = {-Cos(t), -2Sin(t)}[/itex]

However, graphically, the unit tangent and unit normal vectors are far from perpendicular on this curve!

642.png


Here is my mathematica code

VFieldOnCurve2D[dominterval_, CurveEq_, FrameField_, CodomainBox_,
Size_] :=
Module[{a2, b2, Content, IS, DomainPieces, DomainPiece1,
DomainPiece2, CodomainCenter, CodomainWidth, len, EE1, EE2,
ImagePieces, ImagePiece0, ImagePiece1, ImagePiece2},
{a2, b2} = dominterval;
IS = 300;
Content = Mapping12Content[dominterval, CurveEq];
DomainPiece1 = Content[[1]];
DomainPiece2[t_] := Points2D[{{0, t}}, .3];
DomainPieces[t_] :=
Show[DomainPiece1, DomainPiece2[t], ImageSize -> IS/4];

{CodomainCenter, CodomainWidth} = CodomainBox;
len = Length[FrameField];
If[len == 2, EE1 = FrameField[[1]];
EE2 = FrameField[[2]], {EE1} = FrameField];

ImagePiece0 = EmptySpace2DXCenter[CodomainCenter, CodomainWidth];
ImagePiece1 = Content[[2]];
ImagePiece2[t_] :=
If[len == 2, {Vec[CurveEq[t], EE1[t]], Vec[CurveEq[t], EE2[t]]},
Vec[CurveEq[t], EE1[t]] ];
ImagePieces[t_] :=
Show[ImagePiece0, ImagePiece1, ImagePiece2[t], ImageSize -> Size];

t0 = (a2 + b2)/2;
Manipulate[
Row[{DomainPieces[t], ImagePieces[t]}], {{t, t0, "t"}, a2, b2},
SaveDefinitions -> True]


]



alpha[t_] := {Cos[t], 2 Sin[t]};

alphaprime[t_] := {-Sin[t], 2 Cos[t]};

alphaprimeprime[t_] := {-Cos[t], -2 Sin[t]};

unittangentvector[t_] := alphaprime[t] / Norm[alphaprime[t]];

unitnormalvector[t_] := alphaprimeprime[t] / Norm[alphaprimeprime[t]];

E1[t_] = unitnormalvector[t];
E2[t_] = unittangentvector[t];


DomainInterval = {0, 2 \[Pi]};
initvalue = 0;
CodomainBox = {Origin2D, 2};
Size = 400;
VFieldOnCurve2D[DomainInterval, alpha, {E1, E2}, CodomainBox, Size]
 
Physics news on Phys.org
The unit normal isn't alphaprimeprime[t] / Norm[alphaprimeprime[t]]. It's the derivative of the UNIT tangent vector divided by the norm of the derivative of the UNIT tangent vector. alphaprime isn't UNIT.
 
Last edited:
Dick said:
The unit normal isn't alphaprimeprime[t] / Norm[alphaprimeprime[t]]. It's the derivative of the UNIT tangent vector divided by the norm of the derivative of the UNIT tangent vector. alphaprime isn't UNIT.

Thanks, and that would seem to do the trick, but mathematica is hating me right now. Any ideas what's going on? Here is the newly defined unit normal vector

alpha[t_] := {Cos[t], 2 Sin[t]};

alphaprime[t_] := {-Sin[t], 2 Cos[t]};

alphaprimeprime[t_] := {-Cos[t], -2 Sin[t]};

unittangentvector[t_] := alphaprime[t] / Norm[alphaprime[t]];

unitnormalvector[t_] :=
unittangentvector'[t] / Norm[unittangentvector'[t] ];

E1[t_] = unitnormalvector[t];
E2[t_] = unittangentvector[t];


failure.png



Implementation

VFieldOnCurve2D[dominterval_, CurveEq_, FrameField_, CodomainBox_,
Size_] :=
Module[{a2, b2, Content, IS, DomainPieces, DomainPiece1,
DomainPiece2, CodomainCenter, CodomainWidth, len, EE1, EE2,
ImagePieces, ImagePiece0, ImagePiece1, ImagePiece2},
{a2, b2} = dominterval;
IS = 300;
Content = Mapping12Content[dominterval, CurveEq];
DomainPiece1 = Content[[1]];
DomainPiece2[t_] := Points2D[{{0, t}}, .3];
DomainPieces[t_] :=
Show[DomainPiece1, DomainPiece2[t], ImageSize -> IS/4];

{CodomainCenter, CodomainWidth} = CodomainBox;
len = Length[FrameField];
If[len == 2, EE1 = FrameField[[1]];
EE2 = FrameField[[2]], {EE1} = FrameField];

ImagePiece0 = EmptySpace2DXCenter[CodomainCenter, CodomainWidth];
ImagePiece1 = Content[[2]];
ImagePiece2[t_] :=
If[len == 2, {Vec[CurveEq[t], EE1[t]], Vec[CurveEq[t], EE2[t]]},
Vec[CurveEq[t], EE1[t]] ];
ImagePieces[t_] :=
Show[ImagePiece0, ImagePiece1, ImagePiece2[t], ImageSize -> Size];

t0 = (a2 + b2)/2;
Manipulate[
Row[{DomainPieces[t], ImagePieces[t]}], {{t, t0, "t"}, a2, b2},
SaveDefinitions -> True]


]



alpha[t_] := {Cos[t], 2 Sin[t]};

alphaprime[t_] := {-Sin[t], 2 Cos[t]};

alphaprimeprime[t_] := {-Cos[t], -2 Sin[t]};

unittangentvector[t_] := alphaprime[t] / Norm[alphaprime[t]];

unitnormalvector[t_] :=
unittangentvector'[t] / Norm[unittangentvector'[t] ];

E1[t_] = unitnormalvector[t];
E2[t_] = unittangentvector[t];


DomainInterval = {0, 2 \[Pi]};
initvalue = 0;
CodomainBox = {Origin2D, 2};
Size = 400;
VFieldOnCurve2D[DomainInterval, alpha, {E1, E2}, CodomainBox, Size]
 
Not really, sorry. It looks right. But I haven't done Mathematica since other people stopped paying for it for me. It's really expensive and unfree. So I can't test that in any detail.
 
Dick said:
Not really, sorry. It looks right. But I haven't done Mathematica since other people stopped paying for it for me. It's really expensive and unfree. So I can't test that in any detail.

Well, at least theoretically, would you agree that my choice of E1 and E2 provide a frame field on the curve?