001 package com.croftsoft.core.math.geom; 002 003 import java.awt.Shape; 004 import java.awt.geom.RectangularShape; 005 006 /********************************************************************* 007 * A static method library for manipulating Shape instances. 008 * 009 * @version 010 * 2003-04-17 011 * @since 012 * 2003-04-13 013 * @author 014 * <a href="https://www.croftsoft.com/">David Wallace Croft</a> 015 *********************************************************************/ 016 017 public final class ShapeLib 018 ////////////////////////////////////////////////////////////////////// 019 ////////////////////////////////////////////////////////////////////// 020 { 021 022 public static Point2DD getCenter ( 023 Shape shape, 024 Point2DD center ) 025 ////////////////////////////////////////////////////////////////////// 026 { 027 if ( shape instanceof Circle ) 028 { 029 Circle circle = ( Circle ) shape; 030 031 center.setXY ( circle.getCenter ( ) ); 032 } 033 else if ( shape instanceof RectangularShape ) 034 { 035 RectangularShape rectangularShape = ( RectangularShape ) shape; 036 037 center.setXY ( 038 rectangularShape.getCenterX ( ), 039 rectangularShape.getCenterY ( ) ); 040 } 041 else 042 { 043 getCenter ( shape.getBounds2D ( ), center ); 044 } 045 046 return center; 047 } 048 049 public static boolean intersects ( 050 Shape aShape, 051 Shape bShape ) 052 ////////////////////////////////////////////////////////////////////// 053 { 054 if ( aShape instanceof Circle ) 055 { 056 return ( ( Circle ) aShape ).intersectsShape ( bShape ); 057 } 058 059 if ( bShape instanceof Circle ) 060 { 061 return ( ( Circle ) bShape ).intersectsShape ( aShape ); 062 } 063 064 return aShape.intersects ( bShape.getBounds2D ( ) ); 065 } 066 067 ////////////////////////////////////////////////////////////////////// 068 ////////////////////////////////////////////////////////////////////// 069 070 private ShapeLib ( ) { } 071 072 ////////////////////////////////////////////////////////////////////// 073 ////////////////////////////////////////////////////////////////////// 074 }