Geometric Objects

Geometrical Objects in Two Dimensions

class Line2
class Line2(from, to)

Parametric line in two dimensions as defined by an origin and a normalized direction vector. The first constructor creates a line with origin (0,0) and direction along the x axis. The second signature creates a line originating from from and pointing towards to.

At(t)

Returns the point on the line at (signed) distance t from origin.

Parameters:

t (float) – free parameter

Return type:

Vec2

GetOrigin()

Returns the origin of the line: Also available as origin.

Return type:

Vec2

GetDirection()

Returns the normalized direction vector. Also available as direction.

Return type:

Vec2

direction
origin
class Rectangle2
class Rectangle2(top_left, bottom_right)

Axis aligned rectangle. The first signature creates a rectangle with top-left corner (-1, -1) and bottom-right corner (1, 1), wheras the second method allows to set the top-left and bottom-right corners directly.

Parameters:
  • top_left (Vec2) – The top-left corner

  • bottom_right (Vec2) – The bottom-right corner

GetWidth()

Returns the width of the rectangle. Also available as width.

GetHeight()

Returns the height of the rectangle. Also available as height.

width
Type:

float

height
Type:

float

GetStart()

Get top-left corner

Return type:

Vec2

GetEnd()

Get bottom-right corner

Return type:

Vec2

SetStart(top_left)

Set top-left corner, leaving the bottom-right corner untouched.

SetEnd(bottom_right)

Set the bottom-right corner, leaving the top-left corner untouched.

class Circle2
class Circle2(circle)
class Circle2(center, radius)

The first signature creates a circle centered at (0, 0) and radius 1.0. The second signature creates a circle with the same paramters as circle. The third signature creates a new circle with given center and radius.

SetCenter(center)

Set center of circle

Parameters:

center (Vec2) – The new center

SetRadius(radius)

Set radius of circle

Parameters:

center – The new radius

GetCenter()

Returns the center of the circle

GetRadius()

Returns the radius of the circle

GetArea()

Returns the area of the circle

GetCircumference()

Returns the circumference of the circle

class Ellipse2
class Ellipse2(center, a, b, gamma)

An ellipse is defined by a center, two principal axis and gamma that defines the angle between the first principal axis an the x-axis.

At(t)

?

AtAngle(angle)

?

GetBoundingBox()

Returns the bounding rectangle (axis-aligned) of the ellipse

Return type:

Rectangle2

GetA()

Returns the first principal-axis

GetB()

Returns the second principal-axis

GetGamma()

Returns the angle of the first principal axis to the x-axis

GetArea()

Returns the area of the ellipse

GetOrigin()

Returns the center of the ellipse

SetA(a)

Set the length of the first principal axis

SetB(b)

Set the length of the second principal axis

SetGamma(gamma)

Set the angle of the first principal axis to the x-axis

SetOrigin(ori)

Set the center of the ellipse

Geometrical Objects in Three Dimensions

class Line3
class Line3(from, to)

Parametric line in three dimensions as defined by an origin and a normalized direction vector. The first constructor creates a line with origin (0,0) and direction along the x axis. The second signature creates a line originating from from and pointing towards to.

At(t)

Returns the point on the line at (signed) distance t from origin.

Parameters:

t (float) – free parameter

Return type:

Vec3

GetOrigin()

Returns the origin of the line: Also available as origin.

Return type:

Vec3

GetDirection()

Returns the normalized direction vector. Also available as direction.

Return type:

Vec3

direction
Type:

Vec3

origin
Type:

Vec3

class Plane
class Plane(p1, p2, p3)
class Plane(x, y, z, p)
class Plane(line, point)
class Plane(point, normal)

A plane in 3d-space. The plane can be constructed by either passing in 3 points (p1, p2, p3), a normal and a point, the four parameters that define the implicit plane equation (x, y, z, p) or a line and a point.

GetNormal()

Returns the normal of the plane. Also available as normal

Return type:

Vec3

GetP()

Returns the plane offset, i.e. the projection of any point on the plane onto the normal. Also available as p.

Return type:

float

GetOrigin()

Get the origin of the plane. Also available as origin.

Return type:

Vec3

origin
Type:

Vec3

normal
Type:

Vec3

p
Type:

float

class Sphere
class Sphere(center, radius)

Represents a sphere in 3d space. The first constructor creates a sphere with radius 1, centered at (0, 0, 0), the second allows you to set the radius and center directly.

