Geometrie/Hlavní křivost
Popis editovat
Hlavní křivost je normálová křivost v hlavním směru.
Vyjádření editovat
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
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
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.