Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Góc giữa hai mặt phẳng trong không gian 3D trong C

Hai mặt phẳng P1: a1x+b1y+c1z+d1=0, P2: a2x+b2y+c2z+d2=0. Góc giữa chúng:

cos θ = |a1a2 + b1b2 + c1c2| / (√(a1²+b1²+c1²) * √(a2²+b2²+c2²))

Góc giữa hai mặt phẳng trong không gian 3D trong C

Chương trình C++ ví dụ

#include <iostream>
#include <cmath>
using namespace std;

class Plane {
    double a,b,c,d;
public:
    Plane(double a=0,double b=0,double c=0,double d=0):a(a),b(b),c(c),d(d){}
    friend double angle(Plane p1, Plane p2);
};

double angle(Plane p1, Plane p2) {
    double num = p1.a*p2.a + p1.b*p2.b + p1.c*p2.c;
    double den1 = sqrt(p1.a*p1.a + p1.b*p1.b + p1.c*p1.c);
    double den2 = sqrt(p2.a*p2.a + p2.b*p2.b + p2.c*p2.c);
    return (180.0/3.14159) * acos(num/(den1*den2));
}

int main() {
    Plane p1(2,2,-3,-5), p2(3,-3,5,-6);
    cout << "Angle: " << angle(p1,p2) << " degree";
}

Kết quả

Angle: 123.697 degree