| 504 | |
| 505 | @mark.parametrize("face", FACES) |
| 506 | def test_surface_tangents(face, request): |
| 507 | |
| 508 | f = request.getfixturevalue(face) |
| 509 | surf = Surface.fromFace(f) |
| 510 | |
| 511 | for u in PARAMS: |
| 512 | for v in PARAMS: |
| 513 | dun, dvn, p = f.tangentAt(u, v) |
| 514 | der = surf.der(u, v, 1).squeeze() |
| 515 | du = der[1, 0, :] |
| 516 | dv = der[0, 1, :] |
| 517 | |
| 518 | assert np.allclose(dun.toTuple(), du / np.linalg.norm(du)) |
| 519 | assert np.allclose(dvn.toTuple(), dv / np.linalg.norm(dv)) |
| 520 | assert np.allclose(p.toTuple(), der[0, 0, :]) |
| 521 | |
| 522 | |
| 523 | @mark.parametrize("isoparam", PARAMS) |