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.