У меня есть куча объектов со следующими свойствами:Как включить масштабирование в эту систему координат?
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);
}
Увеличение размера объекта является простым, но как я могу изменить й и у позиции, масштаб, так что расстояние между объектами также умножаются на зуме?
Вы можете вычислить дельта масштабирования, а затем умножить координаты на коэффициент масштабирования. Я думаю, что было бы проще, если бы вы работали с разрешением или движком чертежа, а не с фактическими координатами. MVC или что-то еще. – VermillionAzure
Можете ли вы объяснить, что вы подразумеваете под дельтами увеличения? Если масштабирование изначально 1, и я делаю это 2, масштаб дельты будет 1? Я не понимаю. – JakeP
Обычно, когда вы получаете пользовательские входы, есть определенное количество «вращения», заданное колесом мыши или другим входом. Когда это происходит, лучшим может быть умножение координат с помощью «коэффициента масштабирования» или отношения пользовательского ввода к желаемому эффекту, который вы хотели бы достичь. Дельта может быть изменением, если ваш вход измеряется как «скаляр» или просто абсолютное количество. – VermillionAzure