この質問では、指定された 2 つの三角形の類似性をチェックする方法を学習します。これには、プログラマーの観点から多くの現実世界の使用例があります。
物事の 2D および 3D モデルを構築および管理するには、CAD システムを使用する必要があります。重要な機能の 1 つは 2 つの三角形を比較する機能です。
たとえば、設計と建設に携わるエンジニアは、建物の基礎の寸法を設計図と一致させる必要がある場合があります。エンジニアは、2 つの三角形の類似性をチェックする機能が組み込まれている CAD ツールを使用して、基礎の角度と側面がレイアウトに適合しているかどうかを迅速に評価できます。これは、建物の構造の安定性と安全性を確保するのに役立ちます。
さらに、オブジェクトの 3D モデルは、CAD ソフトウェアを使用して 3D プリンティング技術によって作成されます。この場合、モデルが正確に、希望の比率で印刷されていることを確認するには、類似性チェックが役立ちます。類似性を手動で検証するのは面倒でエラーが発生しやすいため、これは複雑なモデルにとって重要です。
ロボット工学分野のプログラマは、類似性チェック ツールを使用してロボットの動作の正確さを保証できます。 2 つの三角形の類似性をチェックすることは、ロボット アーム (多くの場合複数の関節を備えたもの) による複雑な動きが正確かつ一定であることを確認するのに役立ちます。
イラスト
ここで、三角形の類似度の計算に含まれる数学の一部を理解しましょう。
次の特性を持つ 2 つの三角形は似ています -
2 つの三角形の内角は等しい。
三角形の対応する辺は同じ比率です。
2 つの三角形が類似しているかどうかを判断するには、SSS、SAS、AA の 3 つの方法があります。それぞれの定理について簡単に説明しましょう。
SSS(サイド-サイド-サイド)規格
与えられた 2 つの三角形において、3 組の辺の比率が同じであれば、2 つの三角形は相似です。
上記の 2 つの三角形について考えてみましょう。 3 つの反対側の辺の比率が等しい場合、SSS 規格によれば、上の 2 つの三角形は相似になります。つまり、AC/PR = AB/PQ = CB/RQ
SAS (サイドアングルサイド) 規格
与えられた 2 つの三角形において、2 つの辺の比率が同じであり、2 つの三角形の 2 つの辺の間の角度が同じであれば、2 つの三角形は相似です。
上記の三角形を例にとると、AB/PQ = BC/QR および
AA(角度-角度)規格
与えられた 2 つの三角形において、2 つの三角形の任意の 2 つの角度が等しい場合、2 つの三角形は相似です。
上記の三角形を例にとると、
通常は、三角形の 3 点の座標を取得し、類似性をチェックする必要があります。この場合、この式を使用して距離を計算します。
座標が与えられたときに与えられた 2 つの三角形の類似性をチェックするプログラム。
###方法###
プログラム全体を段階的なアルゴリズムにデコードしましょう
2 つの三角形の 3 点の座標を入力として取得します。
上で説明した式、つまり距離 = 数学を使用して座標間の長さを計算します。 sqrt(Math.pow(y2-y1,2) Math.pow(x2-x1,2))
2 つの三角形のすべての辺の長さを計算した後、すべてのペアの比率を計算します。
次に、3 つの比率が同じであるかどうかを確認します。同じであれば、三角形は似ているように印刷し、そうでない場合は、三角形を似ていないように印刷します。 -
ここで、上記のアルゴリズムを実装するコードを書きます
###例###
C 座標が指定された場合に、指定された 2 つの三角形の類似性をチェックするプログラム。
リーリー
###出力###
リーリー
###複雑###
時間計算量: O(1)。このコードは、入力サイズに関係なく、固定数の計算を実行するためです。
空間複雑度: O(1)。コードは、入力のサイズに関係なく、入力値と結果を保存するために固定数の変数を使用するためです。
座標が与えられたときに与えられた 2 つの三角形の類似性をチェックするプログラム。
###方法###
プログラム全体をステップバイステップのアルゴリズムにデコードしましょう
三角形の角度を入力として受け取ります。
角度を比較し、三角形の 2 つの角度が同じかどうかを確認します。ここでは AA 基準を使用します。
いずれかの 2 つの角度が同じ場合、印刷される三角形は類似します。そうでない場合、印刷される三角形は類似しません。 -
次に、上記のアルゴリズムを実装するコードを作成します。 -
###例###
C 角度が指定された場合に、指定された 2 つの三角形の類似性をチェックするプログラム。
#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),因为代码使用固定数量的变量来存储输入值和结果,而不管输入的大小。
结论
在本文中,我们尝试基于两种情况解释检查两个三角形相似性的方法,一种是提供边作为输入,另一种是提供角度作为输入。我希望这篇文章可以帮助您更好地学习这个概念。
以上が与えられた 2 つの三角形の類似性をチェックするプログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。