C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で複素数を使用したジオメトリ


このセクションでは、C++でSTLの複合クラスを使用してポイントクラスを作成する方法を説明します。そして、それらをいくつかのジオメトリ関連の問題に適用します。複素数は、STL(#include

の複素数クラス内にあります。

ポイントクラスの定義

複合点をポイントにするには、complex の名前をpointに変更してから、xを複合クラスのreal()に変更し、yを複合クラスのimag()に変更します。したがって、ポイントクラスをシミュレートできます。

# include <complex>
typedef complex<double> point;
# define x real()
# define y imag()

xとyはマクロとして適用されているため、変数として適用できないことに注意する必要があります。

理解を深めるために、次の実装を見てみましょう-

#include <iostream>
#include <complex>
using namespace std;
typedef complex<double> point;
#define x real()
#define y imag()
int main() {
   point my_pt(4.0, 5.0);
   cout << "The point is :" << "(" << my_pt.x << ", " << my_pt.y << ")";
}

出力

The point is :(4, 5)

ジオメトリを適用するために、原点からのPの距離(0、0)を見つけることができます。これは、-abs(P)として表されます。軸XからOPがなす角度。ここで、Oは原点です:arg(z)。原点を中心としたPの回転は、P * Polar(r、θ)です。

理解を深めるために、次の実装を見てみましょう-

#include <iostream>
#include <complex>
#define PI 3.1415
using namespace std;
typedef complex<double> point;
#define x real()
#define y imag()
void print_point(point my_pt){
   cout << "(" << my_pt.x << ", " << my_pt.y << ")";
}
int main() {
   point my_pt(6.0, 7.0);
   cout << "The point is:" ;
   print_point(my_pt);
   cout << endl;
   cout << "Distance of the point from origin:" << abs(my_pt) << endl;
   cout << "Tangent angle made by OP with X-axis: (" << arg(my_pt) << ") rad = (" << arg(my_pt)*(180/PI) << ")" << endl;
   point rot_point = my_pt * polar(1.0, PI/2);
   cout << "Point after rotating 90 degrees counter-clockwise, will be: ";
   print_point(rot_point);
}

出力

The point is:(6, 7)
Distance of the point from origin:9.21954
Tangent angle made by OP with X-axis: (0.86217) rad = (49.4002)
Point after rotating 90 degrees counter-clockwise, will be: (-6.99972,
6.00032)

  1. C++でのデュードニー番号

    与えられた数の底の数理論で定義された数は、最初の自然数の桁の合計が2番目の数の桁の合計に等しくなるように、別の自然数の完全な3乗に等しい自然数です。 (ウィキペディア)。 番号はヘンリー・デュードニーによって発見されました 。その数式 は- ここでは、整数nが与えられます。私たちの仕事は、与えられた番号nが人物番号であるかどうかを確認することです。 問題を理解するために例を見てみましょう 入力: N =17592 出力: いいえ 説明: 与えられた番号はダドニー番号ではありません。 ソリューションアプローチ- 解決策は、デュードニー番号の基本的な定義にあります。

  2. C ++を使用して、括弧の文字列から等しい点を見つけます。

    ここでは、括弧の文字列で等しいポイントを取得する方法を説明します。等しい点はインデックスIであり、その前の開始ブラケットの数は、その後の終了ブラケットの数と等しくなります。ブラケット文字列が「(()))(()()())))」のようなものであるとすると、よく見ると次のようになります したがって、0から9までの開始ブラケットの数は5であり、9から14までの終了ブラケットの数も5であるため、これは同じポイントです。 この問題を解決するには、次のいくつかの手順に従う必要があります- すべてのインデックスiまでの文字列に表示される開き角かっこの数を保存します すべてのインデックスIまでの文字