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

 

相关文章:

  • 2021-11-17
  • 2021-10-19
  • 2021-11-14
  • 2021-11-25
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
猜你喜欢
  • 2021-06-28
  • 2021-07-31
  • 2021-10-22
  • 2021-06-18
  • 2021-09-04
  • 2021-12-04
  • 2021-11-09
相关资源
相似解决方案