/// <summary> ///判断节点是否在态势区域内 /// </summary> /// <param name="judgeNode">节点</param> /// <returns>节点是否在态势区域内的布尔值</returns> public void JudgeIfNodeIsInArea(Terrain ter, ReceiveArea reArea) { bool flag1 = this.Position.X > reArea.OriginPoint.X && this.Position.X < reArea.OriginPoint.X + reArea.rxLength; bool flag2 = this.Position.Y > reArea.OriginPoint.Y && this.Position.Y < reArea.OriginPoint.Y + reArea.rxWidth; if (!this.IsInTer && this.Height == 0)//获取节点的离地高度 { this.Height = this.Position.GetTerrainClearance(ter); } if (flag1 && flag2 && this.Height <= 5) { this.IsReceiver = true; } }
public Point ray_cube6(RayInfo rayIn, ReceiveArea ra)//求与长方体的上面的交点; { double x = (rayIn.Origin.Z + ra.spacing - rayIn.Origin.Z) / rayIn.RayVector.c * rayIn.RayVector.a + rayIn.Origin.X; double y = (rayIn.Origin.Z + ra.spacing - rayIn.Origin.Z) / rayIn.RayVector.c * rayIn.RayVector.b + rayIn.Origin.Y; if (x >= ra.OriginPoint.X && x <= (ra.OriginPoint.X + ra.rxLength) && y > ra.OriginPoint.Y && y < (ra.OriginPoint.Y + ra.rxWidth)) { Point temp = new Point(x, y, ra.OriginPoint.Z + ra.spacing); return(temp); } else { return(null); } }
public Point ray_cube4(RayInfo rayIn, ReceiveArea ra)//求与长方体的右面的交点; { double y = (ra.OriginPoint.X + ra.rxLength - rayIn.Origin.X) / rayIn.RayVector.a * rayIn.RayVector.b + rayIn.Origin.Y; double z = (ra.OriginPoint.X + ra.rxLength - rayIn.Origin.X) / rayIn.RayVector.a * rayIn.RayVector.c + rayIn.Origin.Z; if (y > ra.OriginPoint.Y && y < (ra.OriginPoint.Y + ra.rxWidth) && z > ra.OriginPoint.Z && z < (ra.OriginPoint.Z + ra.spacing)) { Point temp = new Point(ra.OriginPoint.X + ra.rxLength, y, z); return(temp); } else { return(null); } }
public Point ray_cube2(RayInfo rayIn, ReceiveArea ra)//求与长方体的后面的交点; { double x = (ra.OriginPoint.Y + ra.rxWidth - rayIn.Origin.Y) / rayIn.RayVector.b * rayIn.RayVector.a + rayIn.Origin.X; double z = (ra.OriginPoint.Y + ra.rxWidth - rayIn.Origin.Y) / rayIn.RayVector.b * rayIn.RayVector.c + rayIn.Origin.Z; if (x >= ra.OriginPoint.X && x <= (ra.OriginPoint.X + ra.rxLength) && z >= ra.OriginPoint.Z && z <= (ra.OriginPoint.Z + ra.spacing)) { Point temp = new Point(x, ra.OriginPoint.Y + ra.rxWidth, z); return(temp); } else { return(null); } }