#AEAI04001. 相机目标点到机械臂基座

相机目标点到机械臂基座

题目描述

自动化科协具身智能部在调试桌面机械臂时,相机会先在自己的二维坐标系中给出目标点。已知相机坐标系相对于机械臂基座坐标系的平移 (tx, ty) 和逆时针旋转角 theta,请把每个相机坐标点转换到基座坐标系。

对相机点 (x, y),转换公式为:

X = cos(theta) * x - sin(theta) * y + tx

Y = sin(theta) * x + cos(theta) * y + ty

其中 theta 的单位为度。

输入格式

第一行输入三个实数 tx ty theta

第二行输入整数 N

接下来 N 行,每行输入一个相机坐标点 x y

输出格式

输出 N 行。每行输出转换后的基座坐标 X Y,保留 6 位小数。

判定规则

使用标准输出比较。若结果绝对值小于 5e-7,按 0.000000 输出。角度按度转弧度后参与三角函数计算。

数据范围与测试提示

  • 正式测试会覆盖样例没有出现的边界输入,请不要依赖样例规模或样例顺序写特判。
  • 输出只包含题目要求的字段,不要输出调试信息;浮点结果按题面要求保留 6 位小数。
  • 点数可能取到很小或较大的规模,坐标、平移量和角度都可能为负数,角度也可能落在 0、90、180、270 等特殊位置。
  • 旋转后非常接近 0 的结果需要按判定规则输出为 0.000000,隐藏数据会检查负零、整十角度和大坐标叠加后的精度。
  • 隐藏数据会检查 abs(value) < 5e-7 的归零、90/180/360 度旋转以及负坐标组合。

样例

输入样例 1

10 20 0
2
1 2
-10 -20

输出样例 1

11.000000 22.000000
0.000000 0.000000

输入样例 2

0 0 90
2
1 0
0 1

输出样例 2

0.000000 1.000000
-1.000000 0.000000