练习案例:点和圆的关系

设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。

思路:

1)创建点类point.h和point.cpp

2)创建圆类circle.h和circle.cpp

3)点和圆的关系判断void isIncircle(Circle &c,Point &p)

点到圆心的距离 == 圆心 (点在圆上)

点到圆心的距离 < 圆心 (点在圆内)

点到圆心的距离 > 圆心 (点在圆外)

示例代码

我们将点类用point.cpp和point.h实现。将圆类用circle.cpp和circle.h实现。

点类头文件point.h

#pragma once

#include

using namespace std;

class Point

{

public:

//设置x坐标

void setX(int x);

//读取x坐标

int getX();

//设置y坐标

void setY(int y);

//读取y坐标

int getY();

private:

int m_x;

int m_y;

};

点类代码实现point.c

#include"point.h"

//设置x坐标

void Point::setX(int x)

{

m_x = x;

}

//读取x坐标

int Point::getX()

{

return m_x;

}

//设置y坐标

void Point::setY(int y)

{

m_y = y;

}

//读取y坐标

int Point::getY()

{

return m_y;

}

圆类头文件circle.h

#pragma once

#include

#include"point.h"

using namespace std;

class Circle

{

public:

//设置半径

void setR(int r);

//读取半径

int getR();

//设置圆心

void setCenter(Point center);

//获取圆心

Point getCenter();

private:

int m_R; //半径

//在类中可以让另一个类,作为本类中的成员

Point m_center; //圆心

};

圆类代码实现circle.cpp

#include"circle.h"

//设置半径

void Circle::setR(int r)

{

m_R = r;

}

//读取半径

int Circle::getR()

{

return m_R;

}

//设置圆心

void Circle::setCenter(Point center)

{

m_center = center;

}

//获取圆心

Point Circle::getCenter()

{

return m_center;

}

主文件点和圆的关系.cpp

#include

#include"circle.h"

#include"point.h"

using namespace std;

//点和圆的关系案例

//判断点和圆的关系

void isIncircle(Circle &c,Point &p)

{

//计算两点距离的平方

int dist =

(c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) +

(c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());

//计算半径的平方

int rDistance = c.getR() * c.getR();

//判断两点距离的平方和半径的平方的关系

if (dist == rDistance)

{

cout << "点在圆上" << endl;

}

else if (dist > rDistance)

{

cout << "点在圆外" << endl;

}

else

{

cout << "点在圆内" << endl;

}

}

int main()

{

//创建圆

Circle c1;

c1.setR(10);

Point center;

center.setX(10);

center.setY(0);

c1.setCenter(center);

//创建点

Point p1;

p1.setX(10);

p1.setY(9);

Point p2;

p2.setX(10);

p2.setY(10);

Point p3;

p3.setX(10);

p3.setY(11);

//判断关系

isIncircle(c1, p1);

isIncircle(c1, p2);

isIncircle(c1, p3);

system("pause");

return 0;

}

运行结果

我们设置了一个圆,圆心为(10,0),半径为10。 我们设置了三个点(10,9)(10,10)(10,11)。

点在圆内

点在圆上

点在圆外

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: