Geometrie/Frenetův trojhran
Z Wikiknih
Obsah |
[editovat] Vektor tečny
Nechť je křivka k třídy Cn v prostoru E3 dána vektorovou rovnicí s parametrem typu oblouk
.
Potom jednotkový vektor
,
budeme nazývat vektorem tečny křivky k v bodě F(s). Tento vektor mění svou orientaci při přechodu k jinému oblouku, který mění orientaci křivky.
[editovat] Vektor hlavní normály
Jednotkový vektor
,
budeme nazývat vektorem hlavní normály křivky k v bodě F(s). Vektor hlavní normály je nezávislý na volbě oblouku.
[editovat] Vektor binormály
Jednotkový vektor daný vektorovým součinem vektoru tečny a vektoru hlavní normály, tedy
,
budeme nazývat vektorem binormály křivky k v bodě F(s). 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.
[editovat] Frenetův trojhran
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ě F(s).
[editovat] Algoritmus
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
}
