Как рассчитать все параметры треугольника?

Для расчета основных параметров треугольника (таких как: периметр, площадь, длины сторон, углы, координаты, радиусы вписанной и описанной окружностей, а также координаты их центров) можно воспользоваться следующим классом 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;

Отправил HarryQualo Втр, 03/17/2020 - 23:16

buy viagra in london http://viaph24.com - viagra pills cialis 20 mg price

Отправил Fleripek Втр, 03/17/2020 - 20:29

cialis daily for sale http://ciaph24.com - cheap cialis female pink viagra 100mg pills about

Отправил outwamout Втр, 03/17/2020 - 18:12

buy cialis using paypal http://levph24.com - levitra coupon buy viagra express delivery

Отправил JamesSmaro Втр, 03/17/2020 - 16:27

cheap cialis brand http://viaph24.com - viagra without a doctor prescription cialis sale vancouver

Отправил Neriderma Втр, 03/17/2020 - 14:16

buy cialis levitra and viagra http://levph24.com - levitra coupon viagra generic

Отправил Robertdor Втр, 03/17/2020 - 13:30

is it safe to buy levitra online http://levph24.com - levitra 20 mg buy viagra in china

Отправил HarryQualo Втр, 03/17/2020 - 12:54

buy cialis online no prescription http://viaph24.com - generic viagra 100mg where to buy viagra online

Отправил Fifapyday Втр, 03/17/2020 - 12:33

how to buy levitra in canada http://ciaph24.com - cheap cialis cheap viagra without rx

Отправил FuenceMup Втр, 03/17/2020 - 10:14

buy cialis online uk no prescription http://ciaph24.com - cialis generic how can i order viagra online

Отправил ViotteLot Втр, 03/17/2020 - 07:50

buy viagra australia online no prescription http://levph24.com - buy levitra online order levitra overnight delivery

Отправил JamesSmaro Втр, 03/17/2020 - 06:24

cheap viagra order online http://ciaph24.com - cialis coupon buy viagra nz online

Отправил Fleripek Втр, 03/17/2020 - 04:45

where to order cialis online safe http://levph24.com - levitra online viagra sale brighton

Отправил HarryQualo Втр, 03/17/2020 - 02:32

levitra professional sale http://viaph24.com - cheap viagra buy viagra professional online no prescription

Отправил outwamout Втр, 03/17/2020 - 01:51

cialis pills india http://levph24.com - levitra generic viagra cialis

Отправил Fifapyday Втр, 03/17/2020 - 01:21

cheap cialis new zealand http://ciaph24.com - cheap cialis cialis for sale in australia

Отправил Robertdor Пнд, 03/16/2020 - 23:04

daily cialis pills http://viaph24.com - buy viagra order viagra in uk

Отправил Neriderma Пнд, 03/16/2020 - 21:59

cialis soft tabs 20mg pills http://viaph24.com - generic viagra can you buy cialis online in australia

Отправил FuenceMup Пнд, 03/16/2020 - 20:55

viagra prices http://viaph24.com - viagra online buy cialis online new zealand

Отправил JamesSmaro Пнд, 03/16/2020 - 20:23

levitra buy australia http://viaph24.com - viagra without doctor prescription generic for cialis

Отправил ViotteLot Пнд, 03/16/2020 - 17:20

order cheap viagra online uk http://ciaph24.com - cialis online canadian viagra

Отправил HarryQualo Пнд, 03/16/2020 - 16:09

viagra buy durban http://viaph24.com - generic viagra buy viagra uk quick delivery

Отправил Fifapyday Пнд, 03/16/2020 - 14:07

order liquid cialis http://viaph24.com - viagra cialis pills description

Отправил Fleripek Пнд, 03/16/2020 - 12:14

how to buy cheap viagra online http://ciaph24.com - cialis online buy viagra and cialis

Отправил JamesSmaro Пнд, 03/16/2020 - 10:25

where can i buy viagra yahoo http://levph24.com - generic levitra vardenafil buy viagra edmonton

