Point

class compas.geometry.Point(x, y, z=0.0)[source]

Bases: compas.geometry.primitives._primitive.Primitive

A point is defined by XYZ coordinates.

Parameters
  • x (float) – The X coordinate of the point.

  • y (float) – The Y coordinate of the point.

  • z (float, optional) – The Z coordinate of the point. Default is 0.0.

Attributes
  • data (dict) – The data representation of the point.

  • x (float) – The X coordinate of the point.

  • y (float) – The Y coordinate of the point.

  • z (float) – The Z coordinate of the point.

Notes

A Point object supports direct access to its xyz coordinates through the dot notation, as well list-style access using indices. Indexed access is implemented such that the Point behaves like a circular list 1.

References

1

Stack Overflow. Pythonic Circular List. Available at: https://stackoverflow.com/questions/8951020/pythonic-circular-list.

Examples

>>> p1 = Point(1, 2, 3)
>>> p2 = Point(4, 5, 6)

The XYZ coordinates of point objects can be accessed as object attributes or by trating the points as lists.

>>> p1.x
1.0
>>> p1.y
2.0
>>> p1.z
3.0
>>> p1[0]
1.0
>>> p1[1]
2.0
>>> p1[2]
3.0

Point objects support basic arithmetic operations.

>>> p1 + p2
Point(5.000, 7.000, 9.000)
>>> p1 * 2
Point(2.000, 4.000, 6.000)
>>> p1 ** 2
Point(1.000, 4.000, 9.000)
>>> p1
Point(1.000, 2.000, 3.000)

Points and lists can be used interchangeably.

>>> p1 + [4, 5, 6]
Point(5.000, 7.000, 9.000)

Arithmetic operations can also be applied to modify a point object in-place.

>>> p1 += p2
>>> p1 *= 2
>>> p1 **= 2
>>> p1
Point(100.000, 196.000, 324.000)

Methods

copy()

Makes a copy of this primitive.

distance_to_line(line)

Compute the distance to a line.

distance_to_plane(plane)

Compute the distance to a plane.

distance_to_point(point)

Compute the distance to another point.

from_data(data)

Construct a point from a data dict.

from_json(filepath)

Construct a primitive from structured data contained in a json file.

in_circle(circle)

Determine if the point lies inside the given circle.

in_polygon(polygon[, convex])

Determine if the point lies inside the given polygon.

in_polyhedron(polyhedron)

Determine if the point lies inside the given polyhedron.

in_triangle(triangle)

Determine if the point lies inside the given triangle.

on_circle(circle)

Determine if the point lies on the given circle.

on_line(line)

Determine if the point lies on the given line.

on_polyline(polyline)

Determine if the point lies on the given polyline.

on_segment(segment)

Determine if the point lies on the given segment.

to_data()

Returns the data dictionary that represents the primitive.

to_json(filepath)

Serialise the structured data representing the primitive to json.

transform(T)

Transform this point.

transform_collection(collection, X)

Transform a collection of points.

transformed(transformation)

Returns a transformed copy of this primitive.

transformed_collection(collection, X)

Create a collection of transformed points.

validate_data()

Validate the data of this object against its data schema (self.DATASCHEMA).

validate_json()

Validate the data loaded from a JSON representation of the data of this object against its data schema (self.DATASCHEMA).