### 27.7.2 Rhombuses in space

See Section 26.8.2 for rhombuses in the plane.

The rhombus command returns and draws a rhombus. It takes it arguments in two different ways.

1. Three points.
   - rhombus takes three mandatory arguments and two optional arguments:
     - A,B,P, three points.
     - Optionally, var1,var2, two variable names.
   - rhombus(A,B,P ⟨,var1,var2 ⟩) returns and draws the rhombus ABCD, which is in the plane ABP, oriented so that angle BAP is positive, and D is on the ray AP.

     If the arguments var1 and var2 are given, they will be assigned to the vertices C and D.

2. Three points and a real number.
   - rhombus takes three mandatory arguments and two optional argument:
     - A,B, two points.
     - [P,a], a list consisting of a point P and a real number a.
     - Optionally, var1,var2, two variable names.
   - rhombus(A,B,[P,a] ⟨,var1,var2 ⟩) returns and draws the rhombus ABCD, which is in the plane ABP, oriented so that angle BAP is positive, and angle BAD equals a.

     If the arguments var1 and var2 are given, they will be assigned to the vertices C and D.

#### Examples

A,B,P:=point(0,0,0),point(3,3,3),point(0,0,3); rhombus(A,B,P)

A,B,P:=point(0,0,0),point(3,3,3),point(0,0,3); rhombus(A,B,[P,pi/3])

rhombus(A,B,[P,pi/3],C,D); simplify(coordinates(C)), simplify(coordinates(D))

| ⎡ ⎢ ⎢ ⎣ |
−3 | √ |
6
| +18
4
| , |
−3 | √ |
6
| +18
4
| , |
3 | √ |
6
| +9
2
| ⎤ ⎥ ⎥ ⎦ | , | ⎡ ⎢ ⎢ ⎣ |
−3 | √ |
6
| +6
4
| , |
−3 | √ |
6
| +6
4
| , |
3 | √ |
6
| +3
2
| ⎤ ⎥ ⎥ ⎦