当前位置: 首页 > news >正文

C++ 检查某个点是否存在于圆扇区内(Check whether a point exists in circle sector or not)

我们有一个以原点 (0, 0) 为中心的圆。作为输入,我们给出了圆扇区的起始角度和圆扇区的大小(以百分比表示)。 

例子: 

输入:半径 = 8
         起始角 = 0
         百分比 = 12 
         x = 3 y = 4
         
输出:点 (3, 4) 位于圆
         扇区内

输入:半径 = 12
        起始角 = 45
        百分比 = 25   
        x = 3 y = 4
        
输出:点 (3, 4) 不位于
         圆扇区内

在此图像中,起始角度为 0 度,半径为 r,假设彩色区域百分比为 12%,则我们计算结束角度为360/百分比 + 起始角度。

为了确定点 (x, y) 是否存在于圆扇区(以原点为中心)内,我们需要找到该点的极坐标,然后执行以下步骤:

    1、使用这个将 x, y 转换为极坐标角度 = atan(y/x); 半径 = sqrt(x * x + y * y);

    2、那么角度必须介于 StartingAngle(起始角) 和 EndingAngle(终止角) 之间,并且半径必须介于 0 和您的半径之间。

示例代码:

// C++ program to check if a point lies inside a circle
// sector.
#include<bits/stdc++.h>
using namespace std;
 
void checkPoint(int radius, int x, int y, float percent,
                                         float startAngle)
{
    // calculate endAngle
    float endAngle = 360/percent + startAngle;
 
    // Calculate polar co-ordinates
    float polarradius = sqrt(x*x+y*y);
    float Angle = atan(y/x);
 
    // Check whether polarradius is less then radius of circle
    // or not and Angle is between startAngle and endAngle
    // or not
    if (Angle>=startAngle && Angle<=endAngle && polarradius<radius)
        printf("Point (%d, %d) exist in the circle sector\n", x, y);
    else
        printf("Point (%d, %d) does not exist in the circle sector\n",
                                                              x, y);
}
 
// Driver code
int main()
{
    int radius = 8, x = 3, y = 4;
    float percent  = 12, startAngle = 0;
    checkPoint(radius, x, y, percent, startAngle);
    return 0;
}

输出 : 

点(3,4)位于圆扇区内

时间复杂度:  O(1)

辅助空间: O(1)

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。 

http://www.xdnf.cn/news/290881.html

相关文章:

  • 2025流感疫苗指南+卫健委诊疗方案|高危人群防护+并发症处理 慢性肾脏病饮食指南2025卫健委版|低盐低磷食谱+中医调理+PDF 网盘下载 pdf下载
  • Scala day6(Class,field,Single Object)
  • EPSG:3857 和 EPSG:4326 的区别
  • 掌纹图像识别:解锁人类掌纹/生物识别的未来——技术解析与前沿数据集探索
  • 2025系统架构师---论软件的设计模式论文
  • Java按字节长度截取字符串指南
  • JVM——Java对象的内存布局
  • Hive安装与配置教程
  • 详讲viewer查看器
  • Astro Canvas 数据中心→设备一览大屏操作指南
  • 基于 HTML5 的贪吃蛇小游戏实现
  • Oracle数据库从入门到掌握基础应用能力
  • 16. Qt系统相关:事件、定时器
  • 金融的本质是智融、融资的实质是融智、投资的关键是投智,颠覆传统金融学的物质资本中心论,构建了以智力资本为核心的新范式
  • 启发式算法-禁忌搜索算法
  • Python学习之路(七)-绘画and动画
  • 使用 JavaScript 实现数据导出为 Excel 和 CSV 文件
  • Ultra7-265K 和 技嘉Z890M-AORUS-ELITE-WIFI7主板 简单开箱测评
  • 《Python星球日记》第29天:Flask进阶
  • Unity-Shader详解-其四
  • python计算shp中每个区域的面积
  • Linux 怎么使用局域网内电脑的网络访问外部
  • android-ndk开发(6): 查看反汇编
  • 《算法导论(第4版)》阅读笔记:p7-p8
  • 售前赢单评分是越权吗?
  • 第二章-猜数游戏
  • 数据集-目标检测系列- 牙刷 检测数据集 toothbrush >> DataBall
  • 分析strtol(),strtoul()和strtod()三个函数的功能
  • 字符串哈希专题
  • 架构进阶:什么是数据架构,如何理解数据架构?(华为)