C++の中間点を使用して長方形の角を見つける
長方形ABCDがあると仮定しますが、中点PとQの座標、および長方形Lの長さしかありません。
私たちのタスクは、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)
-
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
-
C ++を使用してOpenCVで長方形を描く方法は?
長方形を描くには、4つのポイントが必要です。次の図を見てください。 この図では、x1、x2、y1、y2の4つのポイントがあります。これらの4つのポイントが4つの座標を形成しています。 OpenCVを使用して長方形を描画するには、これらの点を定義し、行列が必要な長方形を表示する必要があります。線の色や線の幅など、他の関連する値を宣言する必要があります。 このメソッドの基本的な構文は次のとおりです- 構文 rectangle(whiteMatrix, starting, ending, line_Color, thickness); 次のプログラムは、OpenCVで長方形を描画する方法