/// <summary> /// Finds the data node. /// </summary> /// <returns> /// The data node. /// </returns> /// <param name='Root'> /// Root. /// </param> /// <param name='ys'> /// Ys. /// </param> /// <param name='x'> /// X. /// </param> /// <exception cref='Exception'> /// Represents errors that occur during application execution. /// </exception> public static VDataNode FindDataNode(VNode Root, double ys, double x) { VNode C = Root; do { if (C is VDataNode) { return(C as VDataNode); } VEdgeNode cEdge = C as VEdgeNode; if (cEdge == null) { throw new Exception("Can't cast to edge node"); } if (cEdge.Cut(ys, x) < 0) { C = C.Left; } else { C = C.Right; } } while(true); }