Geometry 如何计算从屏幕坐标到等轴测屏幕坐标的转换?

Geometry 如何计算从屏幕坐标到等轴测屏幕坐标的转换?,geometry,coordinates,trigonometry,projection,isometric,Geometry,Coordinates,Trigonometry,Projection,Isometric,我得到了二维坐标: 0, 0 200, 0 200, 100 400, 100 400, 200 0, 200 坐标表示以下形状: 但我想动态计算转换为等轴测投影的每个点的屏幕坐标。 所以我有一个屏幕坐标的坐标列表,我想从中生成屏幕坐标,表示形状的等距“版本”。 请注意,我不想计算“等轴测世界”中的坐标,我想得到文字屏幕坐标。 (旋转45度,垂直缩放0.5) 屏幕上每个带问号的点在哪里? 有些坐标很可能会变成负数,但这没关系。这可以通过计算偏移量从逻辑上解决,以便最左边的x坐标为零

我得到了二维坐标:

0,   0
200, 0
200, 100
400, 100
400, 200
0,   200
坐标表示以下形状:

但我想动态计算转换为等轴测投影的每个点的屏幕坐标。 所以我有一个屏幕坐标的坐标列表,我想从中生成屏幕坐标,表示形状的等距“版本”。 请注意,我不想计算“等轴测世界”中的坐标,我想得到文字屏幕坐标。 (旋转45度,垂直缩放0.5)

屏幕上每个带问号的点在哪里? 有些坐标很可能会变成负数,但这没关系。这可以通过计算偏移量从逻辑上解决,以便最左边的x坐标为零

旋转45度,垂直缩放0.5

这是仿射变换:
按旋转中心(xc,yc)坐标移动
旋转
通过xc和一些yc向后移动(您可能需要另一个y向移动以与屏幕边缘对齐) 按y轴缩放

   sq = Sqrt(2)/2   //Cos and Sin of 45
   x_new = xc + (x_old - xc) * sq - (y_old - yc) * sq
   y_new = 0.5 * (yc + (x_old - xc) * sq + (y_old - yc) * sq)
(根据坐标系方向,可能需要将括号中的符号组合从
(+-)(++)
更改为
(++)(+)

旋转45度,垂直缩放0.5

这是仿射变换:
按旋转中心(xc,yc)坐标移动
旋转
通过xc和一些yc向后移动(您可能需要另一个y向移动以与屏幕边缘对齐) 按y轴缩放

   sq = Sqrt(2)/2   //Cos and Sin of 45
   x_new = xc + (x_old - xc) * sq - (y_old - yc) * sq
   y_new = 0.5 * (yc + (x_old - xc) * sq + (y_old - yc) * sq)
(根据坐标系方向,可能需要将括号中的符号组合从
(+-)(++)
更改为
(++)(+)