前言
本文根据黑马程序员视频的教程,记录有关笔记
一、前期常识认知
点和圆的关系
①圆上:点到圆心的距离 == 半径
②圆内:点到圆心的距离 < 半径
③圆外:点到圆心的距离 > 半径
思路:(x1 - x2) ²+ (y1 - y2)² 和 m_R² 作比较
二、工程代码
1.工程结构图
2.源码
点和圆的关系.cpp代码如下(示例):
#include <iostream>
using namespace std;
#include "Circle.h"
#include "point.h"
//点和圆的关系案例
//点类
//class Point {
//public:
// //设置x
// void setX(int x) {
// m_x = x;
// }
//
// //获取x
// int getX(void) {
// return m_x;
// }
//
// //设置y
// void setY(int y) {
// m_y = y;
// }
//
// //获取y
// int getY(void) {
// return m_y;
// }
//
//private:
// int m_x;
// int m_y;
//};
圆类
//class Circle {
//public:
// //设置半径
// void setR(int r) {
// m_R = r;
// }
//
// //获取半径
// int getR(void) {
// return m_R;
// }
//
// //设置圆心
// void setCenter(Point center) {
// m_Center = center;
// }
//
// //获取圆心
// Point getCenter(void) {
// 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()) +
(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(void) {
//创建圆
Circle c;
Point center;
c.setR(10);
center.setX(10);
center.setY(0);
c.setCenter(center);
//创建点
Point p;
p.setX(10);
p.setY(10);
//判断关系
isInCircle(c, p);
system("pause");
return 0;
}
point.cpp代码如下(示例):
#include "point.h"
//设置x
void Point::setX(int x) {
m_x = x;
}
//获取x
int Point::getX(void) {
return m_x;
}
//设置y
void Point::setY(int y) {
m_y = y;
}
//获取y
int Point::getY(void) {
return m_y;
}
Circle.cpp代码如下(示例):
#include "Circle.h"
//设置半径
void Circle::setR(int r) {
m_R = r;
}
//获取半径
int Circle::getR(void) {
return m_R;
}
//设置圆心
void Circle::setCenter(Point center) {
m_Center = center;
}
//获取圆心
Point Circle::getCenter(void) {
return m_Center;
}
Circle.h代码如下(示例):
#pragma once
#include <iostream>
#include "point.h"
using namespace std;
//圆类
class Circle {
public:
//设置半径
void setR(int r);
//获取半径
int getR(void);
//设置圆心
void setCenter(Point center);
//获取圆心
Point getCenter(void);
private:
int m_R;//半径
Point m_Center;//圆心
};
point.h代码如下(示例):
#pragma once
#include <iostream>
using namespace std;
//点类
class Point {
public:
//设置x
void setX(int x);
//获取x
int getX(void);
//设置y
void setY(int y);
//获取y
int getY(void);
private:
int m_x;
int m_y;
};