Geometrie/Frenetův trojhran

Z Wikiknih
Skočit na navigaci Skočit na vyhledávání

Vektor tečny[editovat]

Nechť je křivka třídy v prostoru dána vektorovou rovnicí s parametrem typu oblouk

.

Potom jednotkový vektor

,

budeme nazývat vektorem tečny křivky v bodě . Tento vektor mění svou orientaci při přechodu k jinému oblouku, který mění orientaci křivky.

Vektor hlavní normály[editovat]

Jednotkový vektor

,

budeme nazývat vektorem hlavní normály křivky v bodě . Vektor hlavní normály je nezávislý na volbě oblouku.


Vektor binormály[editovat]

Jednotkový vektor daný vektorovým součinem vektoru tečny a vektoru hlavní normály, tedy

,

budeme nazývat vektorem binormály křivky v bodě . Tento vektor je kolmý na vektor tečny a vektor hlavní normály. Je patrné, že vektor binormály bude měnit svou orientaci při přechodu k oblouku, který mění orientaci křivky.

Frenetův trojhran[editovat]

Uspořádanou trojici vektorů, kterou tvoří vektor tečny, vektor hlavní normály a vektor binormály, tedy

,

budeme nazývat Frenetovým trojhranem křivky v bodě .


FrenetuvTrojhran.jpg

Algoritmus[editovat]

Tečný vektor je roven první derivaci křivky v bodě

public static Vector3d Tecna(Curve krivka, double u)
{
  return krivka.FirstDeriv(u).UnitVector(); //UnitVector - převede vektor na jednotkový
}

Vektor hlavní normály je kolmý na tečný vektor a leží v oskulační rovině

public static Vector3d HlavniNormala(Curve krivka, double u)
{
  return krivka.SecondDeriv(u).Ortogonal(krivka.FirstDeriv(u)).UnitVector();
  //a.Ortogonal(b) - ortogonalizuje vektor a podle vektoru b
}

Vektor binormály je roven vektorovému součinu tečného vektoru a vektoru hlavní normály

public static Vector3d Binormala (Curve krivka, double u)
{
  Vector3d t=Tecna(krivka,u);
  Vector3d n=HlavniNormala(krivka,u);
  return t.CrossProduct(n); //vektorový součin
}