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

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.

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...

$\alpha(t) = {Cos(t), 2Sin(t)}$
$\alpha'(t) = {-Sin(t), 2Cos(t)}$
$\alpha''(t) = {-Cos(t), -2Sin(t)}$

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

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]

Related Calculus and Beyond Homework Help News on Phys.org
Dick
Homework Helper
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:
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];

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]

Dick
Homework Helper
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.

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?

Dick