anchor.diff:  %% new/0
   %% --------------------------------------------------------------------
   %% @doc create empty volume for default max depth.
  -%% 
  +%%
   -spec new_volume() -> ot_volume().
   %% --------------------------------------------------------------------
   new_volume() -> #ot_volume{}.
  
positive.code: 
  normalize(_P1, _P2) ->
      throw(unsupported_point_type_combination).
      
  
  %% to_node_id/2
  %% --------------------------------------------------------------------
  %% @doc create a node identifier from a 3D Vector. 
  %%
  %% The function will return the octree leaf node that contains the point
  %% given by the argument.
  %% @end
  -spec to_node_id(vec_3d() | ot_node_list(), 
                   MaxDepth :: non_neg_integer()) -> ot_node_id().
  %% --------------------------------------------------------------------
  to_node_id(Val = {V,_,_}, _D) when (V < 0.0) or (V >= 1.0) ->
  
negative.code: %% @doc split a number of segments in a list.
  %%
  %% @end
  -spec split_borders(Segments :: [ {#ot_node_id{}, #ot_node_id{}} ],
                      Dim :: x|y|z) ->
            [ {#ot_node_id{}, #ot_node_id{}} ].
  %% --------------------------------------------------------------------
  split_borders(Segments, Dim) ->
      lists:foldl(fun({P1, P2},Acc) ->
                          Acc ++ split_border(P1,P2,Dim)
                          end, [], Segments).
  
  %% split_border/3
  %% --------------------------------------------------------------------
  %% @doc split segment along top most border based on given dimension.
  