public DrawParameterModel(ObjectCollectionLayout objectCollectionLayout, DrawOrientation orientation, int centreX, int centreY, int orbitFactor) { ObjectCollectionLayout = objectCollectionLayout; Orientation = orientation; CentreX = centreX; CentreY = centreY; OrbitFactor = orbitFactor; }
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)); }
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); }
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); }