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

2D平面の点からC++の線までの垂線の足を見つける


2D平面と直線の方程式に点Pがあるとすると、タスクはPから直線への垂線の足を見つけることです。

直線の方程式はax+by + c =0です。Pを通り、直線に垂直な直線の方程式。 PとQを通る直線の方程式はay– bx + d =0になります。また、P(x1、y1)、Q(x2、y2)なので、方程式にPの座標を置きます。

ay 1-bx 1 + d =0、つまりd =bx1-ay 1

また、Qは与えられた線とPとQを通る線の交点であるため、これら2つの方程式の解を見つけます。

ax + by + c =0、∧ay-bx+(bx1-ay 1)=0

a、b、c、dはすべて既知であるため、次の式を使用して見つけることができます-

$$ \ frac {x-x_ {1}} {a} =\ frac {y-y_ {1}} {b} =\ frac {f-(ax_ {1} + by_ {1} + c)} { a ^ {2} + b ^ {2}} $$

#include<iostream>
using namespace std;
void getFootCoordinate(double a, double b, double c, double x1, double y1) {
   double p = -1 * (a * x1 + b * y1 + c) / (a * a + b * b);
   double x = p * a + x1;
   double y = p * b + y1;
   cout << "(" << x << ", " << y <<")";
}
int main() {
   double a = 0.0;
   double b = 1.0;
   double c = -2;
   double x1 = 3.0;
   double y1 = 3.0;  
   cout << "The coordinate is: ";
   getFootCoordinate(a, b, c, x1, y1);
}

出力

The coordinate is: (3, 2)

  1. C++で2次元平面内の点の鏡像を検索します

    この問題では、2次元平面内の点Pが与えられ、点a、b、cofは方程式ax + by + c=0になります。私たちのタスクは次のことを見つけることです。点の2次元平面の鏡像。 問題を理解するために例を見てみましょう 入力 P = (2, 1), a = 1, b = -1, c = 0 出力 (1, 2) 説明 飛行機は次のように見えます ソリューションアプローチ この問題を解決するには、座標(x、y)を持つ方程式点Pを見つける必要があります。つまり、P-Pの線が鏡の線と交差する中点であるRがあります。 線P-R-Pはミラーに垂直です。したがって、線の方程式は次のようになります。

  2. C++で線の中点を見つけるプログラム

    この問題では、線の始点と終点の2つの点AとBが与えられます。私たちの仕事は、C++で線の中点を見つけるプログラムを作成することです。 問題の説明 −ここでは、開始点と終了点がA(x1、y1)とB(x2、y2)の線があります。そして、線の中点を見つける必要があります。 問題を理解するために例を見てみましょう 入力 a(x1, y1) = (4, -5) b(x2, y2) = (-2, 6) 出力 (1, 0.5) 説明 (x1 + x2)/2 = 4 - 2 / 2 = 1 (y1 + y2)/2 = -5 + 6 / 2 = 0.5 ソリューションアプローチ この問題を解決する