图像行迹线数学帮助难以解释

Image Line Trace Math Help Hard To Explain

很抱歉,标题令人迷惑,我真的很难解释我想要什么。所以我创建了这张图片:)
alt


只需要澄清一下:

  • 你有两点


    好的,因此打开angular是恒定的,并且横向线仅在此处用于构造。好。

    您想使用Bresenham圆选择要扫描的点。

    首先计算终点。为此,您可以像这样进行一些矢量数学运算

    • 令(x,y)为第二个红点的坐标,R为您要扫描的半径(您尚未指定,但我假设您知道它是什么),而theta是该angular从水平线段。 (如果需要确定theta的帮助,请说)
    • 在[,-]中,i的端点是(X_i,Y_i)。在哪里
    1
    2
    3
    4
    X_+ = x + R*cos(theta + 70)  // angles expressed in degrees for ease here,
    Y_+ = y + R*sin(theta + 70)  // your language probably expects radians
    X_- = x + R*cos(theta - 70)  
    Y_- = y + R*sin(theta - 70)

    请注意theta应该绕整个圆(0--360度或0-2 \\\\\\\\ pi弧度)。

    然后,您可以使用圆算法选择要按顺序放入数组中的像素(如果您正在绘制,则会被着色,但在这种情况下将被复制)。 Bjorn Strongingthearm是你的叔叔。


    嗯...我想我知道你想做什么,但是如果我做错了,请发表评论。

    我相信这些蓝点并不是真正需要的。我认为您的建议是简单地绕圆中的一个点(红点)扫描,找到该圆的相交点,并确定该相交的angular与第二个点(另一个红点)的angular。

    我想您知道如何计算两个红点之间的angular,这很简单。

    有多种计算圆的交点的方法,蛮力方法是应用迭代公式,如:

    1
    2
    x = r * sin(t)
    y = r * cos(t)

    以第一个红点为中心,其中r是您的扫描半径。

    将公式应用于像素网格,您应该能够确定哪些像素是两个方程的解。

    应该至少有2个与圆相交的点,我认为消除不必要的点应该很简单(取决于要跟踪的线的属性)。

    现在,您可以计算该相交点和中心红点的angular。使用该angular和以前计算出的红点之间的angular,可以得到我想要的。

    编辑:从实现的angular来看,如果您的位图足够稀疏,则将所有像素坐标放入数组中(以某种连续方式排序)在算法上会更加有效。这将使从当前像素开始以一定半径搜索相应像素变得更加简单。