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

文章目录


前言

本篇主要是用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、点在圆外

相关推荐
QT 小鲜肉17 小时前
【C++基础与提高】第二章:C++数据类型系统——构建程序的基础砖石
开发语言·c++·笔记
lsx20240618 小时前
HTML5 新元素
开发语言
先知后行。20 小时前
C/C++八股文
java·开发语言
程序员buddha21 小时前
C语言数组详解
c语言·开发语言·算法
寻找华年的锦瑟21 小时前
Qt-视频播放器
开发语言·qt
又是忙碌的一天21 小时前
Java IO流
java·开发语言
fish_study_csdn21 小时前
Python内存管理机制
开发语言·python·c python
LSL666_21 小时前
5 Repository 层接口
android·运维·elasticsearch·jenkins·repository
卡提西亚1 天前
C++笔记-25-函数模板
c++·笔记·算法
ghie90901 天前
MATLAB/Simulink水箱水位控制系统实现
开发语言·算法·matlab