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

C ++の3Dでの2つの平面間の角度?


3Dで2つの平面間の角度を学習するには、平面と角度について学習する必要があります。

飛行機 は無限に広がる2次元の表面です。

角度 は、ある点で交差する2本の線とサーフェスの間の度単位のスペースです。

したがって、この問題では、2つの3D平面間の角度を見つける必要があります。 。このために、互いに交差する2つの平面があり、互いに交差する角度を見つける必要があります。

2つの3D間の角度を計算するには 平面の場合、これらの平面の法線間の角度を計算する必要があります。

ここには2つの平面があります

p1 : ax + by + cz + d = 0
p2 : hx + iy + j z + k = 0

平面p1とp2の法線の方向は、(a、b、c)と(h、i、j)です。

これを使用して、これら2つの平面の法線間の角度を見つけるために作成される数式は次のようになります。

Cos Ø = {(a*h) + (b*i) + (c*j)} / [(a2 + b2 + c2)*(h2 + i2 + j2)]1/2
Ø = Cos-1 { {(a*h) + (b*i) + (c*j)} / [(a2 + b2 + c2)*(h2 + i2 + j2)]1/2 }

#include <iostream>
#include <math.h>
using namespace std;
int main() {
   float a = 2;
   float b = 2;
   float c = -1;
   float d = -5;
   float h = 3;
   float i = -3;
   float j = 5;
   float k = -3;
   float s = (a*h + b*i + c*j);
   float t = sqrt(a*a + b*b + c*c);
   float u = sqrt(h*h + i*i + j*j);
   s = s / (t * u);
   float pi = 3.14159;
   float A = (180 / pi) * (acos(s));
   cout<<"Angle is "<<A<<" degree";
   return 0;
}

出力

Angle is 104.724 degree

  1. C++のBSTの2つのノード間の最大要素

    問題の説明 N個の要素の配列と、指定された配列に属する2つの整数A、Bが与えられます。 arr[0]からarr[n-1]に要素を挿入して、二分探索木を作成します。タスクは、AからBへのパスで最大の要素を見つけることです。 例 配列が{24、23、15、36、19、41、25、35}の場合、次のようにBSTを形成できます- A=19およびB=41とすると、これら2つのノード間の最大要素は41です。 アルゴリズム ノードAおよびBの最も低い共通祖先(LCA)を見つけます。 LCAとAの間の最大ノードを見つけます。これをmax1と呼びましょう LCAとBの間の最大ノードを見つけます。こ

  2. C++で二分木の2つのノード間の距離を見つける

    ノードが少ない二分木があると考えてください。 2つのノードuとvの間の距離を見つける必要があります。ツリーが次のようになっていると仮定します- これで、(4、6)=4の間の距離、パスの長さは4、(5、8)の間の長さ=5などになります。 この問題を解決するために、LCA(Lowest Common Ancestor)を見つけてから、LCAから2つのノードまでの距離を計算します。 例 #include<iostream> using namespace std; class Node {    public:       in