C# 从圆的每个部分检查
我想把圆的数目分成3部分,并从每个部分检查它是否有点。。这里有代码,但我不知道如何检查C# 从圆的每个部分检查,c#,C#,我想把圆的数目分成3部分,并从每个部分检查它是否有点。。这里有代码,但我不知道如何检查 int[] x = new int[3]; int[] y = new int[3]; for (int p = 0; p < Points.Count; p++ ) { Point po =(Point)points[p]; for (int i = 1; i <= 3;i++ ) { double angle = i * (360 / 3);
int[] x = new int[3];
int[] y = new int[3];
for (int p = 0; p < Points.Count; p++ )
{
Point po =(Point)points[p];
for (int i = 1; i <= 3;i++ )
{
double angle = i * (360 / 3);
x[i] = (int)(po.x + iTransmissionRadius * Math.Cos(convertToRadians(angle)));
y[i] = (int)(po.y + iTransmissionRadius * Math.Sin(convertToRadians(angle)));
}
}
int[]x=新的int[3];
int[]y=新的int[3];
对于(int p=0;p 对于(inti=1;i这就是你想要的吗
class Program
{
static Random rnd=new Random();
static void Main(string[] args)
{
var points=new List<Point>();
for(int i=0; i<100; i++)
{
points.Add(new Point(rnd.Next(100), rnd.Next(100)));
}
int iTransmissionRadius=6;
var neighbors=FindClosestPoints(points).ToArray();
// count = 100
var has_neighbors_within_radius=neighbors.Zip(points, (A, B) => AreWithinRadius(A,B,iTransmissionRadius)).ToArray();
// true or false if there is neighbor closer than radius
}
static double DistanceBetweenPoints(Point A, Point B)
{
return Math.Sqrt((A.X-B.X)*(A.X-B.X)+(A.Y-B.Y)*(A.Y-B.Y));
}
static bool AreWithinRadius(Point A, Point B, int radius)
{
return DistanceBetweenPoints(A,B)<=radius;
}
static IEnumerable<Point> FindClosestPoints(IEnumerable<Point> points)
{
return points.Select((A) =>
{
var list=points.ToArray();
Array.Sort(list, (B,C)=> DistanceBetweenPoints(A,B).CompareTo(DistanceBetweenPoints(A,C)));
return list.Skip(1).FirstOrDefault();
});
}
}
类程序
{
静态随机rnd=新随机();
静态void Main(字符串[]参数)
{
var points=新列表();
对于(int i=0;i在半径(A,B,i传输半径)内)ToArray();
//如果存在比半径更近的邻居,则为true或false
}
点之间的静态双距离(点A、点B)
{
返回数学Sqrt((A.X-B.X)*(A.X-B.X)+(A.Y-B.Y)*(A.Y-B.Y));
}
静态布尔值不在半径内(点A、点B、整数半径)
{
返回点之间的距离(A,B)
{
var list=points.ToArray();
Sort(list,(B,C)=>DistanceBetweenPoints(A,B).CompareTo(DistanceBetweenPoints(A,C));
返回列表。跳过(1).FirstOrDefault();
});
}
}
可能的重复我建议您保留float
坐标,而不是转换为int
。我不明白您在检查什么。“并检查每个部分是否有点”。每个部分由点x
和y
定义。