【封装案例】点和圆的关系

文章目录


前言

本篇主要是用C++实现一个判断点和圆关系的程序。

思路:已知点和圆心的坐标,通过比较两点间的距离和圆半径的大小,判断两者的关系(圆上,圆内,圆外)。


1、point.h文件

创建一个点类,并做相关声明

cpp 复制代码
#pragma once
#include<iostream>
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;
};

2、circle.h文件

创建一个圆类,并做相关声明

cpp 复制代码
#pragma once
#include<iostream>
using namespace std;
#include"point.h"

//圆类
class Circle
{
private:
	//半径
	int m_R;
	//在一个类中,可以让另一个类作为本来类中的成员
	//圆心
	Point m_Center;
public:
	//设置半径
	void setR(int r);
	
	//获取半径
	int getR();
	
	//设置圆心
	void setCenter(Point center);
	
	//获取圆心
	Point getgetCenter();
	
};

3、point.cpp文件

相关函数的实现(设置和获取点的坐标)

cpp 复制代码
#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;
}

4、circle.cpp文件

相关函数的实现(设置和获取半径及圆心的坐标)

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::getgetCenter()
{
	return m_Center;
}

5、主函数和全局函数

全局函数主要是判断点和圆的位置关系

cpp 复制代码
#include<iostream>
using namespace std;
#include<string>
#include"Circle.h"
#include"point.h"

//判断点和圆心的关系
void isInCircle(Circle &c,Point &p)
{
	//计算两点之间距离
	int distance = sqrt(pow(c.getgetCenter().getX() - p.getX(), 2) + pow(c.getgetCenter().getY() - p.getY(), 2));
	//判断关系
	if (distance > c.getR())
	{
		cout << "点在圆外" << endl;
	}
	else if (distance < c.getR())
	{
		cout << "点在圆内" << endl;
	}
	else
	{
		cout << "点在圆上" << endl;
	}
}

int main() {
	//创建圆
	Circle c;
	c.setR(10);
	Point center;
	center.setX(10);
	center.setY(0);
	c.setCenter(center);
	//创建点
	Point p;
	p.setX(10);
	p.setY(10);
	//判断关系
	isInCircle(c, p);

	system("pause");
	return 0;
}

6、测试

改变点的坐标或者圆的部分参数,判断两者的关系

1、点在圆上

2、点在圆内

3、点在圆外

相关推荐
aningxiaoxixi23 分钟前
Android 之 audiotrack
android
枷锁—sha26 分钟前
【DVWA系列】——CSRF——Medium详细教程
android·服务器·前端·web安全·网络安全·csrf
心情好的小球藻35 分钟前
Python应用进阶DAY9--类型注解Type Hinting
开发语言·python
惜.己1 小时前
使用python读取json数据,简单的处理成元组数组
开发语言·python·测试工具·json
Y4090011 小时前
C语言转Java语言,相同与相异之处
java·c语言·开发语言·笔记
Cao_Shixin攻城狮4 小时前
Flutter运行Android项目时显示java版本不兼容(Unsupported class file major version 65)的处理
android·java·flutter
古月-一个C++方向的小白6 小时前
C++11之lambda表达式与包装器
开发语言·c++
沐知全栈开发7 小时前
Eclipse 生成 jar 包
开发语言
呼啦啦呼啦啦啦啦啦啦7 小时前
利用pdfjs实现的pdf预览简单demo(包含翻页功能)
android·javascript·pdf
杭州杭州杭州8 小时前
Python笔记
开发语言·笔记·python