检查圆扇区中是否存在点。
原文:https://www . geesforgeks . org/check-point-exists-circle-sector-not/
我们有一个以原点(0,0)为中心的圆。作为输入,我们给出圆扇形的起始角度和圆扇形的大小(百分比)。
示例:
Input : Radius = 8
StartAngle = 0
Percentage = 12
x = 3 y = 4
Output : Point (3, 4) exists in the circle
sector
Input : Radius = 12
Startangle = 45
Percentage = 25
x = 3 y = 4
Output : Point (3, 4) does not exist in
the circle sector
资料来源:wikibooks.org
在此图像中,起始角度为 0 度,半径为 r,假设着色区域的百分比为 12%,那么我们计算终止角度为360/百分比+起始角度。
为了找到一个点(x,y)是否存在于一个圆扇形(以原点为中心)中,我们找到该点的极坐标,然后执行以下步骤:
- 使用此 角度= atan(y/x)将 x,y 转换为极坐标;radius = sqrt(x * x+y * y);
- 那么角度必须介于起点角度和终点角度之间,半径必须介于 0 和您的半径之间。
C++
// 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;
}
Java 语言(一种计算机语言,尤用于创建网站)
// 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.
Python 3
# Python3 program to check if a point
# lies inside a circle sector.
import math
def checkPoint(radius, x, y, percent, startAngle):
# calculate endAngle
endAngle = 360 / percent + startAngle
# Calculate polar co-ordinates
polarradius = math.sqrt(x * x + y * y)
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 and Angle <= endAngle
and polarradius < radius):
print("Point (", x, ",", y, ") "
"exist in the circle sector")
else:
print("Point (", x, ",", y, ") "
"does not exist in the circle sector")
# Driver code
radius, x, y = 8, 3, 4
percent, startAngle = 12, 0
checkPoint(radius, x, y, percent, startAngle)
# This code is contributed by
# Smitha Dinesh Semwal
C
// C# program to check if a point lies
// inside a circle sector.
using System.IO;
using System;
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
float polarradius =
(float)Math.Sqrt(x * x + y * y);
float Angle = (float)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)
Console.Write("Point ({0}, {1}) exist in "
+ "the circle sector", x, y);
else
Console.Write("Point ({0}, {1}) does not "
+ "exist in the circle sector", x, y);
}
// Driver code
public static void Main()
{
int radius = 8, x = 3, y = 4;
float percent = 12, startAngle = 0;
checkPoint(radius, x, y, percent, startAngle);
}
}
// This code is contributed by Smitha Dinesh Semwal
java 描述语言
<script>
// Javascript program to check if
// a point lies inside a circle
// sector.
function checkPoint(radius, x, y, percent, startAngle)
{
// Calculate endAngle
let endAngle = 360 / percent + startAngle;
// Calculate polar co-ordinates
let polarradius = Math.sqrt(x * x + y * y);
let 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)
document.write("Point" + "(" + x +
"," + y + ")" +
" exist in the circle sector\n");
else
document.write("Point" + "(" + x +
"," + y + ")" +
" exist in the circle sector\n");
}
// Driver code
let radius = 8, x = 3, y = 4;
let percent = 12, startAngle = 0;
checkPoint(radius, x, y, percent, startAngle);
// This code is contributed by splevel62
</script>
输出:
Point(3, 4) exists in the circle sector
时间复杂度= 0(1)
本文由尼泰什·库马尔供稿。如果你喜欢 GeeksforGeeks 并想投稿,你也可以使用contribute.geeksforgeeks.org写一篇文章或者把你的文章邮寄到 contribute@geeksforgeeks.org。看到你的文章出现在极客博客主页上,帮助其他极客。 如果你发现任何不正确的地方,或者你想分享更多关于上面讨论的话题的信息,请写评论。
版权属于:月萌API www.moonapi.com,转载请注明出处