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); }