您现在的位置是:首页 > 正文

C++判断一个点和一个圆的关系(点在圆内、点在圆上、点在圆外)

2024-04-01 00:03:39阅读 2
#include <iostream>
using namespace std;

#define IN_Circle 1
#define ON_Circle 2
#define OUT_Circle 3

class Point
{
	public:
		void SetX(float x)
		{
			p_x = x;
		}
		void SetY(float y)
		{
			p_y = y;
		}
		float GetX()
		{
			return p_x;
		}
		float GetY()
		{
			return p_y;
		}
	private:
		float p_x;
		float p_y;
};
class Circle
{
	public:
		void SetC_R(float r)
		{
			//判断圆的半径是否大于0
			if(r < 0.0f)
			{
				cout << "srt r failed:(r > 0.0f)" << endl;
				c_r = 0.0f;
			}
			else
			{
				c_r = r;
			}
		}
		float GetC_R()
		{
			return c_r;
		}
		//判断点和圆的关系
		int Point_Circle(Point p)
		{
			float distance = (c_x - p.GetX())*(c_x - p.GetX()) + (c_y - p.GetY())*(c_y - p.GetY());//求点到圆心的距离的平方
			float res = distance - c_r*c_r;//判断距离的平方与圆的半径的平方的大小
			if(res > 0)
			{
				return OUT_Circle;
			}
			else if(res < 0)
			{
				return IN_Circle;
			}
			else 
			{
				return ON_Circle;
			}
		}
		void SetC_X(float x)
		{
			c_x = x;
		}
		void SetC_Y(float y)
		{
			c_y = y;
		}
		float GetC_X()
		{
			return c_x;
		}
		float GetC_Y()
		{
			return c_y;
		}

	private:
		float c_r;
		float c_x;
		float c_y;
		//Point center;
};
int main(int argc, char *argv[])
{
	Circle c;
	float c_x,c_y,c_r;
	cout << "请设置圆的横坐标:";
	cin >> c_x;
	cout << "请设置圆的纵坐标:";
	cin >> c_y;
	cout << "请设置圆的半径:";
	cin >> c_r;
	c.SetC_X(c_x);//设置圆的横坐标
	c.SetC_Y(c_y);//设置圆的纵坐标
	c.SetC_R(c_r);//设置圆的半径

	Point p;
	float p_x,p_y;
	cout << "请设置点的横坐标:";
	cin >> p_x;
	cout << "请设置点的纵坐标:";
	cin >> p_y;
	p.SetX(p_x);//设置点的横坐标
	p.SetY(p_y);//设置点的纵坐标

	if(c.Point_Circle(p) == IN_Circle)
	{
		cout << "点在圆内!" << endl;
	}
	else if(c.Point_Circle(p) == ON_Circle)
	{
		cout << "点在圆上!" << endl;
	}
	else if(c.Point_Circle(p) == OUT_Circle)
	{
		cout << "点在圆外!" << endl;
	}
	return 0;
}

网站文章

  • 输入手机号码自动填充空格 变成3-4-4格式

    电话号码3-4-4格式实现方式在最近的开发中遇到将电话号码展示成3-4-4格式的需求(如:132 2222 3333这样子),乍一看这个要求挺简单的,因为只需要在满足长度的字符串固定位置加上相应的空格...

    2024-04-01 00:03:34
  • springboot生鲜交易系统springboot46

    springboot生鲜交易系统springboot46

    剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包括软件架构模式、整体功能模块、数据库设...

    2024-04-01 00:03:26
  • 字节初期,张一鸣是如何思考的?

    转载:字节初期,张一鸣是如何思考的?这几天抽空把张一鸣的所有微博看了一遍,发现 2010 年的微博最好,就是他 30 岁左右的时候,那时候刚创业没多久,在微博上认真分享自己的思考和观点。到了 2012...

    2024-04-01 00:03:00
  • AI玩Flappy Bird│基于DQN的机器学习实例【完结】

    AI玩Flappy Bird│基于DQN的机器学习实例【完结】

    前言Flappy Bird简介《Flappy Bird》是一款由来自越南的独立游戏开发者Dong Nguyen所开发的作品,游戏于2013年5月24日上线,并在2014年2月突然暴红。2014年2月,...

    2024-04-01 00:02:53
  • 一、计算机导论绪论

    一、计算机导论绪论

    1、图灵模型 图灵在1937年提出一个通用计算设备的设想:所有的计算都可能在一种特殊的机器上执行。其将该模型建立在人们进行计算过程的行为上,并将这些行为抽象到用于计算的机器模型中。 图灵模型:可编...

    2024-04-01 00:02:45
  • mybatis-plus用法(二)

    mybatis-plus用法(二)

    条件构造器中提供了多个方法用于构造SQL语句中的WHERE条件,而其子类额外提供了select方法,可以只选取特定的列,子类额外提供了set方法,用于设置SQL中的SET语句。除了普通的Wrapper...

    2024-04-01 00:02:36
  • 最早计算机是用来进行,最早的计算机是用来进行

    早期的计算机是用来进行军事上枪炮的弹道计算和火力表的测试的,计算机俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。计算机是能够按照程序运行,自动、...

    2024-04-01 00:02:10
  • html5 crop,Automatically Crop HTML5 canvas to contents

    Let's say this is my canvas, with an evil-looking face drawn on it. I want to use toDataURL() to ex...

    2024-04-01 00:02:03
  • Codeforces 687C The Values You Can Make DP

    题意:全集A为n个a[i],若有某个集合B其和为k,则B的任意一个子集C定义其元素之和x为合法n,k,c[i]设dp[i][j][k] 表示前i个数能凑出子集和为j,和为j的集合又有子集和为k考虑第i个数是否加入,加入到集合j时,又分是否加入集合j的子集.dp[i][j][k]|=dp[i-1][j][k]|dp[i-1][j-a[i][k]|dp[i-1][j-a[i]][k-a

    2024-04-01 00:01:54
  • 俄亥俄州立大学计算机专业排名,俄亥俄州立大学哥伦布分校计算机科学专业排名第30(2020年USNEWS美国排名)...

    俄亥俄州立大学计算机科学与工程专业研究生阶段开设有以下学位项目,分别是:计算机科学与工程硕士:为期1.5-2年,根据是否撰写论文,设有以下两种课程设置,分别是:Research Track:也即研究方...

    2024-04-01 00:01:28