Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

มุมระหว่างสองระนาบในแบบ 3 มิติใน C ++?


สำหรับการเรียนรู้เกี่ยวกับมุมระหว่างระนาบสองระนาบในแบบ 3 มิติ เราต้องเรียนรู้เกี่ยวกับระนาบและมุม

เครื่องบิน เป็นพื้นผิวสองมิติที่ขยายไปถึงอนันต์

มุม คือช่องว่างเป็นองศาระหว่างเส้นสองเส้นกับพื้นผิวที่ตัดกันที่จุดหนึ่ง

ดังนั้น ในปัญหานี้ เราต้องหา มุมระหว่างระนาบ 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