template <typename T> coordinate_type get(const T& interval, direction_1d) |
期望一个区间模型。根据 direction_1d 的值,返回区间的低坐标或高坐标。
|
template <typename T, typename coordinate_type> void set(T& interval, direction_1d, coordinate_type) |
期望一个区间模型。根据 direction_1d 的值,将区间的低坐标或高坐标设置为 coordinate。如果此更改后低坐标将大于高坐标,则两者都设置为输入坐标值。 |
template <typename T> T construct(coordinate_type low, coordinate_type high) |
给定低高坐标值,构造一个区间模型对象。 |
template <typename T1, typename T2> T1& assign(T1& left, const T2& right) |
将数据从模拟区间的右对象复制到模拟区间的左对象。 |
template <typename T, typename T2> bool equivalence(const T& interval1, const T2& interval2) |
给定两个区间模型对象,进行比较并返回 true,如果它们的低值和高值分别相等。 |
template <typename T> bool contains(const T&, coordinate_type, bool consider_touch=true) |
给定一个区间模型对象和一个坐标,如果区间包含该坐标,则返回 true。如果 consider_touch 标志为 true,则当坐标等于区间端点之一时,返回 true。 |
template <typename T1, typename T2> bool contains(const T1& a, const T2& b, bool consider_touch = true) |
当区间模型 a 包含区间模型 b 的两个端点时,返回 true。如果 consider_touch 标志为 true,即使 b 的端点等于 a 的端点,也认为 b 的端点包含在 a 中。 |
template <typename interval_type> coordinate_type low(const interval_type& interval) |
返回区间模型对象的低端点。 |
template <typename interval_type> coordinate_type high(const interval_type& interval) |
返回区间模型对象的高端点。 |
// get the center coordinate template <typename interval_type> coordinate_type center(const interval_type& interval) |
返回区间模型对象的中心坐标。 |
template <typename interval_type> void low(interval_type& interval, coordinate_type ) |
将区间模型对象的低端点设置为 coordinate 值。如果低端点将设置为大于高端点,则两者都设置为 coordinate 值。 |
template <typename interval_type> void high(interval_type& interval, coordinate_type ) |
将区间模型对象的高端点设置为 coordinate 值。如果高端点将设置为小于低端点,则两者都设置为 coordinate 值。 |
template <typename interval_type> coordinate_difference delta(const interval_type& interval) |
返回区间模型对象从低端点到高端点的距离。 |
template <typename interval_type> interval_type& flip(interval_type& interval, coordinate_type axis = 0) |
围绕 axis 坐标翻转区间模型对象。如果未提供 axis,则区间将围绕原点翻转。 |
template <typename interval_type> interval_type& scale_up(interval_type& interval, unsigned_area_type factor) |
将区间模型对象的低端点和高端点乘以 unsigned 因子。 |
template <typename interval_type> interval_type& scale_down(interval_type& interval, unsigned_area_type factor) |
将区间模型对象的低端点和高端点除以 unsigned 因子。 |
template <typename interval_type> interval_type& scale(interval_type& interval, double factor) |
将区间模型对象的低端点和高端点乘以浮点值。 |
template <typename interval_type> interval_type& move(interval_type& interval, coordinate_difference displacement) |
将 displacement 值加到区间模型对象的低端点和高端点。 |
template <typename interval_type> interval_type& convolve(interval_type& interval, coordinate_type b) |
将 coordinate 值加到区间模型对象的低端点和高端点。 |
template <typename interval_type> interval_type& deconvolve(interval_type& interval, coordinate_type b) |
从区间模型对象的低端点和高端点减去 coordinate 值。 |
template <typename T1, typename T2> T1& convolve(T1& a, const T2& b) |
将 b 的低端点加到 a 的低端点,并将 b 的高端点加到 a 的高端点。 |
template <typename T1, typename T2> T1& deconvolve(T1& a, const T2& b) |
将 b 的低端点从 a 的低端点减去,并将 b 的高端点从 a 的高端点减去。 |
template <typename T1, typename T2> T1& reflected_convolve(T1& a, const T2& b) |
将 b 的高端点加到 a 的低端点,并将 b 的低端点加到 a 的高端点。 |
template <typename T1, typename T2> T1& reflected_deconvolve(T1& a, const T2& b) |
将 b 的高端点从 a 的低端点减去,并将 b 的低端点从 a 的高端点减去。 |
template <typename T> coordinate_difference euclidean_distance(const T&, coordinate_type) |
返回区间模型对象到坐标的距离。如果坐标等于区间的一个端点或包含在区间内,则返回零。 |
template <typename T1, typename T2> bool intersects(const T1& interval, const T2& b, bool consider_touch = true) |
当两个区间模型对象重叠时返回 true。如果 consider_touch 标志为 true,则触碰端点被视为重叠。 |
template <typename T1, typename T2> bool boundaries_intersect(const T1& interval, const T2& b, bool consider_touch = true) |
当两个区间模型对象部分重叠,使得每个对象的一个端点包含在另一个对象内时,返回 true。如果 consider_touch 标志为 true,即使坐标等于端点,也认为该坐标被包含。 |
template <typename T1, typename T2> bool abuts(const T1& a, const T2& b, direction_1d dir) |
如果区间 b 紧邻区间 a 但不在其上重叠(在 dir 指定的 a 的端点处),则返回 true。 |
template <typename T1, typename T2> bool abuts(const T1& a, const T2& b) |
如果区间 b 紧邻区间 a 但不在其上重叠,则返回 true。 |
template <typename T1, typename T2> bool intersect(T1& a, const T2& b, bool consider_touch = true) |
将区间 a 设置为区间 a 和区间 b 的交集,并返回 true。如果两个区间不相交,则区间 a 不变,函数返回 false。如果 consider_touch 标志为 true,则相邻的区间被视为相交。 |
template <typename T1, typename T2> T& generalized_intersect(T1& a, const T2& b) |
与 intersect 相同,但如果它们不相交,则将 a 设置为 a 和 b 之间的区间。 |
template <typename T> T& bloat(T& interval, coordinate_type) |
将 coordinate 值加到区间的高端点,并从区间的低端点减去它。 |
template <typename T> T& bloat(T& interval, direction_1d, coordinate_type) |
根据 direction_1d,将 coordinate 值加到区间的高端点或从区间的低端点减去它。 |
template <typename T> T& shrink(T& interval, coordinate_type) |
从区间的高端点减去 coordinate 值,并将其加到区间的低端点。 |
template <typename T> T& shrink(T& interval, direction_1d, coordinate_type) |
根据 direction_1d,从区间的高端点减去 coordinate 值或加到区间的低端点。 |
template <typename T1, typename T2> bool encompass(T1& a, const T2& b) |
将 a 的 low 设置为 min(a.low, b.low),并将 a 的 high 设置为 max(a.high, b.high)。如果 b 最初不包含在 a 中,则返回 true。 |
template <typename T> bool encompass(T& a, coordinate_type) |
将 a 的 low 设置为 min(a.low, coordinate value),并将 a 的 high 设置为 max(a.high, coordinate value)。如果 coordinate value 最初不包含在 a 中,则返回 true。 |