/// <summary>Get's possible values of NOT rotated width of all element that have therer rotated width less that availableWidth /// </summary> /// <param name="availableWidth">the highest possible width of rotated element.</param> /// <returns>interval that specify biggest and smallest possible values of NOT rotated width of such elements. /// </returns> public virtual RotationMinMaxWidth.WidthFunction.Interval GetValidOriginalWidths(double availableWidth) { double minWidth; double maxWidth; if (cos == 0) { minWidth = area * sin / availableWidth; maxWidth = MinMaxWidthUtils.GetInfWidth(); } else { if (sin == 0) { minWidth = 0; maxWidth = availableWidth / cos; } else { double D = availableWidth * availableWidth - 4 * area * sin * cos; if (D < 0) { return(null); } minWidth = (availableWidth - Math.Sqrt(D)) / (2 * cos); maxWidth = (availableWidth + Math.Sqrt(D)) / (2 * cos); } } return(new RotationMinMaxWidth.WidthFunction.Interval(minWidth, maxWidth)); }
private static double CorrectSinCos(double value) { if (MinMaxWidthUtils.IsEqual(value, 0)) { return(0); } else { if (MinMaxWidthUtils.IsEqual(value, 1)) { return(1); } } return(value); }
public virtual float GetMaxWidth() { return(Math.Min(childrenMaxWidth + additionalWidth, MinMaxWidthUtils.GetInfWidth())); }