如何检测样条曲线中的自碰撞?

时间:2017-07-18 08:09:09

标签: python numpy scipy

我正在编写一个随机生成的样条曲线,首先生成控制点,然后使用spicy.splev进行插值。Here就是一个例子。

现在我要查看:

a)如果样条与自身发生碰撞。 b)如果a)我想得到交叉角。

这些点存储在numpy数组中,如:

SQL> WITH cte_sample(value,id,h,D) AS (
  2   SELECT 1.0, 32, 0, to_date('Jul 18, 2017', 'Mon DD, YYYY') FROM dual UNION ALL
  3   SELECT  5.6, 54, 1, to_date('Jul 17, 2017', 'Mon DD, YYYY')  FROM dual UNION ALL
  4   SELECT 3.5, 178, 2, to_date('Jul 18, 2017', 'Mon DD, YYYY')  FROM dual UNION ALL
  5   SELECT 3.4, 178, 2, to_date('Jul 16, 2017', 'Mon DD, YYYY')  FROM dual UNION ALL
  6   SELECT 3.6, 178, 3, to_date('Jul 18, 2017', 'Mon DD, YYYY')  FROM dual ),
  7  ----------------------
  8  -- End of data
  9  ----------------------
 10  extracted_table AS (
 11  SELECT CASE WHEN d = trunc(sysdate) THEN VALUE ELSE NULL END AS VALUE,
 12         ID,
 13         h,
 14         d,
 15         row_number() OVER(PARTITION BY ID ORDER BY CASE WHEN d = trunc(SYSDATE) THEN -9 ELSE h END) rn
 16    FROM cte_sample)
 17  SELECT VALUE, ID, h FROM extracted_table WHERE rn = 1;

知道如何处理这个问题吗?如果每个线段与样条曲线中的任何其他线段发生碰撞,它是否可以选择?提前谢谢!