outlines.add( new Ellipse2D.Double( -0.75, -0.75, 1.5, 1.5 ));
outlinePaints.add( pntCtrlOut );
double angDeg, angRad, dx, dy;
double speakerWidth = Math.max( 4, Math.min( 10, deltaAngle / 2 ));
Arc2D arc1 = new Arc2D.Double( -1.15, -1.15, 2.3, 2.3, 0, speakerWidth, Arc2D.PIE );
Arc2D arc2 = new Arc2D.Double( -1.05, -1.05, 2.1, 2.1, 0, speakerWidth, Arc2D.PIE );
// GeneralPath gen;
Area area;
for( int i = 0; i < numSpots; i++ ) {
angDeg = startAngle + i * deltaAngle;
angRad = (-angDeg + 90) * Math.PI / 180;
dx = Math.cos( angRad );
dy = Math.sin( angRad );
outlines.add( new Line2D.Double( 0.0, 0.0, dx, dy ));
outlinePaints.add( pntCtrlOut );
arc1.setAngleStart( angDeg - 90 - speakerWidth/2 );
arc2.setAngleStart( angDeg - 90 - speakerWidth/2 );
area = new Area( arc1 );
area.subtract( new Area( arc2 ));
areas.add( area );
areaPaints.add( pntCtrlIn );
}