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

Java 检查某个点是否存在于圆扇区内(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 和您的半径之间。

示例代码:

// Java program to check if
// a point lies inside a circle
// sector.
 
class GFG
{
static void checkPoint(int radius, int x, int y, float percent,
                                         float startAngle)
{
 
    // calculate endAngle
    float endAngle = 360/percent + startAngle;
  
    // Calculate polar co-ordinates
    double polarradius = Math.sqrt(x*x+y*y);
    double Angle = Math.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)
        System.out.print("Point"+"("+x+","+y+")"+
        " exist in the circle sector\n");
    else
        System.out.print("Point"+"("+x+","+y+")"+
        " exist in the circle sector\n");
}
 
// Driver Program to test above function
public static void main(String arg[])
{
    int radius = 8, x = 3, y = 4;
    float percent  = 12, startAngle = 0;
    checkPoint(radius, x, y, percent, startAngle);
}
}
 
// This code is contributed
// by Anant Agarwal. 

输出 : 

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

时间复杂度:  O(1)

辅助空间: O(1)

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

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

相关文章:

  • springBoot中自定义一个validation注解,实现指定枚举值校验
  • LINUX——例行性工作
  • 私有仓库 Harbor、GitLab
  • K8S使用--dry-run输出资源模版和兼容性测试
  • Django缓存框架API
  • 物理服务器紧急救援:CentOS系统密码重置全流程实战指南
  • 如何添加或删除极狐GitLab 项目成员?
  • JPress安装(Docker)
  • 如何在使用 docker-compose 命令时指定 COMPOSE_PROJECT_NAME ?
  • 概统期末复习--速成
  • 区块链交易所开发:开启数字交易新时代
  • TypeScript简介
  • LeetCode 热题 100 198. 打家劫舍
  • 【机器学习-线性回归-6】机器学习中的维度:从特征工程到降维艺术
  • Missashe考研日记-day33
  • 数字政府大模型应用方案
  • MySQL 8.4.5 源码编译安装指南
  • 国联股份卫多多与国术科技签署战略合作协议
  • 使用OpenCV 和Dlib 实现表情识别
  • AI量化解析:从暴跌5%到飙涨3%—非线性动力学模型重构黄金极端波动预测框架
  • 人工智能如何革新数据可视化领域?探索未来趋势
  • 调用七牛云对象存储,附工具类
  • 多层PCB板的地层分割技巧有哪些?
  • Pytorch 的模型保存
  • 数据结构(一)——线性表的顺序表示和实现
  • k8s术语之service
  • k8s pod request/limit 值不带单位会发生什么?
  • 浅谈 - GPTQ为啥按列量化
  • NGINX `ngx_http_browser_module` 深度解析与实战
  • 螺杆支撑座:数控机床高效稳定运行的关键支撑