3D 中兩個平面的角度,在 C++ 中如何計算?


要了解 3D 中兩個平面之間的角度,我們需要了解平面和角度的概念。

平面是一個延伸到無限的二維表面。

角度是兩條相交於一點的直線和表面之間的度數。

因此,在這個問題中,我們需要找到*兩個 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

更新時間:2019 年 10 月 4 日

212 次瀏覽

開啟您的 職業

完成課程獲得證書

開始
廣告
© . All rights reserved.