Что ж, если вы планируете больше заниматься графическим программированием игр, я бы посоветовал хотя бы стремиться к несовершеннолетнему по математике.
На самом деле, если вы продолжите заниматься графикой, как это, было бы неплохо получить знания в области тригонометрии, матричной алгебры и векторной алгебры. Использование векторов и матриц упрощает более сложные преобразования (например, перспективную проекцию), а также может помочь с более простыми преобразованиями, такими как изометрические.
В любом случае (и часть этого, если не многое из этого, может быть рассмотрено для вас): по сути, то, что делает так называемое «графическое преобразование», является буквальным преобразованием точек через некоторую комбинацию переводов, вращений, масштабов, отражения и сдвиги; большинство этих понятий должно быть вам знакомо по двумерной системе координат и может быть выражено довольно просто. В следующих примерах я буду использовать отрезок, определяемый двумя точками, выраженными в форме «(x1, y1), (x2, y2)»; вы можете нарисовать их на листе миллиметровой бумаги или на чем-то еще для более легкого понимания.
Примеры: перевод будет происходить от (0, 0), (1, 0) к (1, 0), (2, 0) или от (0, 0), (1, 0) к (0, 1). ), (1, 1); вращение будет происходить от (0, 0), (1, 0) до (0, 0), (0, 1); масштабирование будет происходить от (0, 0), (1, 0) до (0, 0), (2, 0) или от (0, 0), (1, 0) до (0, 0), (0,5). , 0).
Используя более упрощенную запись, перевод одной точки (x, y) можно выразить как (x + a, y + b), где a и b — константы в диапазоне всех действительных чисел. Вращение будет (x*cos(theta), y * sin(theta)), где "theta" – это угловое значение, на которое вы хотите повернуть, а масштаб будет (ax, b em>y), где a — коэффициент масштабирования по оси x, а b — коэффициент масштабирования по оси y. (Единая шкала – это шкала с одинаковыми масштабными коэффициентами для обеих осей, поэтому она будет равна (ax, ay).)
Комбинация простых преобразований позволяет вам перемещать объекты практически так, как вы хотите, и самый простой способ объединения простых преобразований — это использование умножение матриц.
…Вообще-то, такие вещи вам, возможно, лучше изучить с помощью самообучения или какого-нибудь математического занятия, так как теперь я понимаю, что мне самому потребовалось бы слишком много времени, чтобы даже начать вас на самом деле. понимание этих вещей, но я дам вам другие ссылки, которые я могу найти на данный момент.
http://en.wikipedia.org/wiki/Transformation_(геометрия)< br> http://en.wikipedia.org/wiki/Transformation_matrix
http://en.wikipedia.org/wiki/Euclidean_vector (может быть вам необходимо, а может и не быть.)
В любом случае... хотя вы можете просто использовать уравнения преобразования, которые найдете где-нибудь в Интернете, гораздо лучше узнать, как на самом деле работают преобразования, и научиться применять их самостоятельно, так как это позволит вам быть более гибким и иметь возможность выполнять преобразования различными способами, если это необходимо, а также позволять вам выполнять более сложные преобразования самостоятельно.
Я надеюсь, что это помогло вам; это может быть не тот ответ, который вам, вероятно, нужен, но если вы готовы потратить время и усилия на самообучение (или на то, чтобы вас учили, если вы решите пойти куда-нибудь на курсы [в конце концов, самообучение — это не для всех]) как работать с матрицами и преобразованиями матриц и тому подобное, вы, вероятно, поймете, что вы пытаетесь сделать немного больше.
РЕДАКТИРОВАТЬ: Конечно, если у вас уже определены графические преобразования и вам не нужно беспокоиться о них самостоятельно, то очень легко перемещать точку на любой плоскости, параллельной любой оси в трехмерном пространстве. По сути, в памяти точки лежат (или должны лежать) в «нормальной вилле», если использовать ваше слово, в трехмерной декартовой системе координат. Предполагая, что плоскость, вдоль которой происходит движение, является плоскостью z = 0, а координаты точки хранятся в формате, эквивалентном (x, y, z), вы можете перемещать точку, просто используя, скажем, (x + 10, у, 0) или (х, у + 10, 0); если у вас есть точка, которая находится на более высокой плоскости, чем другие, вы просто устанавливаете более высокое значение для z (а если у вас есть точка на более низкой плоскости, вы устанавливаете значение для z ‹ 0). После того, как вы применили движение к самой точке, вы можете применить графическое преобразование к среде, если вы еще этого не сделали, что настраивает ее для правильного отображения на вашем устройстве вывода (в вашем случае iPhone). Применение преобразования немного сложнее, но если у вас есть заранее написанный метод для этого, то все готово.
person
JAB
schedule
27.07.2009