algorithm - 在绘图引擎中查找交叉线

标签 algorithm actionscript-3

我正在开发一个小型多媒体项目,在该项目中,用户可以通过用线连接点来在 Canvas (2d) 上绘制形状。 但我需要禁止用户越线。

我正在寻找的是一个可以找到相交线的小算法。 该项目是在 AS3/Flash 中完成的,但我想答案是通用的。

谁能给我一个线索?

谢谢

最佳答案

这是 Java 中的示例,但我认为您可以轻松适应 AS3:

public static boolean intersects(double ax, double ay, double bx, double by,
        double cx, double cy, double dx, double dy) {
    double denum = ((bx-ax)*(dy-cy)-(by-ay)*(dx-cx));
    if (denum == 0) return false; // parallel segments
    double r = ((ay-cy)*(dx-cx)-(ax-cx)*(dy-cy)) / denum;
    double s = 
            ((ay-cy)*(bx-ax)-(ax-cx)*(by-ay)) / denum;
    return 0<=r && r<=1 && 0<=s && s<=1;
}

如果线段 [AB] 和 [CD] 相交,它应该返回 true。 您可以找到引用 here

关于algorithm - 在绘图引擎中查找交叉线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11151767/

相关文章:

arrays - 在这种情况下使用哪种搜索算法更好?

algorithm - Bin Packing - 蛮力递归解决方案 - 如何使其更快

actionscript-3 - 根据绿色对蓝色和红色的数量计算值

actionscript-3 - AS3 : Is it possible to capture stage elements or bitmap data into a netstream?

apache-flex - 保护应用程序的某些部分

javascript - 为什么我使用位图缓冲区在索引和 x,y 之间转换的算法会导致图像垂直翻转?

algorithm - 将一组数字分成 k 个子集,使值均匀分布

java - 在基于网格的碰撞检测中避免重复?

css - Apache Flex 4.14.1 BorderContainer Radius 仅适用于 Debugger

actionscript-3 - AS3 链接到网页