Как рассчитать все параметры треугольника?
Для расчета основных параметров треугольника (таких как: периметр, площадь, длины сторон, углы, координаты, радиусы вписанной и описанной окружностей, а также координаты их центров) можно воспользоваться следующим классом 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;
how to order viagra and cheap generic cialis australia and cheaper viagra cialis levitra
https://vclph24.com ; https://cialisfavdrug.com ; https://canpharmb3.com
viagra sale cyprus and buy levitra online with prescription and is there a generic viagra
https://viagrawithoutdoctorspres.com buy cialis ebay https://cialisxtl.com viagra ice cream go sale selfridges https://canadianpharmacystorm.com
cheap viagra wholesale or discount viagra for sale or the cheapest generic cialis
https://vclph24.com cheapest genuine cialis https://cialisfavdrug.com cialis sale online australia https://canadianpharmacystorm.com
https://viagrawithoutdoctorspres.com ; https://cialisxtl.com ; https://canpharmb3.com
https://vclph24.com buy levitra online australia https://cialisxtl.com cialis cheap canada https://onlinepharmacyero.com
https://viagrawithoutdoctorspres.com do you need a prescription to buy levitra https://tadmedz.com can buy viagra vietnam https://onlinepharmacyero.com
buy viagra toronto or order viagra internet or is there a generic cialis available in the us
buy levitra australia and real viagra for sale and cheap cialis from india
https://viagrawithoutdoctorspres.com ; https://cialisfavdrug.com ; https://canadianpharmacystorm.com
https://viagrawithoutdoctorspres.com viagra cheap real https://tadmedz.com buy cialis au https://onlinepharmacyero.com
order viagra in europe or cheap viagra brisbane or cheapest viagra soft tabs
https://vclph24.com buy viagra delhi https://cialisxtl.com buy cialis prescription online https://onlinepharmacyero.com
https://viagrawithoutdoctorspres.com cialis on sale https://cialisxtl.com otc viagra https://canadianpharmacystorm.com
https://viagrawithoutdoctorspres.com ; https://cialisxtl.com ; https://onlinepharmacyero.com
buy cialis eli lilly and where can i buy viagra in la and buy genuine cialis
buy cialis us pharmacy or cheap levitra canadian pharmacy or viagra super active pill
https://vclph24.com cialis a prix discount https://cialisxtl.com buy generic cialis online https://onlinepharmacyero.com
cheapest levitra australia or buy viagra and cialis or cheap levitra australia
buy cialis brand online and buy cialis walmart and can you buy viagra in thailand
https://viagrawithoutdoctorspres.com viagra professional 100mg pills https://cialisfavdrug.com discount prices on cialis https://onlinepharmacyero.com
https://vclph24.com ; https://cialisxtl.com ; https://onlinepharmacyero.com
viagra buy forum and cialis cheapest lowest price and levitra for sale online
https://viagrawithoutdoctorspres.com cialis super active sale https://cialisxtl.com cheap viagra no rx https://canpharmb3.com
cialis tablet yan etkileri or buy viagra jelly or cheap viagra without rx
https://viagrawithoutdoctorspres.com where can i buy viagra online yahoo https://tadmedz.com best place to order viagra online https://canadianpharmacystorm.com
https://viagrawithoutdoctorspres.com cialis pills color https://cialisxtl.com viagra buy in london https://onlinepharmacyero.com
order viagra from mexico and cialis generic best price and how to get viagra
cuanto sale el viagra en farmacias or non prescription viagra or buy levitra online cheap
buy cialis nz and buy cialis online canadian pharmacy and how much is viagra
https://vclph24.com ; https://cialisfavdrug.com ; https://onlinepharmacyero.com
https://vclph24.com brand levitra for sale https://cialisfavdrug.com order cialis for daily use https://onlinepharmacyero.com
https://vclph24.com buy cialis online us pharmacy https://cialisfavdrug.com cialis discount https://onlinepharmacyero.com
order viagra paypal or buy viagra gold or order a viagra online
cheap viagra ireland and cheapest place to get cialis and buy generic levitra australia
https://vclph24.com buy cialis professional https://cialisfavdrug.com where to order viagra for women https://canadianpharmacystorm.com
buy viagra in london and buy viagra hujagra 2011 and buy viagra online legit
the cheapest generic cialis or cialis buy uk or viagra without a doctor prescription canada
https://viagrawithoutdoctorspres.com ; https://cialisxtl.com ; https://canadianpharmacystorm.com
https://vclph24.com buy cialis super active https://cialisxtl.com buy discount cialis online https://canpharmb3.com
https://vclph24.com cheap viagra deals https://cialisfavdrug.com cheap viagra super force https://onlinepharmacyero.com
generic levitra for sale and buy cialis and viagra and buy cialis no prescription in uk
levitra professional cheapest or levitra professional sale or viagra cheap overnight
https://viagrawithoutdoctorspres.com best place buy cialis line https://tadmedz.com cheap cialis overnight https://canadianpharmacystorm.com
where can buy viagra and cheap viagra us and where to buy the cheapest cialis
https://viagrawithoutdoctorspres.com ; https://cialisxtl.com ; https://onlinepharmacyero.com
buy cialis online in australia or generic cialis cheapest price or meds sale levitra
https://vclph24.com generic viagra buy canada https://cialisxtl.com the cheapest generic cialis https://onlinepharmacyero.com