Node: Shifting Points, Next: , Previous: Transforming Points, Up: Transforming Points

### Shifting

The function `shift()` adds its arguments to the corresponding `world_coordinates` of a `Point`. In the following example, the function `show()` is used to print the `world_coordinates` of `p0` to standard output.

```     Point p0(0, 0, 0);
p0.shift(1, 2, 3);
p0.show("p0:");
-| p0: (1, 2, 3)
p0.shift(10);
p0.show("p0:");
-| p0: (11, 2, 3)
p0.shift(0, 20);
p0.show("p0:");
-| p0: (11, 22, 3)
p0.shift(0, 0, 30);
p0.show("p0:");
-| p0: (11, 22, 33)
```

`shift` takes three `real` arguments, whereby the second and third are optional. To shift a `Point` in the direction of the positive or negative y-axis, and/or the positive or negative z-axis only, then a 0 argument for the x direction, and possibly one for the y direction must be used as placeholders, as in the example above.

`shift()` can be invoked with a `Point` argument instead of `real` arguments. In this case, the x, y, and z-coordinates of the argument are used for shifting the `Point`:

```     Point a(10, 10, 10);
Point b(1, 2, 3);
a.shift(b);
a.show("a:")
-| a: (11, 12, 13)
```

Another way of shifting `Points` is to use the binary `+=` operator (`Point::operator+=()`) with a `Point` argument.

```     Point a0(1, 1, 1);
Point a1(2, 2, 2);
a0 += a1;
a0.show("a0:");
-| a0: (3, 3, 3)
```