Я не уверен, что делаю что-то не так в моей программе или нет, но я мог бы использовать быстрое руководство, если бы вы могли, и более чем вероятно, проблема в том, что я серьезно об этом думаю (что всегда так для меня), и я не могу придумать, как это объяснить (отсюда и дурацкое название этого вопроса), и доставил мне немного хлопот, просто прибегая к помощи.
Я знаю, как масштабировать объект с помощью:
double scale = 2.0;
Array<Real2> newPoints;
Foreach(Real2 point, points)
{
Vector2 vector = point - centerPoint;
vector *= scale;
newPoints.Add(center + vector);
}
Однако, скажем, я хотел масштабировать размер объекта на 3,6 (единиц), а не в процентах. Как бы я это сделал?
Для меня имело смысл, по крайней мере, что я буду делать что-то вроде
vector *= 1 - (3.6/vector.length);
но я все еще получаю неправильные результаты при запуске моего приложения. Любая помощь по этому вопросу? Как я сказал, извините, если я объяснил это неправильно, я ужасен, когда дело доходит до таких вещей, поэтому, если есть что-то, я могу уточнить, дайте мне знать. Спасибо за помощь.
Кажется, вы хотите масштабировать объект так, чтобы его новый размер был (скажем) на 3,6 единицы больше, чем его старый размер. В этом случае код будет таким же, за исключением
scale = (old_size + 3.6) / old_size;
Вам все еще нужно масштабировать каждый вектор на одну и ту же величину, чтобы сохранить общую форму объекта.
Других решений пока нет …