Node: Shearing Points, Next: , Previous: Scaling Points, Up: Transforming Points

### Shearing

Shearing is more complicated than shifting or scaling. The function `shear()` takes six `real` arguments. If p is a `Point`, then `p.shear(a, b, c, d, e, f)` sets x_p to x_p + ay_p + bz_p, y_p to y_p + cx_p + dz_p, and z_p to z_p + ex_p + fy_p. In this way, each coordinate of a `Point` is modified based on the values of the other two coordinates, whereby the influence of the other coordinates on the new value is weighted according to the arguments.

```     Point p(1, 1, 1);
p.shear(1);
p.show("p:");
-| p: (2, 1, 1)
p.set(1, 1, 1);
p.shear(1, 1);
p.show("p:");
-| p: (3, 1, 1)
p.set(1, 1, 1);
p.shear(1, 1, 2, 2, 3, 3);
p.show("p:");
-| p: (3, 5, 7)
```

[next figure] demonstrates the effect of shearing the points of a rectangle in the x-y plane.

```     Point P0;
Point P1(3);
Point P2(3, 3);
Point P3(0, 3);
Rectangle r(p0, p1, p2, p3);
r.draw();
Rectangle q(r);
q.shear(1.5);
q.draw(black, "evenly");
```

Fig. 1.