# Basic Shapes¶

IPKISS shapes are all subclasses of the basic Shape class.

 Shape Basic shape ShapeCircle Basic circle ShapeArc Circular arc ShapeBend Circular arc specified by its starting point instead of its center ShapeCross Cross. ShapeWedge Wedge, or symmetric trapezium. ShapeRadialWedge Radial wedge: the coordinates of the start and end point are specified in polar coordinates from a given center ShapeEllipse Basic ellipse ShapeEllipseArc Ellipse arc around a given center. ShapeRectangle Basic rectangle ShapeRoundedRectangle Rectangle with rounded corners ShapeRingSegment Ring segment ShapeRegularPolygon Regular N-sided polygon ShapeHexagon Hexagon ShapeDodecagon Dodecagon ShapeParabolic Parabolic wedge (taper) ShapeExponential Exponential wedge (taper)

## Shape¶

class ipkiss3.all.Shape(points=[], closed=None, **kwargs)

Basic shape

Parameters: Other Parameters: closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Examples

import ipkiss3.all as i3
import matplotlib.pyplot as plt

s1 = i3.Shape([(5.0, -5.0), (0.0, 0.0), (5.0, 5.0), (10.0, 0.0)], closed=False)
p2 = i3.Coord2((15.0, 0.0))

s2 = s1 + p2

plt.figure()
plt.plot(s2.x_coords(), s2.y_coords(), 'bo-', markersize=8, linewidth=2)
plt.show() ## ShapeCircle¶

class ipkiss3.all.ShapeCircle(**kwargs)

Basic circle

Parameters: Other Parameters: box_size: optional radius: float and number > 0, optional radius of the circular arc end_angle: optional start_angle: optional angle_step: float, optional discretization angle center: Coord2, optional center of the ellipse clockwise: ( bool, bool_, bool or int ), optional orientation of the arc. clockwise:True closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Examples ## ShapeArc¶

class ipkiss3.all.ShapeArc(**kwargs)

Circular arc

Parameters: Other Parameters: box_size: optional radius: float and number > 0, optional radius of the circular arc angle_step: float, optional discretization angle center: Coord2, optional center of the ellipse clockwise: ( bool, bool_, bool or int ), optional orientation of the arc. clockwise:True end_angle: float, optional end angle of the arc according to the parametric representation of an ellipse start_angle: float, optional start angle of the arc according to the parametric representation of an ellipse closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Examples ## ShapeBend¶

class ipkiss3.all.ShapeBend(**kwargs)

Circular arc specified by its starting point instead of its center

Parameters: Other Parameters: center: optional end_angle: optional input_angle: float, optional output_angle: float, optional start_angle: optional start_point: Coord2, optional starting point of the circular bend box_size: optional radius: float and number > 0, optional radius of the circular arc angle_step: float, optional discretization angle clockwise: ( bool, bool_, bool or int ), optional orientation of the arc. clockwise:True closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Examples ## ShapeCross¶

class ipkiss3.all.ShapeCross(**kwargs)

Cross. Thickness sets the width of the arms

Parameters: Other Parameters: box_size: float and number > 0, optional center: Coord2, optional thickness: float and number > 0, optional closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Examples ## ShapeWedge¶

class ipkiss3.all.ShapeWedge(**kwargs)

Wedge, or symmetric trapezium. Specified by the center of baselines and the length of the baselines

Parameters: Other Parameters: begin_coord: Coord2, optional begin_width: float and Real, number and number >= 0, optional end_coord: Coord2, optional end_width: float and Real, number and number >= 0, optional closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Examples class ipkiss3.all.ShapeRadialWedge(**kwargs)

Radial wedge: the coordinates of the start and end point are specified in polar coordinates from a given center

Parameters: Other Parameters: angle: float, required inner_radius: float and number > 0, required inner_width: float and number > 0, required outer_radius: float and number > 0, required outer_width: float and number > 0, required center: Coord2, optional closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Examples ## ShapeEllipse¶

class ipkiss3.all.ShapeEllipse(**kwargs)

Basic ellipse

Parameters: Other Parameters: end_angle: optional start_angle: optional angle_step: float, optional discretization angle box_size: Coord2, optional size of the ellipse along major and minor axis center: Coord2, optional center of the ellipse clockwise: ( bool, bool_, bool or int ), optional orientation of the arc. clockwise:True closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Examples ## ShapeEllipseArc¶

