An amazing, seemingly nonsensical geometric fact about convex bodies in the plane!

How can perimeter be linear? Shapes aren't a vector space, which is where "linearity" is usually mentioned.

The plane is R2, so we can define multiplication of a set A⊂R2 by a scalar: just multiply every point by λ.

λA = {λx : x∈A}
A moment's thought should suffice to see that perimeter(λA) = λ*perimeter(A) for any set A that has perimeter.

What about addition? There's a standard geometric definition of addition of shapes A and B:

A+B = {x+y : x∈A, y∈B}
(think of placing a copy of B shifted around every point of A, and taking the union of all these copies).

Amazingly, for convex bodies it turns out that perimeter(A+B) = perimeter(A)+perimeter(B).

For instance, the sum of a square of side a and a circle of radius r is a square with rounded corners. The height and width of the figure are both a+2*r. The perimeter consists of 4 straight segments each of length a (total perimeter equal to that of the square), and at each corner a quarter arc of a circle of radius r (total perimeter equal to that of the circle, and you don't even have to rotate the arcs to reassemble the circle!). So the perimeter is indeed the sum of the perimeters.


Below, we add a circle and a square...
      _.-""""-._
    .'          `.
   /              \            |"""""|
  |                |     |     |     |
  |                |   --+--   |     |
  |                |     |     |.....|
   \              /
    `._        _.'
       `-....-'
... and get a square with rounded corners. The sides add together nicely, even in my primitive ASCII art; every character from the original pictures is used precisely once. And the perimeter of the sum is the sum of the perimeters:
      _.-"""""""""-._
    .'               `.
   /                   \
  |                     |
  |                     |
  |                     |
  |                     |
  |                     |
   \                   /
    `._             _.'
       `-.........-'
(Image of circle stolentaken from a webpage by "flump")