跳到主要内容
Z

线段相交可视化工具

以动画方式呈现线段相交检测——通过叉积(cross-product)方向判定(orientation test)来判断,并计算精确的交点,支持逐步操作。直接在浏览器中运行。

免费 无需注册 客户端运行 注重隐私 Updated

/

伪代码

Press Run to animate the algorithm.

使用方法

  1. 1 点击 Run 检测两条线段是否相交。
  2. 2 观察决定结果的四个叉积方向判定过程。
  3. 3 如果两条线段相交,交点会以绿色标出;如果不相交,线段会变为红色。
  4. 4 使用 Shuffle 随机生成一对新的线段。

为什么使用此工具

  • 了解四个叉积方向判定如何在不使用除法运算的情况下检测线段相交。
  • 理解判定规则:每条线段必须跨越另一条线段所在的直线。
  • 查看两条线段相交时精确交点的计算过程。
  • 完全在浏览器中运行,无需注册,无需上传任何数据。

常见问题

如何判断两条线段是否相交?

使用叉积方向判定:当每条线段的两个端点分别位于另一条线段所在直线的两侧时,两条线段才真正相交。

什么是叉积方向判定?

(b−a) × (c−a) 的符号表示点 c 位于从 a 到 b 的有向直线的左侧(正)、右侧(负),还是恰好在直线上(零)。

时间复杂度是多少?

O(1)——对两条线段只需固定数量的算术运算。若要高效求出 n 条线段之间的所有交点,则需要使用扫描线算法(sweep-line),其时间复杂度为 O((n+k) log n)。

交点是如何计算出来的?

通过行列式(克莱姆法则)求解两条直线方程组成的方程组,一旦确认两条线段相交,即可得到精确的交点。

什么是 线段相交可视化工具?

线段相交可视化工具以动画形式展示叉积方向判定(orientation test),用于判断两条线段是否相交:每条线段必须跨越另一条线段所在的直线。当两条线段相交时,工具会计算出精确的交点。

功能特性

方向判定测试

观察叉积转向测试如何判断线段是否相交。

复杂度

两条线段:O(1)。n 条线段(扫描线算法):O((n + k) log n)。空间复杂度:O(n)。

100% 隐私保护

完全在浏览器中运行 — 不会上传任何数据。

示例

Input

segments (0,0)-(4,4) and (0,4)-(4,0)

Output

intersect: yes, at (2, 2)

常见使用场景

  1. 1

    几何与图形学

    检测多边形、地图中的相交边,或用于碰撞检测。

  2. 2

    学习方向判定数学

    了解带符号叉积如何对转向和相交进行分类。

  3. 3

    理解扫描线算法

    理解扫描线算法如何高效地找到所有交点。

概要

Zerethon 的线段相交可视化工具通过方向判定(叉积测试)在浏览器中动态演示两条线段是否相交以及交点位置。判断两条线段是否相交的时间复杂度为 O(1);检测 n 条线段之间所有交点时,使用扫描线算法(sweep-line,Bentley–Ottmann,k 为交点数)的时间复杂度为 O((n + k) log n),空间复杂度为 O(n)。

分类
算法
价格
免费
隐私
基于浏览器
注册
无需

参考资料

隐私

除非另有说明,否则你的数据永远不会离开浏览器。线段相交可视化工具 完全在客户端运行 — 无需上传服务器,不记录日志,不追踪你输入的内容。

相关工具

在 Zerethon Social 上创作、分享与成长

免费注册。赚取积分,收集成就,与全球创作者建立联系。

免费试用 Zerethon