len3d

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

For triangles, as well as other planar shapes, there's an affine mapping from parametric space to object space, said M.

In parametric space, we know the parametric coordiantes for 3 triangle corners are (u0, v0), (u1, v1), (u2, v2) respectively.

While in object space, the 3D coordinates for 3 triangle corners are P0, P1, P2.

So with the mapping M, we can transform the difference vectors (du1, dv1) = (u1 - u0, v1 - v0), and (du2, dv2) = (u2 - u0, v2 - v0) to the difference vectors in object space, said dP1 = P1 - P0, dP2 = P2 - P0, dP1, dP2 are 3D vectors.

The equation looks like:

(dP1)    (du1 dv1)

|     | = |           | * M

(dP2)    (du2 dv2)

Assume M = (K1, K2), K1, K2 are 3D vectors, the equation can be rewritten with:

(dP1)    (du1 dv1)   (K1)

|     | = |           | * |   |       (1)

(dP2)    (du2 dv2)   (K2)

Solve K1, K2, we get:

(K1)         (du1 dv1)   (dP1)

|    | = INV|           | * |    |

(K2)         (du2 dv2)   (dP2)

Now we need to understand what are K1, K2, using equation (1) we have:

dPdu * du = (du 0) * (K1) = K1 * du, thus we know dPdu = K1

                               (K2)

Similarly,

dPdv * dv = (0 dv) * (K1) = K1 * dv, thus we know dPdv = K2

                               (K2)

Finally we got:

(dPdu)         (du1 dv1)   (dP1)

|       | = INV|           | * |    |

(dPdv)         (du2 dv2)   (dP2)

Which satisfies:

P(u + du, v) = P(u, v) + dPdu * du

P(u, v + dv) = P(u, v) + dPdv * dv

 

posted on 2011-09-09 14:46  Len3d  阅读(14984)  评论(0编辑  收藏  举报