Přeskočit na obsah

Geometrie/Hlavní křivost

Z Wikiknih

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;
}

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.