通常情況下,我們會得到三角形三個點的座標,然後我們需要檢查相似度。在這種情況下,我們將使用這個公式來計算距離。
在提供座標時檢查給定兩個三角形的相似性的程序。
方法
讓我們將整個程式解碼為逐步演算法
將兩個三角形的三個點的座標作為輸入。
使用上面討論的公式計算座標之間的長度,即距離= 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),因為程式碼使用固定數量的變數來儲存輸入值和結果,而不管輸入的大小。
在提供座標時檢查給定兩個三角形的相似性的程序。
方法
讓我們將整個程式解碼為逐步演算法
現在,我們將編寫實作上述演算法的程式碼。
範例
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),因为代码使用固定数量的变量来存储输入值和结果,而不管输入的大小。
结论
在本文中,我们尝试基于两种情况解释检查两个三角形相似性的方法,一种是提供边作为输入,另一种是提供角度作为输入。我希望这篇文章可以帮助您更好地学习这个概念。