Ejemplo n.º 1
0
        /// <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;
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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);
            }
        }