Geometrie/První křivost
Vzhled
Popis
[editovat | editovat zdroj]První křivost přiřazuje každému bodu křivky jeho vychýlení do roviny. Tudíž je pomocí ní možné určovat inflexní body nebo jestli je křivka přímka (část přímky).
Vyjádření
[editovat | editovat zdroj]Nechť je k křivka dána vektorovou rovnicí a je parametr typu oblouk. Vektor první křivosti křivky v bodě je vektor . První křivost je pro parametr typu oblouk funkce , která přiřazuje každému bodu křivky jeho první křivost. První křivost i její vektor jsou nezávislé na zvoleném oblouku křivky.
Algoritmizace
[editovat | editovat zdroj]Funkce pro výpočet první křivosti:
- firstCurvature
- proměnná reprezentující první křivost.
public void SetFirstCurvature()
{
c2DPoint D1Point = Fxydxy(parametr); // point of the 1st derivation
c2DPoint D2Point = Fxyddxy(parametr); // point of the 2nd der.
firstCurvature = Math.Sqrt(
Math.Pow(
Math.Abs(D1Point.X*D2Point.Y - D1Point.Y*D2Point.X), 2
) / Math.Pow(
Math.Abs(SkalarProductTwoVectors(D1Point,D1Point)), 3)
);
}
Funkce pro výpočet vektoru první křivosti:
- firstTorsion
- úsečka reprezentující vektor první křivosti.
private void SetVectorOfFirstCurvature()
{
Point P = Fxy(parametr); // actual point
Point D2P = this.normal.PointByDistance(firstCurvature);
// point at a distance of firstCurvature at the direction of the normal from the actual point
Point OsCirCent = new Point(oscullatingCircle[0],oscullatingCircle[1]); // center of the osculating circle
Point D2P2 = new Point(P.X - (D2P.X - P.X),P.Y - (D2P.Y - P.Y));
// point opposite to a point D2P around the tangent
double DistRtoP2 = Math.Sqrt(Math.Pow(OsCirCent.X - D2P2.X,2)+Math.Pow(OsCirCent.Y - D2P2.Y,2));
// distance from point D2P2 to center of oscullating circle
double DistRtoP = Math.Sqrt(Math.Pow(OsCirCent.X - D2P.X,2)+Math.Pow(OsCirCent.Y - D2P.Y,2));
// distance from point D2P to center of oscullating circle
//2nd point of the vector of firstTorsion is set to a point which is closer to the center of the osculating circle
if(DistRtoP2 > DistRtoP)
{
firstTorsion.A = P;
firstTorsion.B = D2P;
}
else
{
firstTorsion.A = P;
firstTorsion.B = D2P2;
}
}
Podívejte se také na
[editovat | editovat zdroj]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.