Отправил Robertdor Пнд, 03/16/2020 - 08:58

buy cialis generic http://ciaph24.com - generic cialis how to order cialis

Отправил FuenceMup Пнд, 03/16/2020 - 08:16

buy viagra kenya http://viaph24.com - buy viagra order-cialis.com

Отправил HarryQualo Пнд, 03/16/2020 - 06:41

cheap generic viagra http://viaph24.com - buy viagra buy levitra in europe

Отправил Neriderma Пнд, 03/16/2020 - 05:49

generic viagra online http://ciaph24.com - generic cialis no doctor's prescription what are cialis pills for

Отправил outwamout Пнд, 03/16/2020 - 05:49

can you buy cialis mexico http://viaph24.com - generic viagra 100mg cheap viagra in australia

Отправил Fifapyday Пнд, 03/16/2020 - 04:11

buy viagra soft tabs http://levph24.com - generic levitra vardenafil order viagra online legal

Отправил ViotteLot Пнд, 03/16/2020 - 02:52

viagra buy switzerland http://viaph24.com - viagra online viagra cheap fast

Отправил JamesSmaro Пнд, 03/16/2020 - 01:20

cheap levitra in uk http://viaph24.com - generic viagra 100mg buy generic cialis online uk

Отправил HarryQualo Вс, 03/15/2020 - 21:13

order viagra online usa http://levph24.com - levitra coupon viagra sale cheap

Отправил FuenceMup Вс, 03/15/2020 - 19:42

cialis pills used http://levph24.com - generic levitra vardenafil cheap viagra in the uk

Отправил Robertdor Вс, 03/15/2020 - 19:24

buy viagra hyderabad http://levph24.com - levitra coupon levitra sales

Отправил Fifapyday Вс, 03/15/2020 - 17:06

buy viagra online forum http://ciaph24.com - cialis online viagra by mail order from canada

Отправил Fleripek Вс, 03/15/2020 - 15:56

buy viagra online australia http://levph24.com - levitra coupon viagra discount

Отправил JamesSmaro Вс, 03/15/2020 - 15:20

when will cialis be over the counter http://viaph24.com - buy viagra buy levitra pattaya

Отправил outwamout Вс, 03/15/2020 - 13:42

cialis pills canada http://ciaph24.com - cialis can you buy viagra rite aid

Отправил Neriderma Вс, 03/15/2020 - 13:40

cialis on sale http://levph24.com - levitra generic viagra sale edmonton

Отправил ViotteLot Вс, 03/15/2020 - 12:34

buy cialis online cheapest http://viaph24.com - generic viagra 100mg viagra for men sale

Отправил HarryQualo Вс, 03/15/2020 - 09:50

cheapest cialis no prescription http://viaph24.com - viagra pills buy cialis daily use online

Отправил FuenceMup Вс, 03/15/2020 - 06:33

cheapest price generic cialis http://levph24.com - levitra buy cialis legally

Отправил JamesSmaro Вс, 03/15/2020 - 05:18

viagra sale england http://levph24.com - buy levitra online very cheap viagra

Отправил Robertdor Вс, 03/15/2020 - 05:00

how to buy levitra online http://ciaph24.com - cialis coupon cheap viagra sydney

Отправил Fifapyday Вс, 03/15/2020 - 04:43

cialis pills for sale http://viaph24.com - generic viagra buy viagra cheap canada

Отправил HarryQualo Сб, 03/14/2020 - 23:45

buy viagra quick delivery http://viaph24.com - viagra erection after ejaculation buy cialis without doctor prescription

Отправил Fleripek Сб, 03/14/2020 - 23:28

buy cialis online overnight http://ciaph24.com - cialis cheap cialis and levitra

Отправил ViotteLot Сб, 03/14/2020 - 22:09

buy cialis professional 20 mg http://ciaph24.com - cialis vs viagra effectiveness cialis from india

Отправил Neriderma Сб, 03/14/2020 - 21:29

buy viagra women http://levph24.com - levitra where to buy viagra in vancouver

Последние комментарии

Счетчики