如何将变焦合并到此坐标系中?

时间:2015-07-09 03:23:08

标签: c++ math game-engine

我有一堆具有以下属性的对象:

xPos = x coordinate of position in world
yPos = y coordinate of position in world
size = size of object

我有一个将这些对象绘制到屏幕上的功能。屏幕具有x偏移和y偏移,因此用户可以平移并且对象将根据需要在屏幕上移动和关闭。这一切都很完美。现在我想添加放大和缩小功能,但我无法弄清楚如何将缩放应用到位置。

render(int xOff, int yOff, int zoom){
    int x = xPos + xOff;
    int y = yPos + yOff;
    s->addRenderJob(texID, x, y, size * zoom, size * zoom);
}

缩放对象的大小很简单,但如何通过缩放修改x和y位置,以便对象之间的距离也乘以缩放?

2 个答案:

答案 0 :(得分:0)

render(int xOff, int yOff, int zoom){ int x = xPos + xOff; int y = yPos + yOff; s->addRenderJob(texID, x* zoom, y* zoom, size * zoom, size * zoom); }

如有必要,您可以下载游戏引擎。 研究如何处理游戏中的坐标系。

答案 1 :(得分:0)

halfX = SCREEN_WIDTH/2
halfY = SCREEN_HEIGHT/2
deltaX = xPos - halfX;
deltaY = yPos - halfY;
x = halfX + deltaX * zoom + xOff;
y = halfY + deltaY * zoom + yOff;

感谢VermillionAzure帮助我解决这个问题。