Computer >> Máy Tính >  >> Lập trình >> C ++

Góc giữa hai máy bay trong 3D trong C ++?

Để tìm hiểu về góc giữa hai mặt phẳng trong 3D, chúng ta cần tìm hiểu về mặt phẳng và góc.

Máy bay là một bề mặt hai chiều mở rộng đến vô cùng.

Góc là khoảng cách tính bằng độ giữa hai đường thẳng và bề mặt giao nhau tại một điểm.

Vì vậy, trong bài toán này chúng ta cần tìm góc giữa hai mặt phẳng 3D . Muốn vậy chúng ta có hai mặt phẳng cắt nhau và chúng ta cần tìm góc mà chúng cắt nhau.

Để tính toán góc giữa hai 3D mặt phẳng, chúng ta cần tính góc giữa pháp tuyến của các mặt phẳng này.

Ở đây, chúng tôi có hai máy bay,

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

Hướng của pháp tuyến của mặt phẳng p1 và p2 là (a, b, c) và (h, i, j).

Sử dụng công thức toán học này để tìm góc giữa pháp tuyến của hai mặt phẳng này là,

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 }

Ví dụ

#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;
}

Đầu ra

Angle is 104.724 degree