ThinkGeo.com    |     Documentation    |     Premium Support

Draw arce shape

hi,


 Please help me how to draw arce shape dynamically.


 


Thanks and Regards,


Ravi B


 



Hello Ravi, 



Thank you for your ticket, I have an easy idea of how to do this, let me know what you think.  Create the circle then get the bounding box.  Next use the translate method on the bounding box to move it half of the distance of the width of of the rectangle up and to the right.  Now you have a square that is covering the upper right hand portion of the circle.  Next you can call the Intersection method on the circle and pass in the rectangle.  This will return back a polygon that is the upper right hand part of the circle.  Below is a simple drawing of what it would look like. 



Step 1:  Get the bounding box.  It should return backa square if you started with a circle. 



 Step 2: Translate the square up and to the right by half of the width of the square. 



 Step 3: Call the intersection on the Circle and pass in the square and you will get a polygon back that will be where those two things overlap which is the quarter part of the circle. 





You would do somethign like this:




EllipseShape es = new EllipseShape(...);


RectangleShape rs = es.GetBoundingBox();


rs.TranslateByOffset(....);


MultipolygonShape ms = es.GetIntersection(rs);




The code is just pseudo code but should get you going.  



Regards, 



Gary 

 



thanks gary for giving the solution .


but i want to draw following shape.


i attached an image, like that i want to draw shape please help me.


 


 


thanks & Regards,


Ravi B


 



Hello Ravi, 



Sorry for delay. 



I'm not sure what's the shape type to split the circle? Is it a line or triangle like your second image? 



Now I just think it's 4 lines to across the 3 circles, in order to get the blue shape in your second image, I have some ideas: 



1) There is a static function named split in the AreaBaseShape. so using it as AreaBaseShape.Split(...), then you can get the circle split by the left line. 



2) Use AreaBaseShape.Split(...); again but with the right line this time, then you can let the rest of the circle split to two features again. 



3) Compare the two features Area by GetArea() function, get the smaller one. You will get the triangle 



4) MultipolygonShape ms = secondcircle.GetIntersection(triangle); 



I hope this can help. 



Regards, 



Gary