class ipkiss3.all.ShapeEllipseArc(**kwargs)

Ellipse arc around a given center.

ShapeEllipseArc implements the standard parametric representation of an ellipse (x = a * cos(t), y = b * sin(t)) and (0 <= t < 2 * pi), where parameter t is not the actual angle, but has a geometric meaning due to Philippe de La Hire.

The start_angle and end_angle are described as this parameter t.

Parameters: Other Parameters: angle_step: float, optional discretization angle box_size: Coord2, optional size of the ellipse along major and minor axis center: Coord2, optional center of the ellipse clockwise: ( bool, bool_, bool or int ), optional orientation of the arc. clockwise:True end_angle: float, optional end angle of the arc according to the parametric representation of an ellipse start_angle: float, optional start angle of the arc according to the parametric representation of an ellipse closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Notes

If you want to get the parametric angle t from the actual angle alpha, you can use the following:

import numpy as np
a, b = box_size
t = np.arctan2(2. / b * np.sin(alpha), 2. / a * np.cos(alpha))  # t and alpha in radians


Examples ## ShapeRectangle¶

class ipkiss3.all.ShapeRectangle(**kwargs)

Basic rectangle

Parameters: Other Parameters: radius: optional angle_step: float, optional angle_step using in the rounding. box_size: Coord2, optional size of the rectangle. center: Coord2, optional center of the rectangle. closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Examples ## ShaperoundedRectangle¶

class ipkiss3.all.ShapeRoundedRectangle(**kwargs)

Rectangle with rounded corners

Parameters: Other Parameters: angle_step: float, optional angle_step using in the rounding. box_size: Coord2, optional size of the rectangle. center: Coord2, optional center of the rectangle. radius: float and Real, number and number >= 0, optional radius of the rounding used. closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Examples ## ShaperingSegment¶

class ipkiss3.all.ShapeRingSegment(**kwargs)

Ring segment

Parameters: Other Parameters: inner_radius: float and number > 0, required outer_radius: float and number > 0, required angle_end: float, optional angle_start: float, optional angle_step: float, optional center: Coord2, optional closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Examples ## ShapeHexagon¶

class ipkiss3.all.ShapeHexagon(**kwargs)

Hexagon

Parameters: Other Parameters: center: Coord2, optional Center of the polygon radius: float and number > 0, optional Radius of the polygon closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape n_o_sides: int and [3,None], locked Number of sides of the hexagon size_info: SizeInfo, locked get the size information on this Shape

Examples ## ShapeDodecagon¶

class ipkiss3.all.ShapeDodecagon(**kwargs)

Dodecagon

Parameters: Other Parameters: n_o_sides: int and [3,None], optional center: Coord2, optional Center of the polygon radius: float and number > 0, optional Radius of the polygon closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Examples ## ShapeRegularPolygon¶

class ipkiss3.all.ShapeRegularPolygon(**kwargs)

Regular N-sided polygon

Parameters: Other Parameters: center: Coord2, optional Center of the polygon n_o_sides: int and [3,None], optional Number of sides fo the polygon radius: float and number > 0, optional Radius of the polygon closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Examples ## ShapeParabolic¶

class ipkiss3.all.ShapeParabolic(**kwargs)

Parabolic wedge (taper)

Parameters: Other Parameters: begin_coord: Coord2, optional begin_width: float and Real, number and number >= 0, optional end_coord: Coord2, optional end_width: float and Real, number and number >= 0, optional width_step: float and number > 0, optional closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Examples ## ShapeExponential¶

class ipkiss3.all.ShapeExponential(**kwargs)

Exponential wedge (taper)

Parameters: Other Parameters: begin_coord: Coord2, optional begin_width: float and Real, number and number >= 0, optional end_coord: Coord2, optional end_width: float and Real, number and number >= 0, optional g: float and Real, number and number >= 0, optional Exponential growth constant. Defaults to ln(max_width/min_width) width_step: float and number > 0, optional closed: optional end_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the end of an open shape points: optional points of this shape start_face_angle: ( float ), optional, *None allowed* Use this to overrule the ‘dangling’ angle at the start of an open shape size_info: SizeInfo, locked get the size information on this Shape

Examples 