Какой признак подобия треугольников лучше использовать при заданной реализации? - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Какой признак подобия треугольников лучше использовать при данной реализации?

Решение задачи: «Какой признак подобия треугольников лучше использовать при заданной реализации?»

textual
Листинг программы
type
  TTriangle = class
  private
    _VecA, _VecB, _VecC: TVector2D;
  
  function GetSquare() := Abs((_VecC - _VecA).VectorMult(_VecB - _VecA) * 0.5);
  
  function GetLengthAB() := (_VecB - _VecA).Len;
  function GetLengthBC() := (_VecB - _VecC).Len;
  function GetLengthCA() := (_VecA - _VecC).Len;
  
  function GetPerimeter() := GetLengthAB() + GetLengthBC() + GetLengthCA();
  
  function TriagnlesAreSimilar(lenA, lenB, lenC: real): boolean;
  begin
    var k1 := GetLengthAB() / lenA;
    var k2 := GetLengthBC() / lenB;
    var k3 := GetLengthCA() / lenC;
    Result := (k1 = k2) and (k1 = k3);
  end;
  
  public
    property VecA: TVector2D read _VecA write _VecA; // Вектор, определяющий положение точки A
    property VecB: TVector2D read _VecB write _VecB; // Вектор, определяющий положение точки B
    property VecC: TVector2D read _VecC write _VecC; // Вектор, определяющий положение точки C
    property LengthAB: real read GetLengthAB; // Длина стороны AB
    property LengthBC: real read GetLengthBC; // Длина стороны BC
    property LengthCA: real read GetLengthCA; // Длина стороны CA
    property Square: real read GetSquare; // Площадь
    property Perimeter: real read GetPerimeter; // Периметр
    
    
    constructor(vA, vB, vC: TVector2D);
    begin
      VecA := vA;
      VecB := vB;
      VecC := vC;
    end;
    
    function IsSimilarTo(t: TTriangle) := TriagnlesAreSimilar(t.LengthAB, t.LengthBC, t.LengthCA) or 
                                          TriagnlesAreSimilar(t.LengthBC, t.LengthCA, t.LengthAB) or
                                          TriagnlesAreSimilar(t.LengthCA, t.LengthAB, t.LengthBC);
    
    function ToString() := Format('Triangle({0}, {1}, {2})', _VecA.ToString(), _VecB.ToString(), _VecC.ToString());
    
    procedure Print() := Write(ToString());
    
    procedure Println() := Writeln(ToString());
  end;

Объяснение кода листинга программы

Вот что делает этот код:

  1. Определяет класс TTriangle, который представляет треугольник. У класса есть три приватных поля (_VecA, _VecB, _VecC), которые хранят векторы, определяющие положение вершин треугольника. Также у класса есть три открытых метода (GetLengthAB, GetLengthBC, GetLengthCA), которые вычисляют длины сторон треугольника.
  2. Определяет метод TriagnlesAreSimilar, который проверяет, являются ли два треугольника подобными. Он использует формулу для вычисления коэффициентов сходства и сравнивает их. Если все коэффициенты равны, то треугольники подобны.
  3. Определяет открытые свойства VecA, VecB, VecC, LengthAB, LengthBC, LengthCA, Square и Perimeter, которые предоставляют доступ к полям и методам класса.
  4. Определяет конструктор, который принимает три вектора в качестве параметров и инициализирует соответствующие поля класса.
  5. Определяет открытый метод IsSimilarTo, который проверяет, является ли текущий треугольник подобным переданному треугольнику.
  6. Определяет открытый метод ToString, который возвращает строковое представление треугольника.
  7. Определяет процедуры Print и Println, которые выводят строковое представление треугольника в консоль. Список функций и методов в порядке их определения:
  8. GetLengthAB
  9. GetLengthBC
  10. GetLengthCA
  11. TriagnlesAreSimilar
  12. IsSimilarTo
  13. ToString
  14. Print
  15. Println

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы