internal static void ToHVPoints(this RectPoint rectPoint, out HorizontalPoint horizontalPoint, out VerticalPoint verticalPoint) { horizontalPoint = HorizontalPoint.Left; verticalPoint = VerticalPoint.Top; switch (rectPoint) { case RectPoint.TopLeft: horizontalPoint = HorizontalPoint.Left; verticalPoint = VerticalPoint.Top; break; case RectPoint.TopRight: horizontalPoint = HorizontalPoint.Right; verticalPoint = VerticalPoint.Top; break; case RectPoint.BottomRight: horizontalPoint = HorizontalPoint.Right; verticalPoint = VerticalPoint.Bottom; break; case RectPoint.BottomLeft: horizontalPoint = HorizontalPoint.Left; verticalPoint = VerticalPoint.Bottom; break; case RectPoint.Center: break; default: throw new ArgumentOutOfRangeException(nameof(rectPoint)); } }
internal static RectPoint GetRectPoint(HorizontalPoint horizontal, VerticalPoint vertical) { if (vertical == VerticalPoint.Top) { switch (horizontal) { case HorizontalPoint.Right: return(RectPoint.TopRight); case HorizontalPoint.Left: return(RectPoint.TopLeft); } } if (vertical == VerticalPoint.Bottom) { switch (horizontal) { case HorizontalPoint.Right: return(RectPoint.BottomRight); case HorizontalPoint.Left: return(RectPoint.BottomLeft); } } throw new Exception("Invalid combination"); }
private async void Lidar_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { switch (e.PropertyName) { case nameof(Lidar.RunCollector) when Lidar.RunCollector == false: CalculateHorizontalPoints = false; break; case nameof(Lidar.RaiseNotificationForSelective) when Lidar.RaiseNotificationForSelective == false: AutoCalculateDirections = false; AutoCalculateLargestDistance = false; break; } if (e.PropertyName != nameof(Lidar.LastUpdate)) { return; } if (AutoCalculateDirections) { Task.Run(() => { float fwd = Lidar.Fwd; float left = Lidar.Left; float right = Lidar.Right; }); } if (AutoCalculateLargestDistance) { HorizontalPoint point = Lidar.LargestDistance; } if (CalculateHorizontalPoints) { float fromAngle = CenterForAnglesInRange - BeamOpeningForAnglesInRange / 2; float toAngle = CenterForAnglesInRange + BeamOpeningForAnglesInRange / 2; if (fromAngle < 0) { fromAngle += 360; } if (toAngle > 360) { fromAngle -= 360; } SelectedAngleRange = $"From {fromAngle} to {toAngle}"; HorizontalPointsInRange = await Task.Run(() => Lidar.GetHorizontalPointsInRange(fromAngle, toAngle, Lidar.Config.DefaultVerticalAngle)); } }
public HorizontalPoint Horizontal(float rotationYAngle) { HorizontalPoint m_horizontalPoint = HorizontalPoint.None; if (rotationYAngle >= 337.5f || rotationYAngle < 22.5f) { m_horizontalPoint = HorizontalPoint.North; } else if (rotationYAngle >= 22.5f && rotationYAngle < 67.5f) { m_horizontalPoint = HorizontalPoint.NorthEast; } else if (rotationYAngle >= 67.5f && rotationYAngle < 112.5f) { m_horizontalPoint = HorizontalPoint.East; } else if (rotationYAngle >= 112.5f && rotationYAngle < 157.5f) { m_horizontalPoint = HorizontalPoint.SouthEast; } else if (rotationYAngle >= 157.5f && rotationYAngle <= 202.5f) { m_horizontalPoint = HorizontalPoint.South; } else if (rotationYAngle >= 202.5f && rotationYAngle < 247.5f) { m_horizontalPoint = HorizontalPoint.SouthWest; } else if (rotationYAngle >= 247.5f && rotationYAngle < 292.5f) { m_horizontalPoint = HorizontalPoint.West; } else if (rotationYAngle >= 292.5f && rotationYAngle < 337.5f) { m_horizontalPoint = HorizontalPoint.NorthWest; } return(m_horizontalPoint); }
private void SightField(BlockType type) { m_yAngel = Player.transform.eulerAngles.y; m_xAngel = transform.eulerAngles.x; m_horizontalPoint = Horizontal(m_yAngel); m_verticalPoint = Vertical(m_xAngel); switch (type) { case BlockType.Ramp: break; case BlockType.Floor: break; case BlockType.Wall: break; } }
internal static HorizontalPoint Opposite(this HorizontalPoint point) { return(point == HorizontalPoint.Left ? HorizontalPoint.Right : HorizontalPoint.Left); }