Re: Inscribed circle [message #83698] |
Wed, 27 March 2013 13:38  |
arayamelo.pablo
Messages: 4 Registered: March 2013
|
Junior Member |
|
|
Thanks!
I will adapt it to my code.
On Wednesday, March 27, 2013 7:43:46 PM UTC+1, rrya...@gmail.com wrote:
> On Wednesday, March 27, 2013 9:40:25 AM UTC-4, arayame...@gmail.com wrote:
>
>> On Wednesday, March 27, 2013 2:34:29 PM UTC+1, rr...@stsci.edu wrote:
>
>>
>
>>> On Wednesday, March 27, 2013 6:32:49 AM UTC-4, arayame...@gmail.com wrote:
>
>>
>
>>>
>
>>
>
>>>> Dear all,
>
>>
>
>>>
>
>>
>
>>>>
>
>>
>
>>>
>
>>
>
>>>>
>
>>
>
>>>
>
>>
>
>>>>
>
>>
>
>>>
>
>>
>
>>>> maybe this has been already posted, but I can not seem to find it.
>
>>
>
>>>
>
>>
>
>>>>
>
>>
>
>>>
>
>>
>
>>>>
>
>>
>
>>>
>
>>
>
>>>>
>
>>
>
>>>
>
>>
>
>>>> I have a contour plot, and I draw a circle on it (region of interest). Is there a way to blank off the area of the square outside of the circle (I though polyfill, but I can just manage squared polygons) or to just make the contour of the circle (region) of interest?
>
>>
>
>>>
>
>>
>
>>>>
>
>>
>
>>>
>
>>
>
>>>>
>
>>
>
>>>
>
>>
>
>>>>
>
>>
>
>>>
>
>>
>
>>>> Thanks!
>
>>
>
>>>
>
>>
>
>>>>
>
>>
>
>>>
>
>>
>
>>>>
>
>>
>
>>>
>
>>
>
>>>>
>
>>
>
>>>
>
>>
>
>>>> PS: the contour data is created through triangulate and trigrid.
>
>>
>
>>>
>
>>
>
>>>
>
>>
>
>>>
>
>>
>
>>> What do you mean "blank off the area?" Is your contour plot made with black lines on a white background and you want to draw a white square? If so, then yes. Polyfill is the easiest way. If you're having trouble, it's almost certainly with either the coordinates you're giving it or their order. Make sure to check the /normal, /data, or /device settings to verify that your data are in the right units. Then check that the order of the polyfill data is correct:
>
>>
>
>>>
>
>>
>
>>>
>
>>
>
>>>
>
>>
>
>>> x=[left,left,right,right]
>
>>
>
>>>
>
>>
>
>>> y=[top,bottom,bottom,top]
>
>>
>
>>>
>
>>
>
>>> polyfill,x,y
>
>>
>
>>>
>
>>
>
>>>
>
>>
>
>>>
>
>>
>
>>> That's a basic idea to draw a rectangle, the trick is to find the right values of top, bottom, right, and left. It shouldn't be too tough, but you have to be aware of the units (device vs. data vs. normal).
>
>>
>
>>>
>
>>
>
>>>
>
>>
>
>>>
>
>>
>
>>> -Russell
>
>>
>
>>
>
>>
>
>> Thanks Russell.
>
>>
>
>>
>
>>
>
>> What I mean with "blank off the area", I mean to fill it with white color. The problem I get with using polyfill in this particular problem is that I want to fill a "waxing moon" area-shape, and with polyfill I just cover rectangles.
>
>
>
>
>
> So, I wrote this quick script to fill a crescent moon with color. I set it to gray and the moon's outline to white, but you should be able to change that...
>
>
>
>
>
>
>
>
>
> xc=5.0 ;x-center of the moon
>
> yc1=1. ;y-center of bottom of moon
>
> yc2=3. ;y-center of top of moon
>
> r1=5. ;radius of bottom of moon
>
> r2=4 ;radius of top of moon
>
>
>
> ;create a window and plot
>
> window,2,retain=2,xsize=600,ysize=600
>
> plot,[0],[0],xr=[0,10],yr=[0,10]
>
>
>
> ;compute the y-coordinate where they're equal
>
> num=(r1*r1-r2*r2)-(yc1*yc1-yc2*yc2)
>
> den=2.*(yc2-yc1)
>
> yequal=num/den
>
>
>
> ;compute the x-coordinate where they're equal
>
> x0=xc-sqrt(r1*r1-(yequal-yc1)*(yequal-yc1))
>
> x1=xc+sqrt(r1*r1-(yequal-yc1)*(yequal-yc1))
>
>
>
> ;create an x variable
>
> n=1000L
>
> x=findgen(n)/(n-1)*(x1-x0)+x0
>
>
>
> ;create the top and bottom of moon
>
> y1=sqrt(r1*r1-(x-xc)*(x-xc))+yc1 ; bottom of moon
>
> y2=sqrt(r2*r2-(x-xc)*(x-xc))+yc2 ; top of moon
>
>
>
> ;make the moon grey
>
> polyfill,[x,reverse(x)],[y1,reverse(y2)],/data,color=100
>
>
>
> ;overplot the outline
>
> oplot,x,y1
>
> oplot,x,y2
|
|
|