Geometrie/První křivost
Popis
editovatPrvní 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í
editovatNechť 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
editovatFunkce 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
editovatAutoř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.