我想将点坐标转换为新生成的坐标系 原始系统从图像的左上角开始(0,0)
我在新系统中的信息是: 1-我在图像的某些位置有新原始值(x0,y0)的值 2-同时我在两个新轴上都有2个点(每行共2个点4个点) 使用这个我可以计算2行轴的线方程(y = a1x + b1),(y = a2x + b2) 3-我每行都有矢量(Vx,Vy)
注意:有时新轴旋转(线条不是完全水平或垂直)
如何将点坐标转换为此新系统
任何帮助都将受到如此赞赏
这是图像
答案 0 :(得分:0)
首先表达您的行a1*(x-x0)+b1*(y-y0)=0
和a2*(x-x0)+b2*(y-y0)=0
,并且他们的交集x0
,y0
已经计算在等式中。
更新了标志
从x
,y
到z
,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) = 0
和w
行(-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
,然后按{{ 1}}沿着第二行。所以
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
查找z
,w
,x
会反转上述两个等式。