封装案例:点和圆的位置关系

本文详细介绍了如何使用C++编程判断一个点与圆的位置关系,通过计算点到圆心的距离并与圆的半径比较,区分点在圆上、内、外的情况,并提供了自定义点和圆类的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拿到问题先做分析:

1.点和圆的位置关系有几种:点在圆上、点在圆内、点在圆外

2.如何判断点在圆的什么位置:用点到圆心的距离D圆的半径R做对比

                                 D=R:点在圆上

                                 D>R:点在圆外

                                 D<R:点在圆内

3.点到圆心的距离D用代码怎么表示:两点之间距离公式

4.C++表示根号不方便怎么做:等式左右两边同时平方去根号

注意:圆心需要用X,Y坐标表示,所以先自定义一个数据类型point类,里面放X坐标和Y坐标给圆心用。

思维导图梳理

 

 代码:

#include <iostream>
using namespace std;
//点类 
class point		//自定义 点类 数据类型 
{
public:
	//设置X坐标
	void setX(int X)
	{
		m_X=X;
	 } 
	//获取X坐标
	int getX()
	{
		return m_X;
	}
	//设置Y坐标
	void setY(int Y)
	{
		m_Y=Y;
	 } 
	//获取Y坐标
	int getY()
	{
		return m_Y;
	}  
private:
	int m_X;
	int m_Y;
}; 
//圆类
class circle
{
public:
	//设置半径
	void setR(int R)
	{
		m_R=R;
	 } 
	//获取半径
	int getR()
	{
		return m_R; 
	 } 
	//设置圆心
	void setcenter(point center)
	{
		m_center=center;
	 } 
	//获取圆心  
	point getcenter()
	{
		return m_center;
	}
private:
	int m_R;			//半径 
	point m_center;   	//圆心 
 };
  
//判断点和圆的关系(利用全局函数)
void isincircle(circle &c,point &p)
{
	//计算两点之间距离的平方
	int distance=
	(c.getcenter().getX()-p.getX())*(c.getcenter().getX()-p.getX())+	//圆的圆心的X坐标 
	(c.getcenter().getY()-p.getY())*(c.getcenter().getY()-p.getY()); 
	//计算半径的平方 
	int Rdistance=c.getR()*c.getR(); 
	//判断两点之间距离和半径关系
	if(distance=Rdistance)
	{
		cout<<"点在圆上"<<endl; 
	 }
	 else if(distance>Rdistance)
	 {
	 	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");
 } 

运行:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值