Geometrie/Hlavní křivost

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.