Added
* Added reference to model `Element.model` to `Element`.
* Added `Element.modelgeometry` as the cached geometry of an element in model coordinates, taking into account the modifying effect of interactions with other elements.
* Added `Element.modeltransformation` as the cached transformation from element to model coordinates.
* Added `Element.compute_elementgeometry()`.
* Added `Element.compute_modelgeometry()` to replace `Element.compute_geometry()`.
* Added `Element.compute_modeltransformation()` to replace `Element.compute_worldtransformation()`.
* Added `Element.is_dirty`.
* Added `compas_model.geometry.minkowski_sum_xy` to compute the Minkowski sum A + B of two convex polygons in the XY plane.
* Added `compas_model.geometry.minkowski_difference_xy` as a convenience method to compute A + -B.
* Added `compas_model.geometry.is_collision_poly_poly_xy` to check for collisions between convex polygons in the XY plane.
* Added `compas_model.geometry.intersection_ray_triangle`.
* Added `compas_model.geometry.intersections_line_aabb`.
* Added `compas_model.geometry.intersections_line_box`.
* Added `compas_model.geometry.intersections_ray_aabb`.
* Added `compas_model.geometry.intersections_ray_box`.
* Added `compas_model.geometry.is_intersection_box_box`.
* Added `compas_model.geometry.is_intersection_line_aabb`.
* Added `compas_model.geometry.is_intersection_line_box`.
* Added `compas_model.geometry.is_intersection_ray_aabb`.
* Added `compas_model.geometry.is_intersection_ray_box`.
* Added `compas_model.geometry.is_intersection_segment_aabb`.
* Added `compas_model.geometry.is_intersection_segment_box`.
* Added `compas_model.geometry.pca_box` for fast OBB calculation.
* Added `compas_model.algorithms.mesh_mesh_contacts`.
* Added `compas_model.datastructures.BVH` extending the base compas tree data structure into a bounding volume hierarchy.
* Added `compas_model.datastructures.AABBNode` representing a node of the BVH using an axis-aligned bounding box.
* Added `compas_model.datastructures.OBBNode` representing a node of the BVH using an oriented bounding box.
* Added `compas_model.datastructures.KDTree` for nearest neighbour search among elements.
* Added `compas_model.models.bvh.ElementBVH`.
* Added `compas_model.models.bvh.ElementAABBNode`.
* Added `compas_model.models.bvh.ElementOBBNode`.
* Added `compas_model.elements.BeamElement`.
* Added `compas_model.elements.ColumnElement`.
* Added `compas_model.elements.PlateElement`.
* Added `compas_model.models.Model.collisions` iterator.
* Added `compas_model.models.graph.InteractionGraph.clear_edges`.
Changed
* Changed `Element.graph_node` to `Element.graphnode`.
* Changed `Element.tree_node` to `Element.treenode`.
* Fixed bug in deserialisation (`element.model` was not set properly).
Removed
* Removed model reference `ElementTree.model` from `ElementTree`.
* Removed `InterfaceElement` from elements.
* Removed `BlockModel`.
* Removed `BlockElement`.
* Removed `model_interfaces`.
* Removed `model_overlaps`.