C# 选择边界中的下一个点
我正在尝试对随机部署的点集应用绑定霍尔算法。C# 选择边界中的下一个点,c#,C#,我正在尝试对随机部署的点集应用绑定霍尔算法。 我根据上一个点和当前点的邻域点之间的角度来选择角度最小的下一个点。 我要求的是,在某些情况下,边界停止生成任何点,实际上我已经对代码进行了多次调试,无法找出问题所在 案例图片和代码如下所示 ArrayList angles=new ArrayList(); 对于(int s=0;s
我根据上一个点和当前点的邻域点之间的角度来选择角度最小的下一个点。 我要求的是,在某些情况下,边界停止生成任何点,实际上我已经对代码进行了多次调试,无法找出问题所在 案例图片和代码如下所示
ArrayList angles=new ArrayList();
对于(int s=0;s
ArrayList angles = new ArrayList();
for (int s = 0; s < node.SensorNeighbors.Count; s++)
{
Node n = node.SensorNeighbors[s];
if (backboneNodes.Count != 1) // backboneNode is array hase nodes in boundary
{
Node previous = backboneNodes[backboneNodes.Count - 2];
Double Angle = Math.Atan2(previous.y - node.y, previous.x - node.x) - Math.Atan2(n.y - node.y, n.x - node.x);
angles.Add(Angle);
}
if (backboneNodes.Count == 1)
{
Double Angle = Math.Atan2(520 - node.y, node.x - node.x) - Math.Atan2(n.y - node.y, n.x - node.x);
angles.Add(Angle);
}
}
int index = 0;
double minAngle = int.MaxValue;
for (int s = 0; s < angles.Count; s++)
{
if ((double)angles[s] < minAngle)
{
minAngle = (double)angles[s];
index = angles.IndexOf(minAngle);
}
}
Node Nnode = node.SensorNeighbors[index];
int iRadius = (int)Math.Sqrt(Math.Pow(node.x - Nnode.x, 2) + Math.Pow(node.y - Nnode.y, 2));
node.aConnections.Add(node, Nnode, (int)(fTransmissionCost * iRadius / iTransmissionRadius), iReceiveCost, iTransmitterDelay);
node = Nnode;