You could always do a mask. Basically, you invert the screen-- Locations with triangles become gaps and gaps gain triangles-- then you set up layers such that (From near camera to furtherest): Player/UI (Very top/always visible objects), Mask (As described), the Sonar, the spikes (If you have a reason to draw them at all, I mean.)
This is probably the
easiest method. And I use that term lightly. Alternately, you can try something involving polygon clipping (But a circle can be a PITA because it's either not a real polygon or it's a polygon with infinite vertices-- Or just a bunch):
http://en.wikipedia.org/wiki/Weiler-Atherton_clipping_algorithm