Как рассчитать все параметры треугольника?
Для расчета основных параметров треугольника (таких как: периметр, площадь, длины сторон, углы, координаты, радиусы вписанной и описанной окружностей, а также координаты их центров) можно воспользоваться следующим классом 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;
cialis pills sale canada https://edpillsphrm.com best place buy viagra
buy viagra hong kong canada pharmacy buy cialis canada
buy cialis generic buy generic ed pills online how to get cialis
buy viagra uk forum canadian pharmacy how to buy viagra in uk
buy cialis soft online https://edpillsphrm.com how to order levitra
buy female viagra https://edpillsphrm.com buy viagra nigeria
real cialis for sale buy ed pills online viagra sale america
levitra 20 mg cheap https://edpillsphrm.com buy cialis mexico
cheap viagra cialis levitra generic viagra 100mg order cialis india
buy viagra super force online https://edpillsphrm.com canadian pharmacy viagra
buy cialis without prescriptions https://edpillsphrm.com buy cialis fda
where do i buy viagra yahoo https://edpillsphrm.com viagra buy boots
buy cialis in the uk https://edpillsphrm.com how to order generic viagra
buy cheap viagra online uk generic ed pills order levitra online cod
viagra generic ed pills buy cialis in costa rica
buy viagra goa generic viagra buy viagra hyderabad india
buy name brand cialis online ed drugs online from canada buy cialis online legal
buy cialis online no prescription generic ed pills cheap viagra generic canada
cheap levitra professional oo https://edpillsphrm.com viagra gel for sale uk
buy levitra us https://edpillsphrm.com generic levitra online cheap
buy cialis and viagra online https://edpillsphrm.com order viagra online canada
where can i buy viagra in las vegas https://edpillsphrm.com buy viagra online cheap uk
viagra sale supermarkets list of approved canadian pharmacies how to order viagra in australia
discount cialis in canada list of approved canadian pharmacies order generic cialis online
buy cheap viagra online canada https://edpillsphrm.com viagra online order
viagra buy melbourne canada pharmacies online prescriptions can you buy viagra boots
order cialis online overnight https://edpillsphrm.com order cialis at online pharmacy
order levitra cheap https://edpillsphrm.com order cialis professional
buy cialis melbourne buy generic ed pills online viagra sale boots chemist
viagra canada https://viagrawithoutdoctorspres.com buy levitra pen
can buy viagra uk buy viagra viagra online generic cheap
buy viagra yahoo answers buy viagra online buy viagra bangkok
cheapest pharmacy cialis buy generic viagra buy levitra online usa
buying cialis online in canada https://viagrawithoutdoctorspres.com download cheap viagra
can buy cialis over counter usa buy viagra online order viagra boots
where can i buy viagra in london cheap viagra viagra buy no prescription canada
cheap viagra online uk cheap viagra order cialis online cheap
cheap viagra viagra for sale order viagra phone
cialis 20 mg 4 tablet fiyat generic viagra online where can i buy viagra from
where to buy cialis in dubai viagra without prescription meds sale levitra
buy cialis drugstore viagra price where can i buy viagra online yahoo answers
cheap viagra cialis uk buy generic viagra buy viagra forum
viagra for sale in new york buy generic viagra cheap cialis online pharmacy
how to cut cialis pills https://viagrawithoutdoctorspres.com viagra cheap online uk
viagra cialis levitra buy online generic viagra online cheapest cialis generic
buy viagra doha viagra price purchase cialis online cheap
cialis cheap fast delivery https://viagrawithoutdoctorspres.com sales cheap generic viagra com
cheap viagra for women buy generic viagra where can i buy the viagra
buy cialis daily use https://viagrawithoutdoctorspres.com generic cialis india
cheap viagra ireland https://viagrawithoutdoctorspres.com buy viagra boots uk