Geometrie/Hlavní křivost
Vzhled
Popis
[editovat | editovat zdroj]Hlavní křivost je normálová křivost v hlavním směru.
Vyjádření
[editovat | editovat zdroj]Hlavní křivost můžeme vypočítat z koeficientů první a druhé základní formy plochy jako kořeny následující kvadratické rovnice:
.
Kde čísla E, F, G jsou koeficienty první základní formy plochy a čísla L, M, N jsou koeficienty druhé základní formy plochy.
Tedy hlavní křivost je rovna čemu?
Algoritmizace
[editovat | editovat zdroj]Výpočet hlavních křivostí byl realizován výpočtem kořenů výše zmíněné kvadratické rovnice.
public static ArrayList HlavniKrivost(Surface plocha, double u, double v)
{
Vector3d partialU=plocha.PartialDerivU(u, v);
Vector3d partialV=plocha.PartialDerivV(u, v);
Vector3d normalVector=NormalyPlochy.NormalovyVektor(plocha, u, v);
// koeficienty prvni zakladni formy ploch
double coefE=partialU.DotProduct(partialU);
double coefF=partialU.DotProduct(partialV);
double coefG=partialV.DotProduct(partialV);
// koeficienty druhe zakladni formy plochy
double coefL=normalVector.DotProduct(plocha.PartialDerivUU(u, v));
double coefM=normalVector.DotProduct(plocha.PartialDerivUV(u, v));
double coefN=normalVector.DotProduct(plocha.PartialDerivVV(u, v));
// koeficienty kvadraticke rovnice
double coefA=(coefE * coefG) - (coefF*coefF);
double coefB=(coefE * coefN) - (2 * coefF * coefM) + (coefG * coefL);
double coefC=(coefL * coefN) - (coefM * coefM);
// vypocty korenu kvadraticke rovnice
double x1=(coefB + Math.Sqrt(coefB*coefB - 4*coefA*coefC)) / (2*coefA);
double x2=(coefB - Math.Sqrt(coefB*coefB - 4*coefA*coefC)) / (2*coefA);
ArrayList result=new ArrayList();
result.Add(x1);
result.Add(x2);
return result;
}
Autoři
[editovat | editovat zdroj]Tento text vypracovali studenti Univerzity Palackého v Olomouci katedry Matematické informatiky jako zápočtový úkol do předmětu Počítačová geometrie.