Screen Space Obj Center

On 09/01/2018 at 08:45, xxxxxxxx wrote:

Has anyone done anything with working out the Min/Max X,Y of points in screen space before? I'm trying to work out the screen space center of an object and need these two vectors to work out the middle.

Any help would be awesome Smilie Thank you


  
SHARE >(http://forums.cgsociety.org/newreply.php?do=newreply&p=8369829)

On 10/01/2018 at 03:55, xxxxxxxx wrote:

Hi more4d, thanks for writing us.

With reference to your request, assuming you'r just interested in the object's center it's enough to retrieve the object's bounding box position via BaseObject::GetMp()  and simply transform it using BaseView::WS(). This way you can in a few lines get the position of the object's center in screen space.

  
  # get the active BaseDraw  
  bd = doc.GetActiveBaseDraw()  
    
  # check both active BaseDraw and active BaseObject  
  if bd is None:  
      return  
  if op is None:  
      return  
    
  # retrieve object's bounding-box coordinates in world space  
  opBBoxWorld = op.GetMg() * op.GetMp()  
    
  # transform from world-space to screen-space using BaseView::WS()  
  opBBoxScreen =  bd.WS(opBBoxWorld)  
    
  # print results  
  print "Object's center in world-space: ", opBBoxWorld  
  print "Object's center in screen-space: (x:", opBBoxScreen.x, ",  y:", opBBoxScreen.y, ")"  

In case instead you need to refine your investigation to all the vertexes of the object, just loop over them and transform in screen-space using the same technique described above.

For the sake of completeness, it could worth having a look here where details are explained.

Best, Riccardo