Geometrie/Hlavní křivost
Popis
editovatHlavní křivost je normálová křivost v hlavním směru.
Vyjádření
editovatHlavní 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
editovatVý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
editovatTento text vypracovali studenti Univerzity Palackého v Olomouci katedry Matematické informatiky jako zápočtový úkol do předmětu Počítačová geometrie.