首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

一个关于空间的简单算法题,该如何解决

2012-02-19 
一个关于空间的简单算法题写出一个函数用来判断一个点到一个平面的关系。输入一个点和一个面,返回该点在面

一个关于空间的简单算法题
写出一个函数用来判断一个点到一个平面的关系。输入一个点和一个面,返回该点在面的前面,后面,还是在这个面上?(要求自定义这个点的数据结构,以及这个面的数据结构,用一个点和法向量来表示平面。)

一个朋友问到的一个题,没什么好想法,求助大家。



[解决办法]
定义一个Point结构包含x,y,z三个坐标,用来存储三维空间中的点
一个平面的数据结构就包含一个Point和一个法向量,这个法向量也是Point类型的
给一个平面的结构,你需要一个方法算出平面的方程ax+by+cz=0,这个很容易
然后把你要判断的点带入平面方程,根据得到值的符号来判断,一共就3种情况,大于0,小于0,等于0
[解决办法]
平面用法向和到原点的距离表示最简单,操作也最方便

C/C++ code
class Vec3d{public:  Vec3d(const double& x, const double& y, const double& z)  {     this->x = x;     this->y = y;     this->z = z;  }  const double Dot(const Vec3d& point) const  {     return x*point.x + y*point.y + z*point.z;  }private:  double x, y, z;}class Plane3d{public: Plane3d(const Vec3d& normal, double D){   this->normal = normal;   this->distance = D;}const double GetDistance(const Vec3d& point) const{   point.Dot(normal) - distance;}private:   Vec3d normal;   double distance;} 

热点排行