求助:谁能帮我解解这个题啊?
这个题是用C++写一个求解几何变换后的坐标问题。
已知量是:
两个点,以及两个点通过变换后的新坐标。分别设为(x1,y1)----转变为-->(x1',y1'),(x2,y2)----转变为-->(x2',y2')
转变的公式是:
x1' = x0 + s*x1*cosa - s*y1*sina;
y1'= y0 + s*x1*sina + s*y1*cosa;
其中的x0 y0是平移量, s 是比例缩放量, a 是旋转角度。(皆为未知)。
现在要求输入一个 点(x3,y3), 输出为转变后的(x3',y3')。
[解决办法]
先转成向量把平移量消去分别对应向量(2->1)和向量(2'->1')
(x1-x2,y1-y2)-->(x1'-x2',y1'-y2')
还有一个参考向量是(2->3)
((x3-x2)+(y3-y2)*i)
然后用复数来表示点,复数除法得到旋转量
((x1'-x2')+(y1'-y2')*i) / ((x1-x2)+(y1-y2)*i)
然后乘以新的向量,得到旋转后的新的向量(2'->3')
((x1'-x2')+(y1'-y2')*i) / ((x1-x2)+(y1-y2)*i) × ((x3-x2)+(y3-y2)*i)
向量(2'->3')加上点2'的坐标,就可以得到3'的坐标
((x1'-x2')+(y1'-y2')*i) / ((x1-x2)+(y1-y2)*i) × ((x3-x2)+(y3-y2)*i) + (x2+y2*i)
[解决办法]