首頁 >後端開發 >C++ >檢查給定的兩個三角形的相似性的程序

檢查給定的兩個三角形的相似性的程序

WBOY
WBOY轉載
2023-08-25 17:33:03844瀏覽

在這個問題中,我們將學習檢查兩個給定三角形的相似性,從程式設計師的角度來看,這有許多現實世界的用例。

為了建立和管理事物的 2D 和 3D 模型,需要使用 CAD 系統,其中一個關鍵功能是比較兩個三角形的能力。

例如,從事設計和施工的工程師可能需要使建築物的基礎測量與藍圖相匹配。工程師可以利用 CAD 工具快速評估基礎的角度和邊是否符合佈局,該工具具有檢查兩個三角形相似性的內建功能。這有助於確保建築物的結構穩定性和安全性。

此外,物件的3D模型是透過3D列印技術使用CAD軟體製作的。為了確保在這種情況下精確列印模型並達到所需的比例,相似性檢查會很有幫助。這對於複雜的模型至關重要,因為手動驗證相似性可能很乏味且容易出錯。

機器人領域的程式設計師可以透過使用相似性檢查工具來確保機器人運動的精確度。檢查兩個三角形的相似性有助於確保機械手臂(通常具有多個關節)進行的複雜運動精確且恆定。

說明

現在讓我們來了解一些計算三角形相似度所涉及的數學。

如果兩個三角形具有以下特徵,則它們相似 -

  • 兩個三角形的內角相等。

  • 三角形的對應邊具有相同的比例。

判斷兩個三角形是否相似有三種方法:SSS、SAS、AA。讓我們簡要討論每個定理。

SSS(邊-邊-邊)標準

在兩個給定的三角形中,如果三對邊的比例相同,則這兩個三角形相似。

檢查給定的兩個三角形的相似性的程序

讓我們考慮上面給出的兩個三角形。若三對邊的比例相等,則上述兩個三角形依SSS標準可以相似,即AC/PR = AB/PQ = CB/RQ

SAS(邊-角-邊)標準

在兩個給定的三角形中,如果兩對邊的比例相同,並且兩個三角形中兩條邊之間的角度相同,則這兩個三角形相似。

檢查給定的兩個三角形的相似性的程序

以上面的三角形為例,如果 AB/PQ = BC/QR 且

AA(角度-角度)標準

在兩個給定的三角形中,如果兩個三角形的任兩個角相等,則這兩個三角形相似。

檢查給定的兩個三角形的相似性的程序

如果我們以上面的三角形為例,那麼如果

通常情況下,我們會得到三角形三個點的座標,然後我們需要檢查相似度。在這種情況下,我們將使用這個公式來計算距離。

檢查給定的兩個三角形的相似性的程序

在提供座標時檢查給定兩個三角形的相似性的程序。

方法

讓我們將整個程式解碼為逐步演算法

  • 將兩個三角形的三個點的座標作為輸入。

  • 使用上面討論的公式計算座標之間的長度,即距離= Math。 sqrt(Math.pow(y2-y1,2) Math.pow(x2-x1,2))

  • #計算出兩個三角形所有邊的長度後,計算所有對的比值。

  • 接下來,檢查三個比例是否相同,如果相同,則列印三角形相似,否則列印三角形不相似。

現在,我們將編寫實作上述演算法的程式碼

範例

C 程序,用於在提供座標時檢查給定兩個三角形的相似性。

#include <iostream>
#include <cmath>
using namespace std;

int main() {
   double x1 = 0, y1 = 0, x2 = 3, y2 = 0, x3 = 0, y3 = 4; //coordinates of first triangle (x1, y1), (x2, y2), (x3, y3)
   double p1 = 0, q1 = 0, p2 = 6, q2 = 0, p3 = 0, q3 = 8; //coordinates of second triangle (p1, q1), (p2, q2), (p3, q3)
   
   // calculate the distance between the coordinates of the first triangle
   double dist1 = sqrt(pow((x2 - x1), 2) + pow((y2 - y1), 2));
   double dist2 = sqrt(pow((x3 - x2), 2) + pow((y3 - y2), 2));
   double dist3 = sqrt(pow((x1 - x3), 2) + pow((y1 - y3), 2));
   
   // calculate the distance between the coordinates of the second triangle
   double dist4 = sqrt(pow((p2 - p1), 2) + pow((q2 - q1), 2));
   double dist5 = sqrt(pow((p3 - p2), 2) + pow((q3 - q2), 2));
   double dist6 = sqrt(pow((p1 - p3), 2) + pow((q1 - q3), 2));
   
   // calculate the ratio of the length of the triangle
   double ratio1 = dist1/dist4;
   double ratio2 = dist2/dist5;
   double ratio3 = dist3/dist6;
   
   // check if the ratio of all three pairs of sides of the triangle are same, we are using SSS criteria
   if ((ratio1 == ratio2) && (ratio2 == ratio3)) {
      cout << "The two triangles are similar." << endl;
   } else {
      cout << "The two triangles are not similar." << endl;
   }
   
   return 0;
}

輸出

The two triangles are similar.

複雜性

時間複雜度:O(1),因為無論輸入大小如何,此程式碼都會執行固定數量的計算。

空間複雜度:O(1),因為程式碼使用固定數量的變數來儲存輸入值和結果,而不管輸入的大小。

在提供座標時檢查給定兩個三角形的相似性的程序。

方法

讓我們將整個程式解碼為逐步演算法

  • 將三角形的角度當作輸入。

  • 比較角度,檢查三角形的任兩個角是否相同,這裡我們使用 AA 準則。

  • 如果任兩個角相同,則列印三角形相似,否則列印三角形不相似。

現在,我們將編寫實作上述演算法的程式碼。

範例

C 程序,用於在提供角度時檢查給定兩個三角形的相似性。

#include <iostream>
using namespace std;

bool check_aa(int a1,int a2,int a3,int a4,int a5,int a6){
   if((a1==a4 || a1==a5 || a1==a6) && (a2==a4 || a2==a5 || a2==a6))
   return true;
   else
   return false;

}
int main(){
   
   // Input:  the angles of the triangles
   double a1 = 30, a2 = 60, a3 = 90; //angles of triangle A
   double a4 = 60, a5 = 90, a6 = 30; //angles of triangle B
   
   
   bool similar= check_aa(a1,a2,a3,a4,a5,a6);
   
   if (similar)
      cout << "The two triangles are similar." << endl;
   else
      cout << "The two triangles are not similar." << endl;
}

输出

The two triangles are similar.

复杂性

时间复杂度:O(1),因为无论输入大小如何,此代码都会执行固定数量的计算。

空间复杂度:O(1),因为代码使用固定数量的变量来存储输入值和结果,而不管输入的大小。

结论

在本文中,我们尝试基于两种情况解释检查两个三角形相似性的方法,一种是提供边作为输入,另一种是提供角度作为输入。我希望这篇文章可以帮助您更好地学习这个概念。

以上是檢查給定的兩個三角形的相似性的程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除