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

C++での2本の線の交点のプログラム


線ABに対応する点AとB、および線PQに対応する点PとQが与えられます。タスクは、これら2つの線の交点を見つけることです。

−点はX座標とY座標の2D平面で与えられます。

C++での2本の線の交点のプログラム

ここで、A(a1、a2)、B(b1、b2)およびC(c1、c2)、D(d1、d2)は、2つの異なる線を形成している座標であり、P(p1、p2)は交点です。 (交点の図解のためだけに)

交点を見つける方法

上の図を-

としましょう

したがって、(a1、a2)、(b1、b2)、(c1、c2)、(d1、d2)を使用して、:A1 =b2 --a2B1 =a1 --b1C1 =(A1 * a1)+( B1 * a1)A2 =d2-c2B2 =c1-d1C2 =(A2 * c1)+(B2 * c2)与えられた行を1とします。 A1x + B1y=C12。 A2x + B2y =C2ここで、交点を見つけるには、これら2つの方程式を解く必要があります。 1にB1を掛け、2にB2を掛けると、次のようになります。 

これによりxの値が得られ、同様にyの値が得られます。これはxであるp1とyであるp2の交点になります。

−上記の式は、2つの線の交点を示しますが、線の代わりにセグメントが指定されている場合は、計算結果が線分上にあるように、その点を再確認する必要があります。

  • min(x1、x2)<=x <=max(x1、x2)
  • min(y1、y2)<=y <=max(y1、y2)

上記の問題を解決するために使用しているアプローチ-

  • 入力値を取得します。
  • a1 * b2-a2*b1である行列式を見つけます
  • 行列式=0かどうかを確認し、線が平行であるかどうかを確認します
  • 行列式がゼロでない場合、x =(c1 * b2 --c2 * b1)およびy =(a1 * c2 --a2 * c1)
  • 結果を返して印刷します。

アルゴリズム

 StartStep 1->x座標とy座標を出力する関数を宣言しますvoiddisplay(mk_pair par)par.firstとpar.secondを出力しますStep 2->交点を計算する関数を宣言しますmk_pairintersection(mk_pair A、mk_pair B、mk_pair C、mk_pair D)double a=B.secondを宣言-A.seconddoubleb=A.firstを宣言-B.firstdoubleを宣言c=a *(A.first)+ b *(A.second)doublea1=を宣言D.second-C.second宣言doubleb1=C.first-D.first宣言doublec1=a1 *(C.first)+ b1 *(C.second)宣言double det =a * b1-a1 * b IF( det =0)return make_pair(FLT_MAX、FLT_MAX)EndElse宣言doublex =(b1 * c --b * c1)/det宣言doubley =(a * c1-a1 * c)/ det return make_pair(x、y) EndStep 3-> in main()ポイントの関数をmk_pair q =make_pair(2、1)IF(inter.first =FLT_MAX AND inter.second =FLT_MAX)として宣言し、呼び出します。 inter)EndStop 

 #include usingnamespace std; #define mk_pair pair  //x座標とy座標を表示voiddisplay(mk_pair par){cout <<"(" < 

出力

指定された線ABとCDの交点は次のとおりです:(2、4)

  1. C++でのピラミッドのボリュームのプログラム

    ピラミッドのベースのタイプに応じて側面が与えられると、タスクはピラミッドの体積を計算することです。 ピラミッドは、ピラミッドの鋭いエッジを形成する共通点で外面が三角形で交わる3D図形です。ピラミッドの体積は、持つベースのタイプによって異なります。 -のように、ピラミッドを構成できるベースにはさまざまな種類があります。 三角形 -ピラミッドの体積よりも、ピラミッドの底辺が三角形になることを意味します 式-:( 1/6)* a * b * h 正方形 -ピラミッドの体積よりも、ピラミッドの底面が正方形になることを意味します 式-:(1/3)*(b ^ 2)* h 五角形 -ピラミッド

  2. QuickSort用のC++プログラム?

    クイックソートは、比較を使用してソートされていないリスト(配列)をソートするソート手法です。クイックソートは、パーティション交換ソートとも呼ばれます。 等しいソート項目の相対的な順序が保持されないため、安定したソートではありません。クイックソートは配列を操作できるため、ソートを実行するために少量の追加メモリが必要です。常に最悪の場合のパーティションを選択するわけではないことを除いて、選択ソートと非常によく似ています。したがって、選択ソートのより適切な形式と見なすことができます。 QuickSortは、最も効率的な並べ替えアルゴリズムの1つであり、配列を小さい配列に分割することに基づいていま