请各位帮个忙,做一下这个题,c++的

FrancisFun 2014-05-01 12:47:08
1) 下面为一个二维空间点类,圆类,矩形类。阅读代码,将其功能全部完善。并编写主函数进行测试
2) 完成第一步的工作后,进行一个类的整体改进,抽象出一个高层的抽象基类,使用虚函数,继承等面向对象特征对这些类进行改进
3)将代码结合到MFC的单文档视图框架里,进行图形化显示、菜单和鼠标交互操作
class VecPosition
{
public:
VecPosition ( double vx = 0,
double vy = 0);

VecPosition operator -- ( );
VecPosition operator ++ ( );

VecPosition operator + ( const double &d );
VecPosition operator + ( const VecPosition &p );
VecPosition operator - ( const double &d );
VecPosition operator - ( const VecPosition &p );
VecPosition operator * ( const double &d );
VecPosition operator * ( const VecPosition &p );
VecPosition operator / ( const double &d );
VecPosition operator / ( const VecPosition &p );
void operator = ( const double &d );
void operator += ( const VecPosition &p );
void operator += ( const double &d );
void operator -= ( const VecPosition &p );
void operator -= ( const double &d );
void operator *= ( const VecPosition &p );
void operator *= ( const double &d );
void operator /= ( const VecPosition &p );
void operator /= ( const double &d );
bool operator != ( const VecPosition &p );
bool operator != ( const double &d );
bool operator == ( const VecPosition &p );
bool operator == ( const double &d );


void draw ( ); // 绘制到屏幕
string str ( ); // 将向量坐标转为字符串,格式为“(x=, y=)”

bool setX ( double dX );
double getX ( ) const;
bool setY ( double dY );
double getY ( ) const;

void setVecPosition ( double dX = 0,
double dY = 0 );
double getDistanceTo ( const VecPosition p ); //获得两点间的距离
VecPosition setMagnitude ( double d ); //设置向量长度为d
double getMagnitude ( ) const; //获取向量长度
double getDirection ( ) const; //获取向量方向(与X轴夹角)


// 判断坐标是否在给定两点的X,Y之间
bool isBetweenX ( const VecPosition &p1,
const VecPosition &p2 );
bool isBetweenX ( const double &d1,
const double &d2 );
bool isBetweenY ( const VecPosition &p1,
const VecPosition &p2 );
bool isBetweenY ( const double &d1,
const double &d2 );

// 正规化坐标
VecPosition normalize ( );
// 向量旋转
VecPosition rotate ( double angle );

// 根据极坐标获取笛卡尔坐标
static VecPosition getVecPositionFromPolar( double dMag,
double ang );
// 将任意角度转为(-180,180]范围
static double normalizeAngle ( double angle );

private:
double m_x;
double m_y;
};


class Circle
{
public:
Circle( );
Circle( VecPosition pos, double dR );

void draw ( );
// get and set methods
bool setCircle ( VecPosition pos,
double dR );
bool setRadius ( double dR );
double getRadius ( );
bool setCenter ( VecPosition pos );
VecPosition getCenter ( );
double getCircumference ( ); // 获取周长
double getArea ( ); // 获取面积

// 判断点是否在圆内部
bool isInside ( VecPosition pos );
// 求两个圆的交点
int getIntersectionPoints ( Circle c,
VecPosition *p1,
VecPosition *p2 );
//求两个圆的相交面积
double getIntersectionArea ( Circle c );

private:
VecPosition m_posCenter; // 中点坐标
double m_dRadius; // 半径
};


class Rect
{
public:
Rect ( VecPosition pos, VecPosition pos2 );

void draw ( );

// 判断点是否在矩形内部
bool isInside ( VecPosition pos );

// get 和set 函数
void setRectanglePoints( VecPosition pos1,
VecPosition pos2 );
bool setPosLeftTop ( VecPosition pos );
VecPosition getPosLeftTop ( );
bool setPosRightBottom ( VecPosition pos );
VecPosition getPosRightBottom ( );

// 获取面积和周长
double getArea();
double getCircumference();

private:
VecPosition m_posLeftTop; // 矩形的左上角坐标
VecPosition m_posRightBottom; // 右下角坐标
};
...全文
125 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
derekrose 2014-05-01
  • 打赏
  • 举报
回复
给多少钱??
笑梦码侬生 2014-05-01
  • 打赏
  • 举报
回复
很容易, 你先好好看看书“继承类”还有虚函数。还有一点平面几何的知识。
baichi4141 2014-05-01
  • 打赏
  • 举报
回复
“请各位帮个忙,替我上几年班,工资打我卡上”
gz_qmc 2014-05-01
  • 打赏
  • 举报
回复
给多少钱?????????????????????????

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