0

我想将点坐标转换为新生成的坐标系,原始系统从图像的左上角开始(0,0)

我在新系统中的信息是: 1- 我在图像中的某些位置有新原始 (x0,y0) 的值 2- 我在两个新轴上也有 2 个点(总共 4 个点 2 in每条线)使用它我可以计算两条轴的线方程(y = a1x + b1),(y = a2x + b2)3-我有每条线的向量(Vx,Vy)

注意:有时新轴会旋转(线条不完全水平或垂直)

如何将点坐标转换为这个新系统

任何帮助将不胜感激

这是图像

http://i.imgur.com/ByDR7Vq.png

4

1 回答 1

0

首先表达你的线条a1*(x-x0)+b1*(y-y0)=0a2*(x-x0)+b2*(y-y0)=0它们的交点x0y0已经在方程中占了。

更新的标志

x从,yz,的变换w

z = -sqrt(a1^2+b1^2)*(a2*(x-x0)+b2*(y-y0))/(a2*b1-a1*b2)
w =  sqrt(a2^2+b2^2)*(a1*(x-x0)+b1*(y-y0))/(a1*b2-a2*b1)

和相反的

x = x0 - b1*z/sqrt(a1^2+b1^2) + b2*w/sqrt(a2^2+b2^2)
y = y0 + a1*z/sqrt(a1^2+b1^2) - a2*w/sqrt(a2^2+b2^2)

将系数缩放为sqrt(a1^2+b1^2)=1和会很有帮助sqrt(a2^2+b2^2)=1

请注意,这也适用于非正交线。只要它们不平行,a2*b1-a1*b2!=0它就会起作用。

例子

z线 (-2)*(x-3) + (1)*(y-1) = 0w线在(-1)*(x-3) + (-4)*(y-1) = 0处相遇(3,1)。因此,系数为a1=-2, b1=1, a2=-1, b2=-4

坐标(x,y)=(2,1)变换为

z = -sqrt((-2)^2+1^2) ((-1) (x-3)+(-4) (y-1))/((-1) 1-(-2) (-4)) = 0.2484
w = sqrt((-1)^2+(-4)^2) ((-2) (x-3)+1 (y-1))/((-2) (-4)-(-1) 1) = 0.9162

与逆

x = -1 z/sqrt((-2)^2+1^2)+(-4) w/sqrt((-1)^2+(-4)^2)+3 = 2
y = (-2) z/sqrt((-2)^2+1^2)-(-1) w/sqrt((-1)^2+(-4)^2)+1 = 1

发展

对于一条线a1*(x-x0)+b1*(y-y0)=0,沿该线的方向矢量为e1 = [e1x,e1y]= [-b1/sqrt(a1^2+b1^2),a1/sqrt(a1^2+b1^2)]。另一条线也是如此。

本地点的屏幕坐标[z,w]是从原点开始x0,沿着第一条线y0移动z,然后w沿着第二条线移动。所以

x = x0 + e1x*z + e2x*w = x0 -b1/sqrt(a1^2+b1^2)*z - b2/sqrt(a2^2+b2^2)*w
y = y0 + e1y*z + e2y*w = y0 +a1/sqrt(a1^2+b1^2)*z + a2/sqrt(a2^2+b2^2)*w

现在我需要通过反转w.

要找到zwxy反转上述两个方程。

于 2013-04-11T19:24:39.293 回答