Parameters:
  • center (Vec3) – The center

  • radius (float) – The radius

radius

The radius of the sphere. Read-write. Also available as GetRadius(), SetRadius().

Type:

float

origin

The center of the sphere. Read-write. Also available as GetOrigin(), SetOrigin().

Type:

Vec3

GetOrigin()

See origin

SetOrigin(origin)

See origin

GetRadius()

See radius

SetRadius(radius)

See radius

class AlignedCuboid(min, max)

Axis aligned cuboid is a cuboid whose axes are aligned to the x-, y-, and z- axes of the coordinate system. For arbitrarily oriented bounding cuboid class, see Cuboid.

GetMin()

Get minimum coordinate, i.e. the lower bound of x-, y-, and z for any point in the cuboid

Return type:

Vec3

GetMax()

Get maximum coordinate, i.e. the upper bound of x-, y-, and z for any point in the cuboid.

Return type:

Vec3

class CuboidAxis
class CuboidAxis(dir, half_extent)

A cuboid axis is defined by a half-extent, and a direction vector. This class is used in together with the Cuboid class.

Parameters:
  • dir (Vec3) – Direction vector, will be normalized

  • half_extent (float) – The half extent

vector

The normalized direction vector of the cuboid axis. Also available as GetVector()

Type:

Vec3

half_extent

The half extent of the cuboid axis is the magnitude of the cuboid axis measured from the center to the corner. Also available as GetHalfExtent()

Type:

float

extent

The extent of the cuboid axis. This value is always twice the half_extent. Read-only. Also available as GetExtent().

Type:

float

GetHalfExtent()

See half_extent

GetExtent()

See extent

GetVector()

See vector

class Cuboid(center, axis_a, axis_b, axis_c)

An arbitrarily oriented cuboid defined by a center and 3 axis. The 3 cuboid axis are stored in the order they are passed to the constructor. This means, that there is no guarantee that the 3 axes form a right-handed coordinate system. If a right-handed coordinate system is a requirement, you have to ensure this on your own:

center=...
axis_a=geom.CuboidAxis(...)
axis_b=geom.CuboidAxis(...)
axis_c=geom.CuboidAxis(geom.Cross(axis_a.vector, axis_b.vector), ...)

cuboid=geom.Cuboid(center, axis_a, axis_b, axis_c)
Parameters:
center

The center of the cuboid.

Type:

Vec3

axis_a

The first cuboid axis

Type:

CuboidAxis

axis_b

The second cuboid axis

Type:

CuboidAxis

axis_c

The third cuboid axis

Type:

CuboidAxis

Operations on Geometrical Objects

Angle(lhs, rhs)

Calculate the angle (in radians) between lhs and rhs.

Parameters:
Return type:

float

IntersectionPoint(lhs, rhs)

Calculates and returns the intersection point between lhs and rhs

Parameters:
Raises:

RuntimeError when the two objects do not intersect

Return type:

Vec3 (Vec2 in case of Line2)

IntersectionLine(plane2, plane2)

Returns the intersection line between plane1 and plane2.

Parameters:
  • plane1 (Plane) – The first plane

  • plane2 (Plane) – The second plane

Raises:

RuntimeError if the two planes are parallel.

Distance(lhs, rhs)

Returns the minimal distance between lhs and rhs.

Parameters:
Return type:

float

IsOnLine(line, point, epsilon=geom.EPSILON)

Check whether point lies on line and returns true if point i no further away than epsilon.

Return type:

bool

IsInPlane(plane, object, epsilon=geom.EPSILON)

Check whether object lies in plane and returns true if the difference is no bigger than epsilon.

Parameters:
Return type:

bool

AreParallel(lhs, rhs, epsilon=geom.EPSILON)

Check whether lhs and rhs are parallel and returns true, if the difference is below the given treshold epsilon.

Parameters:
Return type:

bool

AreIntersecting(line1, line2, epsilon=geom.EPSILON)

Check whether line1 and line2 are intersecting and returns true, if they intersect below the given threshold epsilon.

Parameters:
Return type:

bool

IsInSphere(sphere, point)

Check whether the sphere contains point.

Return type:

bool

MinDistance(list1, list2)

Calculate the minimal distance between two sets of points

Parameters:
  • list1 (Vec3List) – the first set of points

  • list2 (Vec3List) – the second set of points