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

文章目录


前言

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

相关推荐
我是唐青枫4 分钟前
C#.NET serilog 详解
开发语言·c#·.net
小林C语言25 分钟前
11.9 C++对象指针
c++
oioihoii34 分钟前
C++11中的std::minmax与std::minmax_element:原理解析与实战
java·开发语言·c++
超龄超能程序猿35 分钟前
使用 Python 对本地图片进行图像分类
开发语言·人工智能·python·机器学习·分类·数据挖掘·scipy
wkj00139 分钟前
php中调用对象的方法可以使用array($object, ‘methodName‘)?
android·开发语言·php
wkj0011 小时前
php use 命名空间与 spl_autoload_register的关系
android·php·android studio
fatiaozhang95271 小时前
浪潮CD1000-移动云电脑-RK3528芯片-2+32G-开启ADB ROOT破解教程
android·adb·电视盒子·机顶盒rom·魔百盒刷机·外贸盒子
hudawei9961 小时前
kotlin中withContext,async,launch几种异步的区别
android·开发语言·kotlin
消失的旧时光-19431 小时前
Kotlin 常用语法糖完整整理
android·开发语言·kotlin
每次的天空1 小时前
Android-重学kotlin(协程源码第一阶段)新学习总结
开发语言·学习·kotlin