单纯数学上的意思吧,如果K==dd*d,最后pull就是小于1的。
边界处理的小伎俩。你可以试试一些特殊值,就知道作者希望把哪些值用哪个代码块处理,比如
k<dd*d
k=dd*d
dd*d<k<dd*d+0.000001
k>=dd*d+1

解决方案 »

  1.   

    请问 dd*d 什么意思? 数学的意义上是什么意思?
      

  2.   

    上面的意思应该是 坐标dx,dy 到原点的距离计算。
    其他的应该是某个业务需要计算值。
      

  3.   

    我知道 d 是 两个点之间的距离。 一个大的数值/ dd*d dd 是没有开根号的。
    d是开根号的 是 两点的距离那dd *d 是什么意思呢?
      

  4.   

    个人理解:
    这是一个对图像按中心拉伸的函数,(cx,cy)是变形的中心点,距离它一定范围内的点不会变化,而范围外的点会从原始点被“拉”到中心点(pull*dx)。
    为什么是dd*d而不是dd或d,这是因为需要以d的三次方为参数衡量点的pull值,影响它会被“拉”的程度。具体这个dd*d为什么合理,你完全可以先绘制一批点,再设定参数运行这个函数,再绘制变化后的点,看看它实现了一个什么效果。
    K是给定的一个参数,你可以设想,当K越大,这个所谓的“范围”就越大。
      

  5.   

    这个函数 就是根据某个点 图像上点向这个点靠近拉伸的。 
    但是“而范围外的点会从原点被拉到中心点”(pull *dx)这个pull * dx 又把握搞糊涂了。(难道是拉伸的比例???)
    pull是拉伸的比例?不过 dd*d 可以理解为三次方 谢谢你,我一直以为他是有什么含义的。 因为d是两个点之间的距离嘛。我还以为不会是有什么公式吧。谢谢了。
      

  6.   

    就是拉伸的比例吧,距离越远pull值越小。
    至于为什么dd和d要分开来除,而不是先乘出来dd*d再一块儿除,我觉得这是为了控制精度。因为0.999999^2 约为0.999998,误差会变大,大概是这样吧。
      

  7.   

    我还是没有搞明白 除以 dd的意义。如果写死的那个大数值 理解为 中心点(cx,cy)的距离的话,是和 待移动的点 在同一条直线上的一个点。
    那算比例K/d  可以理解为  k这个数值 可以有多少个d。
    那么dd又是什么?
      

  8.   

    “K/d理解为可以有多少个d”这种理解好像没有必要。
    既然要算三次方,最快的方法不是算d,再把d乘以三次(算d的过程中就要先算dd),先算dd再算d是最快的。K只是一个参数,看到d是到(x,y)到(cx,cy)的距离,
    d^3<K时,点的位置固定不变
    否则(x,y)到(cx,cy)的直线距离被拉进,拉近的比例为pull,也就是K/d^3,
    因为拉进的前提是K<d^3,所以拉近的比例一定小于1,而且d越大,这个拉近的比例越小。
      

  9.   

    恩,非常感谢。如果把 d^3 就按照这种拉伸的公式来看。是这种用意思吗?
    难道这句 K/ dd*d 这句代码还考虑到了效率吗?因为已经有了dd 所以就直接拿来用了,比 d^3算的快? 我能这样理解吗?后面的我就明白了。非常感谢!还有其实那个K 其实可以自己指定一个值。