Math 图像线跟踪数学很难解释
对不起,这个标题让人困惑,我真的很难解释我想要什么。所以我创建了这个图像:) 两个红点是图像上的点。他们之间的距离并不重要 我想做的是,使用两个点的坐标,计算出它们之间的空间角度(如红点之间的黑线所示) 一旦找到角度,在最后一个红点上,创建两个与第一条线的角度相交的点。然后,扫描半个半圆,得到橙色线经过的图像的每个像素的坐标 我不知道这对你们是否有意义,所以我画了另一幅画: 正如你在第二张图中所看到的,我的想法被应用到了一条画在黑色canavs上的线上。两个红点是起始坐标,然后在两个点的末端创建一个小于半个半圆。橙色部分显示应记录的图像像素 我不知道如何开始这项工作,因此,如果有人对我的能力或我需要做什么有任何想法,我们非常感谢您的帮助:) 编辑。 我创建这个图像是希望它能让我想做的更清楚:)Math 图像线跟踪数学很难解释,math,image-processing,vector,Math,Image Processing,Vector,对不起,这个标题让人困惑,我真的很难解释我想要什么。所以我创建了这个图像:) 两个红点是图像上的点。他们之间的距离并不重要 我想做的是,使用两个点的坐标,计算出它们之间的空间角度(如红点之间的黑线所示) 一旦找到角度,在最后一个红点上,创建两个与第一条线的角度相交的点。然后,扫描半个半圆,得到橙色线经过的图像的每个像素的坐标 我不知道这对你们是否有意义,所以我画了另一幅画: 正如你在第二张图中所看到的,我的想法被应用到了一条画在黑色canavs上的线上。两个红点是起始坐标,然后在两个点的末端
再次抱歉,如果这让任何人感到困惑,因为我真的不知道如何解释。嗯。。。我想我明白你的意思,但如果我错了,请发表评论 我相信蓝点不是真的需要。我认为你的建议是简单地扫描一个圆中的一个点(红点),找到该圆的交点,然后确定该交点与第二个点(另一个红点)的夹角 我想你知道如何计算两个红点之间的角度,这很简单 有许多方法可以计算与圆的交点,蛮力法可以应用如下迭代公式:
x = r * sin(t)
y = r * cos(t)
以第一个红点为中心,其中r是扫描半径
将公式应用于像素网格,您应该能够确定哪些像素是这两个方程的解
应该至少有两个点与圆相交,我认为消除不必要的点应该相当简单(取决于您正在跟踪的线的属性)
现在您可以计算该交点与中心红点的角度。使用这个角度和之前计算的红点之间的角度,得到我相信你想要的
编辑:从实现的角度来看,如果位图足够稀疏,那么在算法上,将所有像素坐标以某种连续方式排列在一个数组中会更加有效。这将使在当前像素的某个半径处搜索相应的像素变得更加简单。好的,因此开口角度是恒定的,横线仅用于构造。好
您希望使用来选择要扫描的点 首先画出终点。为此,你要做一点像这样的向量数学
- 设(x,y)为第二个红点的坐标,R为要扫描的半径(您尚未指定,但我假设您知道它是什么),θ为线段与水平面的角度。(如果你需要帮助计算θ,就说)
- 端点是[+,-]中i的(X_i,Y_i)。在哪里
- 你有两个A点和B点,你需要画一条弧
- 圆弧应该是四分之一圆(也称为“半个半圆”)
- 第一个点A是圆弧的中心/旋转点
- A&B定义的直线应在其中点与圆弧相交
(x-Ax)^2 + (y-Ay)^2 = r^2
现在您只需要将此集合限制在所需的四分之一圆内的点。我建议最简单的方法是在弧中点一定距离内包含点
为此,首先计算出圆弧的中点。让点B由(Bx,by)定义,然后将点C定义为弧的中点(Cx,Cy)
现在,对于圆弧上的任何点,从该点(x,y)到圆弧中点绘制一条弦(圆上两点之间的线)
这条线的长度可以通过圆的半径和两个半径之间的角度来计算。弦的长度公式是2r.sin(a/2),其中r是半径,a是半径之间的角度。我们希望中点两边各成45度,所以最大弦长为
2r.sin(45/2)
所以在2r.sin(45/2)范围内的点(Cx,Cy)足够近,可以画一个四分之一圆。你的结果是
Any coordinate (x, y) such that
(x-Ax)^2 + (y-Ay)^2 = r^2
(x-Cx)^2 + (y-Cy)^2 <= (2r.sin(45/2))^2
任何坐标(x,y),使得
(x-Ax)^2+(y-Ay)^2=r^2
(x-Cx)^2+(y-Cy)^2 Er。。。“使用两个点的坐标,计算出它们之间的空间角度”是不清楚的。从第三点看它们之间的角度?此外,您在每个图形中都显示了一些蓝点,但没有提到任何关于它们的内容。它们是测量“红点之间的角度”的点吗?它们有什么意义吗?请试着更清楚地重复这个问题。我怀疑你脑子里有一些我们不知道的背景。我尽力解释,整个事情有点超出我的理解范围,但我会想出另一个可能的形象
2r.sin(45/2)
Any coordinate (x, y) such that
(x-Ax)^2 + (y-Ay)^2 = r^2
(x-Cx)^2 + (y-Cy)^2 <= (2r.sin(45/2))^2