เพื่อหามุมระหว่างสองระนาบใน 3 มิติ ต้องเข้าใจระนาบและมุม:
- ระนาบ (Plane) — พื้นผิว 2 มิติที่ขยายไปจนถึงอนันต์
- มุม (Angle) — ช่วงระหว่างสองเส้นหรือพื้นผิวที่ตัดกันที่จุดหนึ่ง วัดเป็นองศา
มุมระหว่างสองระนาบ 3D คือมุมระหว่างเวกเตอร์ปกติ (normal vectors) ของทั้งสองระนาบ
กำหนดระนาบสองระนาบ:
p1: ax + by + cz + d = 0 p2: hx + iy + jz + k = 0
ทิศทางของเวกเตอร์ปกติคือ (a,b,c) และ (h,i,j)
สูตรคำนวณมุมระหว่างเวกเตอร์ปกติ:
Cos θ = {(a×h) + (b×i) + (c×j)} / [√(a²+b²+c²) × √(h²+i²+j²)]
θ = Cos⁻¹({(a×h) + (b×i) + (c×j)} / [√(a²+b²+c²) × √(h²+i²+j²)])
ตัวอย่างโค้ด
#include <iostream>
#include <math.h>
using namespace std;
int main() {
float a = 2, b = 2, c = -1, d = -5;
float h = 3, i = -3, j = 5, 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