How to get rotation, translation, shear from a 3x3 Homography matrix in c#

前端 未结 1 1023
旧巷少年郎
旧巷少年郎 2020-12-09 23:50

I calculated the 3x3 homography matrix and I need to get rotation, translation, shear and scale to use them as parameters in the windows8 media element attributes ?!

相关标签:
1条回答
  • 2020-12-10 00:37

    see https://math.stackexchange.com/questions/78137/decomposition-of-a-nonsquare-affine-matrix

    def getComponents(normalised_homography):
      '''((translationx, translationy), rotation, (scalex, scaley), shear)'''
      a = normalised_homography[0,0]
      b = normalised_homography[0,1]
      c = normalised_homography[0,2]
      d = normalised_homography[1,0]
      e = normalised_homography[1,1]
      f = normalised_homography[1,2]
    
      p = math.sqrt(a*a + b*b)
      r = (a*e - b*d)/(p)
      q = (a*d+b*e)/(a*e - b*d)
    
      translation = (c,f)
      scale = (p,r)
      shear = q
      theta = math.atan2(b,a)
    
      return (translation, theta, scale, shear)
    
    0 讨论(0)
提交回复
热议问题