Как рассчитать все параметры треугольника?
Для расчета основных параметров треугольника (таких как: периметр, площадь, длины сторон, углы, координаты, радиусы вписанной и описанной окружностей, а также координаты их центров) можно воспользоваться следующим классом TTriangle. Все формулы, используемые в коде, а также пример работы класса в практической реализации см. на странице "Расчет треугольника"
TTriangle = class private fx1, fy1 : Double; fx2, fy2 : Double; fx3, fy3 : Double; function GetDistAB: Double; function GetDistAC: Double; function GetDistBC: Double; function GetPerimeter: Double; function GetArea: Double; function GetAngleA: Double; function GetAngleB: Double; function GetAngleC: Double; function GetRadiusIn: Double; function GetRadiusOut: Double; function GetCenterOut: TFPoint; function GetCenterIn: TFPoint; function PointsInLine: Boolean; public // Задание треугольника координатами его вершин constructor Create( ax1,ay1, ax2,ay2, ax3,ay3: Double); overload; // Задание треугольника длинами его сторон constructor Create( a, b, c: Double); overload; //функция нахождения длины отрезка function Dist( ax1, ay1, ax2, ay2: Double): Double; published // координаты первой вершины A property X1: Double read fx1 write fx1; property Y1: Double read fy1 write fy1; // координаты второй вершины B property X2: Double read fx2 write fx2; property Y2: Double read fy2 write fy2; // координаты третьей вершины С property X3: Double read fx3 write fx3; property Y3: Double read fy3 write fy3; property DistAB: Double read GetDistAB; // Длина AB property DistBC: Double read GetDistBC; // Длина BC property DistAC: Double read GetDistAC; // Длина AC property Perimeter: Double read GetPerimeter; // Периметр property Area: Double read GetArea; // Площадь property AngleA: Double read GetAngleA; // Угол A property AngleB: Double read GetAngleB; // Угол B property AngleC: Double read GetAngleC; // Угол C // Радиус вписанной окружности property RadiusIn: Double read GetRadiusIn; // Радиус описанной окружности property RadiusOut: Double read GetRadiusOut; // Центр описанной окружности property CenterOut: TFPoint read GetCenterOut; // Центр вписанной окружности property CenterIn: TFPoint read GetCenterIn; end; { TTriangle } constructor TTriangle.Create(ax1, ay1, ax2, ay2, ax3, ay3: Double); begin fx1 := ax1; fy1 := ay1; fx2 := ax2; fy2 := ay2; fx3 := ax3; fy3 := ay3; end; constructor TTriangle.Create(a, b, c: Double); Var cosa: Double; begin fx1 := 0; fy1 := 0; fx2 := 0; fy2 := c; cosa := (b*b+c*c - a*a)/(2*b*c); fy3 := b * cosa; fx3 := b * sin(arccos(cosA)); end; function TTriangle.Dist(ax1, ay1, ax2, ay2: Double): Double; begin Result := sqrt((ax2-ax1)*(ax2-ax1)+(ay2-ay1)*(ay2-ay1)); end; function TTriangle.GetAngleA: Double; Var a, r: Double; begin a := (fx2-fx1)*(fx3-fx1)+(fy2-fy1)*(fy3-fy1); r := a/DistAB/DistAC; Result := arccos(r); end; function TTriangle.GetAngleB: Double; Var a, r: Double; begin a := (fx1-x2)*(fx3-fx2)+(fy1-fy2)*(fy3-fy2); r := a/DistAB/DistBC; Result := arccos(r); end; function TTriangle.GetAngleC: Double; Var a, r: Double; begin a := (fx2-x3)*(fx1-fx3)+(fy2-fy3)*(fy1-fy3); r := a/DistBC/DistAC; Result := arccos(r); end; function TTriangle.GetArea: Double; begin Result := sqrt((Perimeter/2*(Perimeter/2-DistAB)* (Perimeter/2-DistBC)*(Perimeter/2-DistAC))); end; function TTriangle.GetCenterIn: TFPoint; Var Lc, Lb, La : Double; cx, cy, bx, by, ax, ay : Double; K1, K2 : Double; begin Lb := DistBC/DistAB; Lc := DistBC/DistAC; cx := (fx2+Lc*fx1)/(Lc+1); cy := (fy2+Lc*fy1)/(Lc+1); bx := (fx3+Lb*fx1)/(Lb+1); by := (fy3+Lb*fy1)/(Lb+1); if cx <> fx3 then K1 := (cy-fy3)/(cx-fx3) else K1 := 1e+96; if bx <> fx2 then K2 := (by-fy2)/(bx-fx2) else K2 := 1e+96; Result.x := (K1*fx3-K2*fx2+(fy2-fy3))/(K1-K2); if Result.x <> fx3 then Result.y := K1*(Result.x-fx3)+fy3 else Result.y := K2*(Result.x-fx2)+fy2; end; function TTriangle.GetCenterOut: TFPoint; Var ma, mb : Double; // коэффициенты наклона линий begin if fx2 <> fx1 then ma := (fy2-fy1)/(fx2-fx1) else ma := 1e95; if fx3 <> fx2 then mb := (fy3-fy2)/(fx3-fx2) else mb := 1e95; Result.x := (ma*mb*(fy1-fy3) + mb*(fx1+fx2) - ma*(fx2+fx3))/(2*(mb-ma)); if ma <> 0 then Result.y := -1/ma*(Result.x - (fx1+fx2)/2) + (fy1+fy2)/2 else Result.y := -1/mb*(Result.x - (fx2+fx3)/2) + (fy2+fy3)/2; end; function TTriangle.GetDistAB: Double; begin Result := Dist ( fx1, fy1, fx2, fy2); end; function TTriangle.GetDistAC: Double; begin Result := Dist ( fx1, fy1, fx3, fy3); end; function TTriangle.GetDistBC: Double; begin Result := Dist ( fx2, fy2, fx3, fy3); end; function TTriangle.GetPerimeter: Double; begin Result := DistAB + DistBC + DistAC; end; function TTriangle.GetRadiusIn: Double; begin if not PointsInLine then Result := 2 * Area / Perimeter; end; function TTriangle.GetRadiusOut: Double; begin if not PointsInLine then Result := (DistAB*DistBC*DistAC)/(4*Area); end; function TTriangle.PointsInLine: Boolean; Var a : double; begin Result := false; a := fx1*fy2+fx2*fy3+fx3*fy1-fx3*fy2-fx2*fy1-fx1*fy3; if abs(a - 1e-20) < 1e-19 then Result := true; end;
Пример использования класса для задачи "Как найти площадь треугольника, заданного длинами сторон a=10, b=12, c=11?"
procedure TForm1.Button1Click(Sender: TObject); Var T: TTriangle; begin T := TTriangle.Create( 10, 12, 11); showmessage( FloatToStr( T.Area)); end;
Пример использования класса для задачи "Как найти периметр треугольника, заданного координатами вершин A(0,0), B(1,0), C(1,1)?"
procedure TForm1.Button1Click(Sender: TObject); Var T: TTriangle; begin T := TTriangle.Create( 0, 0, 1, 0, 1, 1); showmessage(FloatToStr( T.Perimeter)); end;
buy viagra in poland https://viagrawithoutdoctorspres.com buy cialis overnight
buy viagra jelly online uk https://viagrawithoutdoctorspres.com where to order cialis online
viagra generic buy buy viagra online cheap viagra mastercard
cialis sale au cheap viagra where to buy generic cialis in canada
cialis professional buy https://viagrawithoutdoctorspres.com cheap viagra online canadian pharmacy
order cialis to canada https://viagrawithoutdoctorspres.com buy generic levitra 10 mg
viagra for sale viagra online without prescription order viagra plus
buy cialis levitra https://viagrawithoutdoctorspres.com buy cialis soft tabs online
buy viagra online mastercard https://viagrawithoutdoctorspres.com buy viagra uk over counter
cialis buy toronto viagra price viagra sale amazon
discount viagra viagra for sale best place to order generic cialis
cialis china buy viagra price order viagra online nz
home page home page viagra price viagra buy boots
viagra for sale buy generic viagra discount cialis in canada
how to buy cialis in japan https://viagrawithoutdoctorspres.com cialis cost
cialis https://viagrawithoutdoctorspres.com cost of cialis
viagra cheap prices https://viagrawithoutdoctorspres.com cialis discount pharmacy
sales cheap generic viagra com https://viagrawithoutdoctorspres.com buy cialis over counter
brand levitra cheap https://viagrawithoutdoctorspres.com buy viagra online forum
cheap canadian cialis online https://viagrawithoutdoctorspres.com cialis pills india
splitting cialis pills https://viagrawithoutdoctorspres.com cheapest generic cialis canada
levitra discount prices https://viagrawithoutdoctorspres.com cialis super active sale
buy levitra canada online generic viagra online viagra sale england
cialis on sale https://viagrawithoutdoctorspres.com where to buy levitra in canada
cheap viagra europe buy viagra order viagra mexico
viagra sale paypal https://viagrawithoutdoctorspres.com buy cialis australia
order real viagra online https://viagrawithoutdoctorspres.com cialis savings card
real viagra sale https://viagrawithoutdoctorspres.com where can i order cialis
cialis super active 20mg pills viagra online without prescription buy viagra cheap no prescription
cheap 2.5 mg cialis https://viagrawithoutdoctorspres.com buy cialis and viagra online
cheapest generic cialis no prescription https://viagrawithoutdoctorspres.com buy viagra delhi
buy real cialis cheap buy viagra online where can i get cheap cialis
viagra sale perth buy viagra online buy cialis online generic
buy cialis nz viagra online without prescription cialis pills pictures
is it legal to order viagra from canadian https://viagrawithoutdoctorspres.com cheap viagra no prescription needed
cheap-cialis.net https://viagrawithoutdoctorspres.com cialis professional
buy viagra tablets viagra without prescription viagra sale vancouver bc
viagra for sale with no prescription https://viagrawithoutdoctorspres.com viagra sale spain
best place to order generic viagra viagra for sale cheapest cialis from india
viagra super active+ 100mg pills viagra without prescription cialis super active+ 20mg pills
generic cialis https://viagrawithoutdoctorspres.com order genuine viagra online
buy viagra dominican republic https://viagrawithoutdoctorspres.com cialis buy us
buy levitra qatar viagra for sale viagra no prescription
buy viagra oral jelly https://viagrawithoutdoctorspres.com buy generic viagra new zealand
buy cialis kuala lumpur https://viagrawithoutdoctorspres.com cheapest cialis world
discount viagra cialis levitra https://viagrawithoutdoctorspres.com cheap cialis prices canada
himalayan viagra sale viagra price where can i buy viagra in manila
cheap cialis online pharmacy https://viagrawithoutdoctorspres.com buy cialis and viagra
buy viagra mexico https://viagrawithoutdoctorspres.com how to buy levitra in canada
how cheap is viagra viagra without prescription cialis buy online uk