(* Space Curves *)

(* Definition of Curve C *)

(* F[t_]:=r*Cos[a*t]; *)
(* G[t_]:=r*Sin[a*t]; *)       (* Helix *)
(* H[t_]:=a*b*t; *)

F[t_]:=Sqrt[1+t^2]/Sqrt[5]; 
G[t_]:=(2*t)/Sqrt[5]; 
H[t_]:=Log[t+Sqrt[1+t^2]]/Sqrt[5]; 

(* F[t_]:=a*(1+Cos[t]); *)
(* G[t_]:=a*Sin[t]; *)                  (* Viviani *)
(* H[t_]:=a*2*Sin[t/2]; *)


(* F[t_]:=; *)
(* G[t_]:=; *)
(* H[t_]:=; *)

(* Calculation of C' and C'' *)

Ft[t_]:=D[F[t],t];
Gt[t_]:=D[G[t],t];
Ht[t_]:=D[H[t],t];
Ftt[t_]:=D[Ft[t],t];
Gtt[t_]:=D[Gt[t],t];
Htt[t_]:=D[Ht[t],t];

(* ArcLength S[t]=1 ? *)

S[t_]:=Ft[t]^2+Gt[t]^2+Ht[t]^2;
(* FullSimplify[S[t],a^2*(b^2+r^2)==1] *)
FullSimplify[S[t]]

(* If "Yes" Execute Following Stage *)
(* Otherwise Skip to Next Stage *)

Tx[t_]:=Ft[t];
Ty[t_]:=Gt[t];
Tz[t_]:=Ht[t];
Txt[t_]:=Ftt[t];
Tyt[t_]:=Gtt[t];
Tzt[t_]:=Htt[t];
kappa[t_]:=Sqrt[Txt[t]^2+Tyt[t]^2+Tzt[t]^2];
Nx[t_]:=(1/kappa[t])*Txt[t];
Ny[t_]:=(1/kappa[t])*Tyt[t];
Nz[t_]:=(1/kappa[t])*Tzt[t];
Nxt[t_]:=D[Nx[t],t];
Nyt[t_]:=D[Ny[t],t];
Nzt[t_]:=D[Nz[t],t];
Bx[t_]:=Ty[t]*Nz[t]-Ny[t]*Tz[t];      (* B=TxN *)
By[t_]:=Nx[t]*Tz[t]-Tx[t]*Nz[t];
Bz[t_]:=Tx[t]*Ny[t]-Nx[t]*Ty[t];
Bxt[t_]:=D[Bx[t],t];
Byt[t_]:=D[By[t],t];
Bzt[t_]:=D[Bz[t],t];
tau[t_]:=-(Bxt[t]*Nx[t]+Byt[t]*Ny[t]+Bzt[t]*Nz[t]);
(* FullSimplify[kappa[t],a^2*(b^2+r^2)==1] *)
(* FullSimplify[tau[t],a^2*(b^2+r^2)==1] *)
FullSimplify[kappa[t], 0≤(1+t^2)]
FullSimplify[tau[t], 0≤(1+t^2)]

(* Calculation of Curvature and Torsion for General t *)
(* Calculation of C''' *)

Ft[t_]:=D[F[t],t];
Gt[t_]:=D[G[t],t];
Ht[t_]:=D[H[t],t];
Ftt[t_]:=D[Ft[t],t];
Gtt[t_]:=D[Gt[t],t];
Htt[t_]:=D[Ht[t],t];
Fttt[t_]:=D[Ftt[t],t];
Gttt[t_]:=D[Gtt[t],t];
Httt[t_]:=D[Htt[t],t];
SS[t_]:=Sqrt[Ft[t]^2+Gt[t]^2+Ht[t]^2];  (* Length of Tangent Vector *)
KK[t_]:=Gt[t]*Htt[t]-Ht[t]*Gtt[t];
LL[t_]:=Ht[t]*Ftt[t]-Ft[t]*Htt[t];  (* Cross Product *)
MM[t_]:=Ft[t]*Gtt[t]-Gt[t]*Ftt[t];
TT[t_]:=Sqrt[KK[t]^2+LL[t]^2+MM[t]^2]    (* Length of Cross Product *)
DD[t_]:=KK[t]*Fttt[t]+LL[t]*Gttt[t]+MM[t]*Httt[t]  (* Dot Product *)
kappa[t_]:=(1/SS[t])^3*TT[t];
tau[t_]:=(1/TT[t])^2*DD[t];
FullSimplify[kappa[t], 0≤(1+t^2)]
FullSimplify[tau[t],0≤(1+t^2)]