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

C++の中間点を使用して長方形の角を見つける


長方形ABCDがあると仮定しますが、中点PとQの座標、および長方形Lの長さしかありません。

C++の中間点を使用して長方形の角を見つける

私たちのタスクは、PとQの座標、および辺Lの長さを使用して、A、B、C、およびDの座標を見つけることです。たとえば、Pが(1、0)、Qが(1、2)の場合、およびLが2の場合、A、B、C、Dはそれぞれ(0、0)、(0、2)、(2、2)になります。 (2、0)。

発生する可能性のあるケースは3つあります。

  • 長方形は水平であるため、ADとBCはX軸に平行です
  • 長方形は垂直であるため、ADとBCはY軸に平行です
  • 長方形は軸に対して特定の角度で傾斜しています。

3番目のケースでは、PとQの座標を使用して勾配を見つける必要があります。ADの勾配を取得すると、ADを通過する直線方程式を生成でき、距離の式を使用して結果を取得できます。

$$ ADの勾配、m =\ frac {px-qx} {py-qy} $$ $$変位\:along \:x \:axis、dx =\ frac {L} {2 \ sqrt {1 + m ^ {2}}} $$ $$ Displacement \:along \:y \:axis、dy =\ frac {mL} {2 \ sqrt {1 + m ^ {2}}} $$

#include <iostream>
#include <cmath>
using namespace std;
class Point {
   public:
      float x, y;
      Point(float a = 0.0f, float b = 0.0f) {
      x = a, y = b;
   }
};
void printCorners(Point p, Point q, float l) {
   Point a, b, c, d;
   if (p.x == q.x) {
      a.x = p.x - (l/2.0);
      d.x = p.x + (l/2.0);
      a.y = d.y = p.y;
      b.x = q.x - (l/2.0);
      c.x = q.x + (l/2.0);
      b.y = c.y = q.y;
   }else if (p.y == q.y) {
      a.y = p.y - (l/2.0);
      d.y = p.y + (l/2.0);
      a.x = d.x = p.x;
      b.y = q.y - (l/2.0);
      c.y = q.y + (l/2.0);
      b.x = c.x = q.x;
   }else{
      float m = (p.x-q.x)/float(q.y-p.y);
      float dx = (l /sqrt(1+(m*m))) *0.5 ;
      float dy = m*dx;
      a.x = p.x - dx;
      a.y = p.y - dy;
      d.x = p.x + dx;
      d.y = p.y + dy;
      b.x = q.x - dx;
      b.y = q.y - dy;
      c.x = q.x + dx;
      c.y = q.y + dy;
   }
   cout << "A (" << a.x << ", " << a.y << ")\n"
   << "B (" << b.x << ", " << b.y << ")\n"
   << "C (" << c.x << ", " << c.y << ")\n"
   << "D (" << d.x << ", " << d.y << ")\n";
}
int main() {
   Point p(1, 1), q(-1, -1);
   printCorners(p, q, 2*sqrt(2));
}

出力

A (0, 2)
B (-2, 0)
C (0, -2)
D (2, 0)

  1. C ++を使用して、指定されたポイントから可能な四辺形の数を見つけます

    四辺形は、ユークリッド平面幾何学で4つの頂点と4つのエッジを持つポリゴンを形成します。名前4-gonなど。四辺形の他の名前に含まれ、正方形、表示スタイルなどとしても知られています。 この記事では、与えられた点から可能な四辺形の数を見つけるためのアプローチを説明します。この問題では、デカルト平面に提供された4つの点(x、y)を使用して作成できる四辺形の数を調べる必要があります。だからここに与えられた問題の例があります- Input : A( -2, 8 ), B( -2, 0 ), C( 6, -1 ), D( 0, 8 ) Output : 1 Explanation : One quadr

  2. C ++を使用してOpenCVで長方形を描く方法は?

    長方形を描くには、4つのポイントが必要です。次の図を見てください。 この図では、x1、x2、y1、y2の4つのポイントがあります。これらの4つのポイントが4つの座標を形成しています。 OpenCVを使用して長方形を描画するには、これらの点を定義し、行列が必要な長方形を表示する必要があります。線の色や線の幅など、他の関連する値を宣言する必要があります。 このメソッドの基本的な構文は次のとおりです- 構文 rectangle(whiteMatrix, starting, ending, line_Color, thickness); 次のプログラムは、OpenCVで長方形を描画する方法