古詩詞大全網 - 古詩大全 - getz

getz

請參考下面的代碼:

#include?<stdlib.h>

#include?<iostream>

#include?"math.h"

class?XYZ

{

public:

XYZ(double?x,?double?y,?double?z){_x?=?x;?_y?=?y;?_z?=?z;}

double?getX()?const{return?_x;}

double?getY()?const{return?_y;}

double?getZ()?const{return?_z;}

private:

double?_x;

double?_y;

double?_z;

};

class?Plane

{

public:

Plane(double?A,?double?B,?double?C,?double?D){

_A?=?A;

_B?=?B;

_C?=?C;

_D?=?D;

}

double?getDis(XYZ?pt){

return?(_A?*?pt.getX()?+?_B?*?pt.getY()?+?_C?*?pt.getZ()?+?_D)/(sqrt(_A?*?_A?+?_B?*?_B?+?_C?*?_C));

}

XYZ?getPtPjt(XYZ?pt){

double?k?=?-1?*?getDis(pt)?/?sqrt(_A?*?_A?+?_B?*?_B?+?_C?*?_C);

double?x?=?pt.getX()?+?k?*?_A;

double?y?=?pt.getY()?+?k?*?_B;

double?z?=?pt.getZ()?+?k?*?_C;

return?XYZ(x,?y,?z);

}

private:

double?_A;

double?_B;

double?_C;

double?_D;

};

int?main(int?argc,?void*?argv[])

{

XYZ?pt1?=?XYZ(-1.0,?0.0,?1.0);

XYZ?pt2?=?XYZ(0.0,?0.0,?-5.0);

Plane?p?=?Plane(1.1,?2.2,?3.3,?4.4);

std::cout?<<?p.getDis(pt1)?<<?std::endl;

std::cout?<<?"("?<<?p.getPtPjt(pt2).getX()?<<?",?"<<?p.getPtPjt(pt2).getY()?<<?",?"?<<?p.getPtPjt(pt2).getZ()?<<?")"?<<?std::endl;

system("pause");

}