# Polygon

## Description

A polygon is defined by its two dimensional shape in form of a polygon, its normal direction and elevation. It is created by

```CSX = AddPolygon( CSX, propName, prio, normDir, elevation, points, varargin)
```

with the parameters

• CSX: The original CSX structure
• propName: name of the assigned property
• prio: priority of the primitive
• normDir: the normal direction of the polygon (0->x, 1->y, 2->z)
• points: two-dimensional coordinates p(i,j) of the base polygon
• elevation: elevation in normal direction
• varargin: a key/value list of primitives variable arguments

Note 1: The polygon has to be defined using Cartesian coordinates. For use with cylindrical mesh, set `'CoordSystem',0`

Note 2: Each column j represents a vertex in the points matrix. The number of columns equals the number of points.

Note 3: Each row represents projection of the point on the axis in the order of right hand rule. For example: if object is normal to y axis (`normDir = 1`), the first and second row contain z and x coordinates respectively. The number of rows is two.

### Example

A star shaped polygon located in normal direction at z = 0:

```p(1,1) = -100; p(2,1) = -100;
p(1,2) = 0;    p(2,2) = -50;
p(1,3) = 100;  p(2,3) = -100;
p(1,4) = 50;   p(2,4) = 0;
p(1,5) = 100;  p(2,5) = 100;
p(1,6) = 0;    p(2,6) = 50;
p(1,7) = -100; p(2,7) = 100;
p(1,8) = -50;  p(2,8) = 0;

>> p
p =

-100     0   100    50   100     0  -100   -50
-100   -50  -100     0   100    50   100     0

CSX = AddPolygon( CSX, 'metal', 1, 2, 0, p , 'CoordSystem',0)
```

## Extruded Polygon

An extruded polygon is defined by its two dimensional base shape in form of a polygon, its normal direction, elevation and thickness. It is created by

``` CSX = AddLinPoly( CSX, propName, prio, normDir, elevation, points, Length, varargin)
```

with the parameters

• CSX: The original CSX structure
• propName: name of the assigned property
• prio: priority of the primitive
• normDir: the normal direction of the polygon (0->x, 1->y, 2->z)
• points: two-dimensional coordinates of the base polygon; see above
• length: linear extrusion in normal direction, starting at elevation
• varargin: see primitives variable arguments

Note: The polygon has to be defined using Cartesian coordinates. For use with cylindrical mesh, set `'CoordSystem',0`

### Example

A star shaped polygon extruded in z direction:

```p(1,1) = -100; p(2,1) = -100;
p(1,2) = 0;    p(2,2) = -50;
p(1,3) = 100;  p(2,3) = -100;
p(1,4) = 50;   p(2,4) = 0;
p(1,5) = 100;  p(2,5) = 100;
p(1,6) = 0;    p(2,6) = 50;
p(1,7) = -100; p(2,7) = 100;
p(1,8) = -50;  p(2,8) = 0;

CSX = AddLinPoly( CSX, 'metal', 1, 2, 2, p , 100, 'CoordSystem',0)
```

## Rotational Polygon

An rotational polygon is defined by its two dimensional base shape in form of a polygon, its normal direction, rotational axis and angle of rotation. It is created by

```CSX = AddRotPoly( CSX, materialname, prio, normDir, points, RotAxisDir, angle, varargin)
```

with the parameters

• CSX: The original CSX structure
• materialname: Name of the assigned material property : created by AddMetal() or AddMaterial()
• prio: Priority of the primitive
• normDir: The normal direction of the polygon e.g. 'x', 'y' or 'z', or numeric (0->x, 1->y, 2->z)
• RotAxisDir: Rotational axis direction e.g. 'x', 'y' or 'z', or numeric (0->x, 1->y, 2->z) . Note: Should be different to normal direction.
• points: Two-dimensional coordinates of the base polygon; see above
• angle: Rotation angle, optional, default is [0 2*pi] e.g. [0 2*pi] for a full rotation.
• varargin: see primitives variable arguments

Note: The polygon has to be defined using Cartesian coordinates. For use with cylindrical mesh, set `'CoordSystem',0`

### Example

The same star shaped polygon, shifted in x-direction and rotated around the x-axis.

```p(1,1) = -100; p(2,1) = -100;
p(1,2) = 0;    p(2,2) = -50;
p(1,3) = 100;  p(2,3) = -100;
p(1,4) = 50;   p(2,4) = 0;
p(1,5) = 100;  p(2,5) = 100;
p(1,6) = 0;    p(2,6) = 50;
p(1,7) = -100; p(2,7) = 100;
p(1,8) = -50;  p(2,8) = 0;

p(1,:)=p(1,:)+200; % shift in x-direction by 200

CSX = AddRotPoly( CSX, 'metal', 1, 2, p, 1, [0 pi], 'CoordSystem',0)
```

A conical solid can be created by rotating a triangular polygon:

```p(1,1) = 0; p(2,1) = -100;
p(1,2) = 100; p(2,2) = -100;
p(1,3) = 0;    p(2,3) = 100;

CSX = AddRotPoly( CSX, 'metal', 1, 2,p, [1 0 0], [0,2*pi])
```