Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 3D에서 두 평면 사이의 각도?

<시간/>

3D에서 두 평면 사이의 각도에 대해 배우려면 평면과 각도에 대해 배워야 합니다.

비행기 무한대로 확장되는 2차원 표면입니다.

각도 한 점에서 교차하는 두 선과 표면 사이의 도 단위 공간입니다.

따라서 이 문제에서는 두 3D 평면 사이의 각도를 찾아야 합니다. . 이를 위해 서로 교차하는 두 개의 평면이 있으며 서로 교차하는 각도를 찾아야 합니다.

3D 사이의 각도를 계산하려면 평면, 우리는 이러한 평면의 법선 사이의 각도를 계산해야 합니다.

여기 두 대의 비행기가 있습니다.

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

평면 p1 및 p2의 법선 방향은 (a,b,c) 및 (h,i,j)입니다.

이 두 평면의 법선 사이의 각도를 찾기 위해 생성된 수학 공식을 사용하면 다음과 같습니다.

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