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.