public DrawParameterModel(ObjectCollectionLayout objectCollectionLayout, DrawOrientation orientation, int centreX, int centreY, int orbitFactor)
 {
     ObjectCollectionLayout = objectCollectionLayout;
     Orientation            = orientation;
     CentreX     = centreX;
     CentreY     = centreY;
     OrbitFactor = orbitFactor;
 }
Beispiel #2
0
        private static int GetCentreValue(int canvasCentre, LocationModel location, DrawOrientation neutralOrientation, DrawParameterModel drawParameters)
        {
            if (drawParameters.ObjectCollectionLayout == ObjectCollectionLayout.Position)
            {
                return(GetCentreValuePosition(canvasCentre, location, neutralOrientation, drawParameters.OrbitFactor));
            }

            return(GetCentreValueDistance(canvasCentre, location, neutralOrientation, drawParameters));
        }
Beispiel #3
0
        private static int GetCentreValuePosition(int canvasCentre, LocationModel location, DrawOrientation neutralOrientation, int orbitFactor)
        {
            var centreX = location?.X ?? 0;
            var centreY = location?.Y ?? 0;

            var absCentreX = Math.Abs(centreX);
            var absCentreY = Math.Abs(centreY);

            var absCentreTotal = absCentreX + absCentreY;

            var factorCentre       = absCentreX / absCentreTotal;
            var locationCoordinate = centreX;

            if (neutralOrientation == DrawOrientation.Horizontal)
            {
                factorCentre       = absCentreY / absCentreTotal;
                locationCoordinate = centreY;
            }

            var factoredHalfSunSize = (int)Math.Floor(SunRadius * factorCentre);

            var centre = (int)Math.Floor(locationCoordinate * orbitFactor);

            if (centre > 0)
            {
                centre += factoredHalfSunSize;
            }

            if (centre < 0)
            {
                centre -= factoredHalfSunSize;
            }

            centre += canvasCentre;

            return(centre);
        }
Beispiel #4
0
        private static int GetCentreValueDistance(int canvasCentre, LocationModel location, DrawOrientation neutralOrientation, DrawParameterModel drawParameters)
        {
            if (drawParameters.Orientation == neutralOrientation)
            {
                return(canvasCentre);
            }

            var orbitRadius = (int)Math.Ceiling(location?.GetOrbitRadius() ?? 0 * drawParameters.OrbitFactor);

            if (orbitRadius > 0)
            {
                orbitRadius += SunRadius;
            }

            if (neutralOrientation == DrawOrientation.Vertical)
            {
                return(canvasCentre - orbitRadius);
            }

            return(canvasCentre + orbitRadius);
        }