第十二周项目4——(6)

来源:互联网 发布:mac适合编程吗 编辑:程序博客网 时间:2024/05/22 00:34
/*  *Copyright (c) 2014,烟台大学计算机学院void change(int a[8][8]);  *All rights reserved.  *文件名称:main.cpp  *作者:苏强  *完成日期:2015年5月25日  *版本号:v1.0  *  *问题描述:建立点类Point和派生圆类circle,实现定点和圆心输出的直线与圆的交点*/#include <iostream>#include<cmath>using namespace std;class Circle;class Point{protected:    double x,y;public:    Point(double X=0,double Y=0):x(X),y(Y){}    friend ostream &operator <<(ostream &out,Point &p);    friend void crossover_point(Point &p,Circle &c,Point &p1,Point &p2);};ostream &operator <<(ostream &out,Point &p){    out<<"("<<p.x<<","<<p.y<<")";    return out;}class Circle:virtual public Point{protected:    double r;public:    Circle(double X=0,double Y=0 ,double R=0):Point(X,Y),r(R){}    friend ostream &operator <<(ostream &out,Circle &c);    friend void crossover_point(Point &p,Circle &c,Point &p1,Point &p2);};ostream &operator <<(ostream &out,Circle &c){    out<<"圆心:("<<c.x<<","<<c.y<<")   半径:"<<c.r<<endl;    return out;}void crossover_point(Point &p,Circle &c,Point &p1,Point &p2){    p1.x=c.x+sqrt((c.r*c.r)/(1+((c.y-p.y)*(c.y=p.y)/((c.x-p.x)*(c.x-p.x)))));    p1.y=(c.y-p.y)*(p1.x-p.x)/(c.x-p.x)+p.y;    p2.x=c.x-sqrt((c.r*c.r)/(1+((c.y-p.y)*(c.y=p.y)/((c.x-p.x)*(c.x-p.x)))));    p2.y=(c.y-p.y)*(p2.x-p.x)/(c.x-p.x)+p.y;}int main(){    Circle c(3,1,4);    Point p(1,1),p1,p2;    crossover_point(p,c,p1,p2);    cout<<"点p:"<<p;    cout<<"与圆c:"<<c<<endl;    cout<<"的圆心连成的直线与圆的交点是:"<<p1<<"  "<<p2<<endl;}


 

 

0 0