6_3平面坐标点类

来源:互联网 发布:js 插件开发 编辑:程序博客网 时间:2024/05/17 23:26
////  main.cpp//  6_3.cpp////  Created by 纪 子龙 on 13-4-10.//  Copyright (c) 2013年 纪 子龙. All rights reserved.//#include<iostream>#include<cmath>class CPoint{private:double x;  // 横坐标double y;  // 纵坐标public:CPoint(double xx=0,double yy=0);double Distance(CPoint p) const;   // 两点之间的距离(一点是当前点,另一点为参数p)double Distance0() const;          // 到原点的距离CPoint SymmetricAxis(char style)const;//style取'x','y'和'o'分别表示按x轴, y轴, 原点对称void input();  //以x,y 形式输入坐标点void output(); //以(x,y) 形式输出坐标点};CPoint::CPoint(double xx,double yy){    x=xx;    y=yy;}void CPoint::input(){    std::cout<<"pelease input x,y"<<std::endl;    std::cin>>x>>y;    }void CPoint::output(){    std::cout<<"("<<x<<","<<y<<")"<<std::endl;}double CPoint::Distance(CPoint p) const//此处是一个常成员函数{    double d;    d=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));    return d;}double CPoint::Distance0() const{    double d;    d=sqrt(x*x+y*y);    return d;}CPoint CPoint::SymmetricAxis(char style)const{    CPoint p;    p.x=x;    p.y=y;//该处也可用复制构造函数,要写作p(*this)    switch (style)    {        case 'x':            p.y=-y;        break;            case 'y':            p.x=-x;            break;            case 'o':            p.x=-x;            p.y=-y;            break;        default:            break;    }    return p;}int main( ){    double distance;    CPoint a,b,p;    std::cout<<"请输入点a坐标";    a.input();    std::cout<<"请输入点b坐标";    b.input();    distance=a.Distance(b);    std::cout<<"两点的距离为:"<<distance<<std::endl;    distance=a.Distance0();    std::cout<<"a到原点的距离为:"<<distance<<std::endl;    p=a.SymmetricAxis('x');    std::cout<<"a关于x轴的对称点为:";    p.output();    p=a.SymmetricAxis('y');    std::cout<<"a关于y轴的对称点为:";    p.output(); p=a.SymmetricAxis('o');    std::cout<<"a关于原点的对称点为:";    p.output();    return 0;  }运行结果: