public bool IsInside(CartesianPoint point)
            {
                // Shapes
                var rectHull    = new Rectangular2DBoundary(0.0, bottomWidth, 0.0, totalHeight);
                var leftVoid    = new Rectangular2DBoundary(0.0, voidRectWidth, flangeHeight, totalHeight);
                var rightVoid   = new Rectangular2DBoundary(bottomWidth - voidRectWidth, bottomWidth, flangeHeight, totalHeight);
                var leftCircle  = new Circle2D(new CartesianPoint(leftCenterX, centerY), radius);
                var rightCircle = new Circle2D(new CartesianPoint(rightCenterX, centerY), radius);

                if (rectHull.IsInside(point))
                {
                    if (leftVoid.IsInside(point)) // Over flange, left of web
                    {
                        if ((point.X > leftCenterX) && (point.Y < centerY))
                        {
                            if (leftCircle.FindRelativePositionOfPoint(point) == CirclePointPosition.Outside)
                            {
                                return(true); // Inside left fillet
                            }
                            else
                            {
                                return(false);
                            }
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else if (rightVoid.IsInside(point)) // Over flange, right of web
                    {
                        if ((point.X < leftCenterX) && (point.Y < centerY))
                        {
                            if (leftCircle.FindRelativePositionOfPoint(point) == CirclePointPosition.Outside)
                            {
                                return(true); // Inside right fillet
                            }
                            else
                            {
                                return(false);
                            }
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        return(true); // Inside the flange or the web
                    }
                }
                else
                {
                    return(false);
                }
            }
            public bool IsInside(CartesianPoint point)
            {
                // Shapes
                var rectHull    = new Rectangular2DBoundary(minX, maxX, minY, maxY);
                var leftCircle  = new Circle2D(new CartesianPoint(leftHoleX, leftHoleY), holeRadius);
                var rightCircle = new Circle2D(new CartesianPoint(rightHoleX, rightHoleY), holeRadius);

                // Intrnal points lie inside the rectangle, but outside the circular holes.
                if (rectHull.IsInside(point))
                {
                    if (leftCircle.FindRelativePositionOfPoint(point) == CirclePointPosition.Outside)
                    {
                        return(true);
                    }
                    if (rightCircle.FindRelativePositionOfPoint(point) == CirclePointPosition.Outside)
                    {
                        return(true);
                    }
                }
                return(false);
            }