• C++项目案例圆和点的关系 (涉及知识点:头文件定义类,cpp文件实现类,类和作用域,linux编译运行c++项目)


    一.项目描述

    在这里插入图片描述
    点与圆有三种关系

    点在圆外
    点在圆上
    点在圆内
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    计算点到圆心的距离就能判断点在圆的哪个地方。
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    二.项目结构

    在这里插入图片描述

    三.include文件

    3.1 Circle类的声明

    Circle.h

    // 防止头文件重复包含
    #pragma once
    // #include
    #include "Point.h"
    using namespace std;
    
    class Circle
    {
    public:
        // 设置半径
        void setR(int r);
    
        //获取半径
        int getR();
    
        //设置圆心
        void setCenter(Point center);
    
        Point getCenter();
    
    private:
        int m_R; //半径
        Point m_Center; //圆心
    };
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    3.2 Point类的声明

    Point.h

    #pragma once
    #include
    using namespace std;
    
    class Point
    {
    public:
        // 设置x
        void setX(int x);
        void setY(int y);
        
        // 获取y
        int getX();
        int getY();
        
    private:
        int m_X;
        int m_Y;
    };
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    四.src文件

    4.1 Circle类的定义

    Circle.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::getCenter()
    {
        return m_Center;
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    4.2 Point类的定义

    Point.cpp

    #include "Point.h"
    
    void Point::setX(int x)
    {
        m_X = x;
    }
    void Point::setY(int y)
    {
        m_Y = y;
    }
    
    // 获取y
    int Point::getX()
    {
        return m_X;
    }
    
    int Point::getY()
    {
        return m_Y;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    五.main.cpp

    #include
    
    using namespace std;
    #include "Circle.h"
    #include "Point.h"
    
    
    // 判断点和圆的关系
    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()
    {
        // 创建圆
        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);
        
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
  • 相关阅读:
    【LinuxC】时间、时区,相关命令、函数
    opencv旋转图像
    debian 添加开机启动项
    番外篇-CSS3新增特性
    【D01】Django中实现带进度条的倒计时功能(简易版)
    OpenVINO 2023.0 实战七:OpenVINO部署PaddleOCR v4模型
    Linux内核的基础设施:工作队列、等待队列
    Leetcode 450. 删除二叉搜索树中的节点
    如何使用WinDbg查找蓝屏原因
    Pinely Round 1 (Div. 1 + Div. 2)
  • 原文地址:https://blog.csdn.net/qq_42864343/article/details/134478360