// 检查相交情况 public bool Crossing(TensionSpline other) { if (this == other) // 自交检查 { for (int i = 0; i < segments.Length - 2; i++) { for (int j = i + 2; j < segments.Length; j++) { if ((looping && (i != 0 || j != segments.Length - 1)) && // 循环时不检查首尾 segments[i].Crossing(segments[j])) { return(true); } } } return(false); } foreach (var seg1 in segments) { foreach (var seg2 in other.segments) { if (seg1.Crossing(seg2)) { return(true); } } } return(false); }
public TensionNode(TensionSpline origin, int idx) { parent = origin; index = idx; Reset(); }