# 2D Concepts¶

Learning targets

- Get to to know the geometrical primitives.
- Build a geometry using different geometrical objects
- Ports of a geometrical object and translation (here)
- Rotate a geometrical object

Note

2D geometries for `JCMsuite`

are defined in the Cartesian x-y-plane.

Complex layouts for `JCMgeo`

are built from simple geometrical objects,
so called *geometrical primitives*. A 2D geometry assembled from
circles, ellipses, polygons and parallelograms looks like this:

```
Layout2D {
Object {
Circle {
...
}
Ellipse {
...
}
Parallelogram {
...
}
Trapezoid {
...
}
Polygon {
...
}
...
}
}
```

The resulting geometry and mesh might correspond to the following figure:

Each geometrical primitive comes with specific parameters like a name, a domain identifier, positioning parameters and other parameters to fix the shape. For a complete description of all parameters, please consult the JCMsuite Parameter Reference.

Ports

For positioning we used the parameter `GlobalPosition`

, e.g. for the circle we fixed the circumcenter position by:

```
Circle {
...
GlobalPosition = [-1 -0.25]
}
```

As a general concept each geometrical object is considered to be constructed in a local coordinate system first. For the circle example the circumcenter coincides with the origin in this local coordinate system. For positioning purposes (global or relative) a geometrical object comes with a number of predefined ports. For the circle these are the ports `North`

, `East`

, `South`

, `West`

and `Center`

,

whereas the parallelogram comes with nine ports. As shown in the figure a port is equipped with a local coordinate system which we will use later for gluing objects together.

To address a port we use the parameter `Port`

, e.g.

```
Circle {
...
Port = Center
GlobalPosition = [-1 -0.25]
}
```

Omitting this parameter will lead to the usage of the object’s default port which is just `Center`

for the circle case. With the `GlobalPosition`

the object is translated, so that position of the specified port matches the given position `GlobalPosition`

in the global coordinate system. Hence the definition

```
Parallelogram {
...
Port = Point2
GlobalPosition = [0.0 0.0]
}
```

will translate a parallelogram, so that the port `Point2`

lies at position .

Rotation

To rotate an object around its port we use the parameter `RotationAngle`

. For example, for the ellipse we used the following definition:

```
Ellipse {
...
RadiusX = 0.3
RadiusY = 0.2
GlobalPosition = [0.3 -0.75]
RotationAngle = 45
}
```

In the local coordinate system the major semi-axes of the ellipse are in the `x`

- and `y`

-direction with center . The center is displaced to followed by a rotation around the port as it appears in the global coordinate space.