Главная | Форум | Мой профиль | Выход | RSS
Меню сайта
Мини-чат
200
Наш опрос
Расширение спектра деятельности. Тоесть принимать и по возможности помогать не только Ultimate 3D
Всего ответов: 298
Кабинет

Логин:
Пароль:
Поиск
Календарь
«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Архив записей
Наши друзья
  • Официальный cайт U3D
  • Лучший сайт по GM
  • Сайт по геймдеву
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Мы рады приветствовать Вас на русскоязычном официальном сайте игрового движка Game Maker+Ultimate3D. Этот сайт создан для всех тех, кто хотел бы своими силами создать хотя бы одну компьютерную 3D игру, но не знает, как это сделать и с чего начать.Вы всегда хотели заняться разработкой компьютерных игр, но не знали как?Тогда вы попали по адресу. Game Maker с Ultimate3D это микс, который позволит делать захватывающие компьютерные игры с неограниченными возможностями. Так же есть форум на котором можно задовать свои вопросы по Ultimate 3D!

    Математические функции

    Ultimate 3D ряд предложений полезных функций, которые могут использоваться, чтобы выполнить вычисления с векторами и matrices. Математически, matrices может быть очень составными объектами и векторами даже больше так. Но в наших целях мы будем только работать с двумя легкими для понимания особыми случаями. Для таковых из Вас, кто нетерпелив, вот описание в одном предложении. Matrices может использоваться, чтобы описать преобразования, и векторы - наборы трех значений с плавающей запятой, которые могут использоваться, чтобы описать положение или руководство. Но давайте войдем в немного большее количество деталей.
    Вектор составлен из x-координаты, y-координаты и z-координаты. Вы должны уже быть знакомыми с векторами, описывающими положения от x, y и z переменных объектов. Но векторы могут также описать руководство с длиной. С этой целью они замечены относительно происхождения. Если Вы чертите линию от происхождения (вектор с координатами (0|0|0)) к вектору, описывающему руководство, руководство, в которое вошел Ваш воображаемый карандаш, является руководством, на которое указывает вектор. Вы можете вообразить это как стрелку. И если Вы хотите переместить объект с положением, описанным вектором положения, в руководство, описанное вектором руководства, Вы только должны добавить вектор руководства к вектору положения. Если у вектора руководства есть длина одного, он назвал нормализованный вектор.
    Матрица может использоваться, чтобы описать преобразование. В случае, если Вы забыли, каково преобразование, вот объяснение снова: в Ultimate3D преобразование описано тремя группами переменных: x, y, и z; rotx, roty, и rotz; и scalx, чешуйчатый, и scalz. rotx/y/z переменные выполняют вращение, scalx/y/z переменные выполняют вычисление и x, y, и z переменные выполняют перевод. Таким образом каждое преобразование может быть замечено как комбинация вычисления, перевода и вращения.
    Большая вещь о matrices как метод, чтобы описать преобразования, то, что Вы можете использовать их для различных вычислений очень эффективно. Они могут также использоваться, чтобы решить проблемы, которые были бы очень сложны, чтобы решить без matrices. Есть очень полезное примечание, которое может использоваться, чтобы описать функцию каждой матрицы. Это примечание может быть объяснено очень хорошо через небольшой пример. Если у Вас есть модель в Окончательном трехмерный, вся информация о ее геометрии дана в системе координат модели. У модели есть своя собственная система координат, тот, который Вы сделали в программе моделирования. Эту систему координат называют образцовым местом. Преобразование это определено через переменные преобразования этой модели, преобразовывает информацию, которая дана в образцовом месте в глобальную систему координат, которую называют мировым местом. По этой причине преобразование называют преобразованием места модели к миру. Таким образом примечание - то, что преобразование, которое преобразовывает кое-что от места в космос B, называют к преобразованию места B, или к B делают интервалы между матрицей. Матрица сроков и преобразование могут использоваться более или менее синонимично в этом контексте.
    Теперь, если Вы имеете к преобразованию места B и B к преобразованию места C, Вы можете преобразовать к преобразованию места B B к преобразованию места C, и в результате Вы доберетесь до преобразования места C. Так, если Вы преобразовываете вектор этой объединенной матрицей, она преобразовать от места, чтобы сделать интервалы между C непосредственно! Именно поэтому matrices так невероятно полезны. Вы можете приковать их цепью в любом случае, Вы хотите. Если Вы хотите преобразовать группу объектов, Вы можете построить матрицу, которая описывает это преобразование и использовать это, чтобы преобразовать единственное преобразование matrices объектов. Тогда они будут вести себя, как будто они были склеены, точно так же, как Вы хотите, чтобы это было. С преобразованием matrices Вы может легко вращаться вокруг целого мира. Если Вы хотите к, Вы можете повернуть это голова. Вы можете преобразовать это в любую систему координат, которую Вы хотите.
    Теперь, когда было много теории. Но это теоретическое фоновое знание сделает практическое использование матрицы и направит намного легче функции вычисления. Столь давайте продолжать практическую часть.

    Вектор и матричные функции вычисления
    Так как Производитель Игры не может обращаться со структурами данных как векторы, и matrices самостоятельно, Окончательный трехмерный делает работу. Производитель Игры только получает идентификаторы как возвращаемые значения. Эти идентификаторы могут или быть возвращаемым значением функции, или одним из параметров. Почти каждая функция вычисления матрицы или вектора берет параметр, который это назвало OutputMatrixID или OutputVectorID. Чтобы избежать бесконечных повторений, я собираюсь объяснить, как этот параметр работает только однажды.

    OutputMatrixID / OutputVectorID 
    Удостоверение личности матрицы или вектора Вы хотите, чтобы возвращение функции было написано. Если Вы не хотите переписывать существующую матрицу или вектор, Вы можете пройти-1 вместо этого. Тогда Окончательный трехмерный создаст новую матрицу или направит и возвратит ее удостоверение личности. Вы должны спасти это удостоверение личности. Когда Вы не нуждаетесь в этой матрице или направляете больше, Вы должны выпустить матрицу или вектор, используя ReleaseMatrix (MatrixID) или ReleaseVector (VectorID). Иначе матрица или вектор не удалить и Не Окончательные трехмерный, скажет Вам о слишком многих matrices или векторах, создаваемых через некоторое время.
    Прохождение-1 к одному из этих двух параметров является единственной возможностью создать новую матрицу или вектор. Но много matrices уже существует. А именно, они - преобразование matrices всей модели, примитивной и объекты камеры. Ко всем этим matrices можно получить доступ через одну простую функцию.

    Эта функция возвращает удостоверение личности матрицы преобразования объекта с данным удостоверением личности:

    GetObjectTransformation(
    ObjectID
    )

    ObjectID
    Удостоверение личности Game Maker модели, примитивной или объект камеры.
    Через матричное удостоверение личности GetObjectTransformation(...) дает Вам, Вы можете читать или написать матрице объекта. Этим путем Вы можете изменить его преобразование, не касаясь его переменных преобразования. Но Вы должны всегда делать это после требования Ступить <Primitive.htm> (), потому что Step() обычно переписывает матрицу преобразования объекта. Помимо преобразования объекта matrices, есть другая группа matrices, который уже существует в большом количестве: преобразование matrices костей и петель. Они могут быть восстановлены также, но Вы не можете просто восстановить их удостоверения личности. 

    Эта функция копирует матрицу преобразования места кости к миру данной кости к данной матрице продукции.

    GetBoneTransformation(
    OutputMatrixID,
    BoneIndex
    )

    OutputMatrixID
    См. выше.

    BoneIndex
    Индекс кости Вы хотите восстановить преобразование. Вы можете использовать GetBoneIndex (ModelManipulation.htm (...)), чтобы получить эту ценность.


    Матрица, которая возвращена этой функцией, всегда будет матрицей преобразования структуры, которая может быть замечена на экране в настоящее время, так, если Вы используете эту функцию, чтобы приложить объекты к костям, может случиться, что Вы получаете следующий эффект. Чтобы избежать этого, Вы можете использовать UpdateSkeleton (), чтобы обновить преобразование кости matrices образцового объекта, который вызывает эту функцию. Но быть осторожным с этим. Требуется довольно мало вычислительного времени. UpdateSkeleton <Math.htm> () также полезен для следующей функции.
    Если Вы будете использовать образцовые функции манипуляции, то Вы часто должны будете получить матрицу преобразования петель. Те необходимы, чтобы получить положения вершины от места петли в мировое место. Единственная петля может использоваться многократно в пределах модели, особенно в моделях, созданных с Anim8or. Например, если Вы смоделировали объект для верхней ноги и прилагаете этот объект до крайности для левой ноги, и до крайности для правой ноги эта петля будет использоваться дважды. По этой причине две функции необходимы, чтобы быть в состоянии восстановить преобразования петли.

    Эта функция возвращается, как часто данная петля используется в образцовом объекте, которым это называют.

    GetMeshOccurrenceCount(
    MeshIndex
    )

    MeshIndex
    Индекс петли, для которой Вы хотите восстановить счет возникновения. Это может быть любым целочисленным значением в диапазоне от 0 до GetMeshCount ()-1.


    Эта функция производит текущую петлю к мировому космическому преобразованию данного возникновения данной петли:

    GetMeshOccurrenceTransformation(
    OutputMatrixID,
    MeshIndex,
    OccurrenceIndex
    )

    OutputMatrixID
    См. выше.

    MeshIndex
    Индекс петли, для которой Вы хотите восстановить преобразование одного из его возникновений. Это может быть любым целочисленным значением в диапазоне от 0 до GetMeshCount()-1.
    OccurrenceIndex
    Индекс возникновения данной петли, для которой Вы хотите восстановить матрицу преобразования. Это может быть любым целочисленным значением в диапазоне от 0 до GetMeshOccurrenceCount <Math.htm> ()-1.
    Теперь, когда Вы знаете все функции, которые могут использоваться, чтобы восстановить существующий matrices, пришло время делать Вас знакомыми с матричными функциями создания, которые позволяют Вам создавать новое преобразование matrices. Они все весьма подобны, таким образом я только собираюсь перечислить их прямо здесь. Параметры объяснены ниже.

    Эта функция создает матрицу, которая выполняет перевод:

    CreateTranslationMatrix(
    OutputMatrixID,
    TranslationX, TranslationY, TranslationZ
    )

    Эта функция создает матрицу, которая выполняет вычисление:

    CreateScalingMatrix(
    OutputMatrixID,
    ScalingX, ScalingY, ScalingZ
    )

    Эта функция создает матрицу, которая выполняет вращение:

    CreateRotationMatrix(
    OutputMatrixID,
    RotationX, RotationY, RotationZ
    )

    Эта функция создает полную матрицу преобразования, которая выполняет вычисление, перевод и вращение:

    CreateTransformationMatrix(
    OutputMatrixID,
    TranslationX, TranslationY, TranslationZ,
    RotationX, RotationY, RotationZ,
    ScalingX, ScalingY, ScalingZ
    )

    OutputMatrixID -См. выше.
    TranslationX, TranslationY, TranslationZ -Эти переменные определяют перевод. Они эквивалентны переменным преобразования x, y и z.
    RotationX, RotationY, RotationZ -Эти переменные определяют вращение. Они эквивалентны переменным преобразования rotx, roty и rotz.
    ScalingX, ScalingY, ScalingZ -Эти переменные определяют вычисление. Они являются эквивалентными переменным преобразования scalx, чешуйчатыми и scalz.
    Но создание matrices не является всем; Вы также нуждаетесь в некоторых функциях, чтобы выполнить вычисления с ними. Первая функция это доступно в этом контексте, ничего действительно не вычисляет, это только копирует некоторые данные. Однако, это может быть полезно во многих случаях.

    Эта функция копирует матрицу к данной матрице продукции.

    CopyMatrix(
    OutputMatrixID,
    InputMatrixID
    )

    OutputMatrixID -См. выше.
    InputMatrixID -Идентификатор матрицы Вы хотите скопировать к матрице продукции.


    Следующая функция преобразовывает одну матрицу другой матрицей:

    TransformMatrix(
    OutputMatrixID,
    InputMatrixID1, InputMatrixID2
    )

    OutputMatrixID -См. выше.
    InputMatrixID1, InputMatrixID2 -Два вводят matrices. Первая матрица преобразовать второй матрицей. Это означает, что, если первая матрица к B, делают интервалы между матрицей, и вторая матрица - B к матрице места C, получающаяся матрица будет к матрице места C. Отметьте, что заказ matrices действительно имеет значение.


    Эта функция инвертирует матрицу. Инверсия матрицы - матрица, которая делает преобразование полной противоположности оригинальной матрицы. Так, если оригинальная матрица к B, делают интервалы между матрицей, инверсия этой матрицы будет B к космической матрице. Если Вы преобразуете матрицу ее инверсией, то получающаяся матрица будет матрицей, которая ничего не делает (матрица идентичности). Это - то, потому что, если Вы идете от места до места B и затем от места B назад к месту, результатом будет преобразование от места до места, которое не является никаким преобразованием вообще.

    InvertMatrix(
    OutputMatrixID,
    InputMatrixID
    )

    OutputMatrixID -См. выше.
    InputMatrixID -Удостоверение личности матрицы Вы хотите инвертировать. Отметьте, что matrices с измеряющей ценностью 0 не может быть инвертирован. Если входная матрица не может быть инвертирована, сама входная матрица возвратить.


    Эта функция интерполирует между двумя данными matrices использование очень хорошего метода вставки. Перевод и вычисление интерполированы линейно, вращение интерполировано, используя метод, названный сферической линейной вставкой.

    Math functions
    InterpolateMatrices(
    OutputMatrixID,
    InputMatrixID1, InputMatrixID2,
    InterpolationFactor
    )

    OutputMatrixID -См. выше.
    InputMatrixID1, InputMatrixID2 -Два matrices, между которыми Вы хотите выполнить линейную вставку.
    InterpolationFactor -Фактор, который определяет влияние каждого из двух matrices. Обычно это - ценность в диапазоне от ноля до одного. В 0.0 матрица продукции будет равняться первой входной матрице, в 1.0, матрица продукции будет равняться второй матрице.


    Следующая функция может использоваться, чтобы восстановить записи матрицы. Вы должны знать, как преобразование matrices работает, чтобы быть в состоянии иметь любое использование этой функции. Наиболее обычное использование этой функции использует это, чтобы передать matrices к вершине shaders. 

    GetMatrixEntry(
    InputMatrixID,
    LineIndex, ColumnIndex
    )

    InputMatrixID -Удостоверение личности матрицы, от которой Вы хотите восстановить вход.
    LineIndex, ColumnIndex -Индекс линии и колонки, от которой Вы хотите восстановить вход. Обе ценности должны быть целыми числами в диапазоне от 0 до 3, где 0 отсылает к первой линии resp. колонку и 3 к последнему.

    Теперь Вы можете расслабиться, потому что действительно сложная часть находится позади Вас. Вы можете теперь использовать свое знание о matrices, чтобы преобразовать полные объекты. Но matrices может также использоваться, чтобы преобразовать единственные векторы. Прежде, чем Вы сможете сделать так, Вы должны знать, как создать векторы. Столь давайте продолжать это.

    Следующая функция создает вектор из данного x-, y-, и z-координаты.

    CreateVector(
    OutputVectorID,
    X, Y, Z
    )

    OutputVectorID -См. выше.
    X, Y, Z -x-, y-, и z-координаты Вы хотите создать вектор с.


    Другой возможный способ создать векторы создает их из долготы и угла широты. Чтобы сделать это, Вы можете использовать следующую функцию:

    CreateDirectionVector(
    OutputVectorID,
    Longitude, Latitude
    )

    OutputVectorID -См. выше.
    Долгота, Широта -Долгота и углы широты Вы хотите создать этот вектор из. Получить описание того, как долгота и угловая работа широты смотрят на описание Движения функции (Start.htm (...)).


    Чтобы восстановить информацию от векторов, Вы можете использовать следующую функцию:

    CopyVector(
    OutputVectorID,
    InputVectorID
    )

    VectorID -Идентификатор вектора, от которого Вы хотите восстановить информацию.
    VectorElementID -Этот параметр идентифицирует координату, которая должна быть возвращена. Это может быть 1 для x-координаты, 2 для y-координаты или 3 для z-координаты.


    Следующая функция является очень основной, но это может быть полезно все же. Это берет вектор и копирует это:

    CopyVector(
    OutputVectorID,
    InputVectorID
    )

    OutputVectorID -См. выше.
    InputVectorID -Вектор, который должен быть скопирован к данному вектору продукции.


    Когда у Вас есть два вектора, Вы можете взять сумму их. Векторы добавлены вместе составляющие компонентом. Так (x | y | z) + (x' | y' | z') приведет к (x+x' | y+y' | z+z'). Это сделано следующей функцией:

    CalculateVectorSum(
    OutputVectorID,
    InputVectorID1, InputVectorID2
    )

    OutputVectorID -См. выше.
    InputVectorID1, InputVectorID2 -Идентификаторы векторов Вы хотите добавить вместе.


    Часто Вы также должны вычислить различие между двумя векторами. Это может быть сделано через следующую функцию.

    CalculateVectorDifference(
    OutputVectorID,
    InputVectorID1, InputVectorID2
    )

    OutputVectorID -См. выше.
    InputVecorID1 -Удостоверение личности вектора, который должен функционировать как minuend.
    InputVectorID2 -Удостоверение личности вектора, который должен функционировать как subtrahend.


    Другая основная математическая операция векторов умножает их скаляром. Если у Вас будет вектор v = (x | y | z) и скаляр (или значение с плавающей запятой), то k, k*v будет (k*x | k*y | k*z). Это скалярное умножение сделано следующей функцией:

    CalculateVectorScalarProduct(
    OutputVectorID,
    InputVectorID,
    ScalarFactor
    )

    OutputVectorID -См. выше.
    InputVectorID -Идентификатор вектора, который должен быть умножен скаляром.
    ScalarFactor 
    Значение с плавающей запятой, которое будет умножено каждым отдельным компонентом вектора.


    Специально для векторов руководства это - весьма общий падеж, что они должны быть нормализованы. Нормализация вектора означает умножаться, это аналогом его длины, чтобы достигнуть той его новой длины точно один. Поскольку я уже сказал векторы с длиной, каждого называют нормализованными векторами. Это может быть сделано легко через следующую функцию:

    NormalizeVector(
    InputOutputVectorID
    )

    InputOutputVectorID -Удостоверение личности вектора, который должен быть нормализован. Этот вектор - вход и продукция. После вызова функции вектор, спасенный в InputOutputVectorID, имеет длину точно один и указывает все еще в том же самом направлении.


    Часто длина вектора необходима. Длина вектора v = (x | y | z), который упоминается как |v |, определена sqrt (x*x+y*y+z*z), таким образом это - расстояние от происхождения до вектора (замеченный как вектор положения). Следующая функция может использоваться, чтобы получить длину вектора. Длина - свое возвращаемое значение.

    CalculateVectorLength(
    VectorID
    )

    VectorID -Идентификатор вектора Вы хотите вычислить длину для.
    Если Вы работаете с векторами руководства, часто необходимо преобразовать их назад в ценности широты и долготу. Например Вы, возможно, нуждаетесь в них, чтобы использовать их как параметры для CheckRayIntersection (Collision.htm (...)). Вычисление тех вручную немного сложно. По этой причине Окончательный трехмерный имеет удобные функции с этой целью.

    Эта функция вычисляет угол долготы, который описывает данный вектор правильно и возвращает его.

    CalculateVectorLongitude(
    VectorID
    )

    VectorID -Удостоверение личности вектора, для которого Вы хотите определить долготу. Вектор не должен быть нормализован.


    Эта функция вычисляет угол широты, который описывает данный вектор правильно и возвращает его.

    CalculateVectorLatitude(
    VectorID
    )

    VectorID -Удостоверение личности вектора, для которого Вы хотите определить широту. Вектор не должен быть нормализован.
    Теперь действительно полезная функция следует. Не удивительно, что это существует, но это удобно так или иначе. Это может использоваться, чтобы преобразовать вектор матрицей.

    Следующая функция преобразовывает данный вектор данной матрицей. Если вектор дан в месте, и матрица описывает к преобразованию места B, получающийся вектор будет тем же самым вектором в месте B.

    TransformVector(
    OutputVectorID,
    InputVectorID,
    InputMatrixID
    )

    OutputVectorID -См. выше.
    InputVectorID -Идентификатор вектора, который должен быть преобразован.
    InputMatrixID -Идентификатор входной матрицы вектор должен быть преобразован.
    Иногда эта функция может быть весьма непрактичной все же. Например, если Вы преобразовываете вектор руководства, Вы обычно только хотите, чтобы вычисление и вращение были применены, в то время как перевод неинтересен. И если Вы уже вращали вектор, используя некоторую другую матрицу, может случиться так, что Вы только хотите, чтобы перевод матрицы был применен. В случаях как это следующая функция очень полезна.

    Эта функция преобразовывает данный вектор данной матрицей, используя только данные компоненты преобразования. Если все компоненты преобразования используются (верный, прошел для последних трех параметров), эта функция делает точно то же самое как TransformVector (Math.htm (...)). Все комбинации ценностей действительны для последних трех параметров:

    Math functions
    TransformVectorEx(
    OutputVectorID,
    InputVectorID,
    InputMatrixID,
    ApplyRotation,
    ApplyTranslation,
    ApplyScaling
    )


    OutputVectorID -См. выше.
    InputVectorID -Идентификатор вектора, который должен быть преобразован.
    InputMatrixID -Идентификатор входной матрицы, которая содержит преобразование, которое должно быть применено к вектору частично или полностью.
    ApplyRotation -Если Вы проходите верный для этого параметра, вращение преобразования в данной матрице производит вектор, иначе это не делает.
    ApplyTranslation -Если Вы проходите верный для этого параметра, перевод преобразования в данной матрице производит вектор, иначе это не делает.
    ApplyScaling -Если Вы проходите верный для этого параметра, вычисление преобразования в данной матрице производит вектор, иначе это не делает.
    Помимо них, Окончательные трехмерные предложения некоторые функции, чтобы выполнить общие математические операции с векторами. Самая общая операция - точечный продукт. Если у Вас есть два вектора v = (x | y | z) и v' = (x' | y' | z'), точечный продукт <v, v'> равен x*x' + y*y' + z*z'. Большая вещь о точечном продукте - то, что скалярный продукт равен косинусу угла между двумя векторами, умноженными длиной первого вектора и длиной второго вектора. Так поместить, что в небольшую формулу: если угла между v и v' скалярный продукт равен потому что (a) * |v | * |v' |. Так, если векторы нормализованы (имеют длину одного) точечный продукт равен косинусу угла. Это означает, что точечный продукт возвратится 1, если векторы будут параллельны и 0, если они являются ортогональными. И это - только одно из многого использования точечного продукта. Чтобы осуществить направленное освещение, единственная вещь, которая должна быть сделана, вычисляют один точечный продукт.

    Эта функция вычисляет точечный продукт данного два вектора и возвращает его.

    CalculateDotProduct(
    InputVectorID1, InputVectorID2
    )

    InputVectorID1, InputVectorID2 -Идентификаторы двух векторов, которые должны использоваться, чтобы вычислить скалярный продукт. Заказ векторов не имеет значения.
    Другая операция, которая выполнена с двумя векторами весьма часто, вычисляет взаимный продукт. Взаимный продукт приводит к новому вектору, который является ортогональным к двум входным векторам. Руководство этого вектора зависит от заказа, в котором два входных вектора передают к этой функции. Вы можете помнить то, что это руководство будет использовать Вашу правую руку: Постройте систему координат, используя Ваш большой палец (пункты налево), Ваш указательный палец (пункты) и Ваш средний палец (пункты далеко от Вас). Теперь, если первые векторные пункты в руководство Вашего большого пальца и вторые векторные пункты в руководство Вашего указательного пальца, то получающийся вектор укажет в руководство Вашего среднего пальца. 
    Длина вектора равняется дважды области треугольника, который сформирован двумя входными векторами относительно пустого вектора (происхождение). Это также равно продукту длин двух входных векторов и синуса угла между ними. Если векторы будут параллельны, то возвращенный вектор будет нулевым вектором.

    Эта функция вычисляет взаимный продукт двух векторов.

    CalculateCrossProduct(
    OutputVectorID,
    InputVectorID1, InputVectorID2
    )

    OutputVectorID -См. выше.-InputVectorID1, InputVectorID2 
    Идентификаторы векторов, для которых Вы хотите вычислить взаимный продукт. Заказ действительно имеет значение. Если Вы обменяете эти два параметра, то это будет отрицать получающийся вектор.
    Есть также другой набор связанных функций полезной матрицы, которые используют векторы для их данных продукции. Они преобразовывают matrices назад в переменные преобразования.

    Эта функция вычисляет перевод данной матрицы преобразования и производит его к вектору:

    ComputeMatrixTranslation(
    OutputVectorID,
    InputMatrixID
    )

    OutputVectorID -См. выше. После звонка в эту функцию x-компонент будет содержать ценность x, y-компонент будет содержать ценность y, и z-компонент будет содержать ценность z.
    InputMatrixID -Идентификатор матрицы, для которой Вы хотите определить перевод.


    Эта функция вычисляет вычисление данной матрицы преобразования и производит его к вектору:

    ComputeMatrixScaling(
    OutputVectorID,
    InputMatrixID
    )

    OutputVectorID -См. выше. После звонка в эту функцию x-компонент будет содержать ценность scalx, y-компонент будет содержать чешуйчатую ценность, и z-компонент будет содержать ценность scalz.
    InputMatrixID -Идентификатор матрицы, для которой Вы хотите определить вычисление.


    Эта функция вычисляет вращение данной матрицы преобразования и производит его к вектору.


    ComputeMatrixRotationAngles (OutputVectorID, InputMatrixID)
    OutputVectorID -См. выше. После звонка в эту функцию x-компонент будет содержать ценность rotx, y-компонент будет содержать ценность roty, и z-компонент будет содержать ценность rotz.
    InputMatrixID -Идентификатор матрицы, для которой Вы хотите определить rotx, roty и ценности rotz, которые описывают это правильно.


    Так как это необходимо очень часто, вот другая полезная функция, которая комбинирует вышеупомянутые три функции. Эта функция применяет преобразование, описанное данной матрицей, к переменным преобразования объекта, это называют (x, y, z, rotx, roty, rotz, scalx, чешуйчатым, scalz).

    ApplyTransformationMatrix ( InputMatrixID)

    InputMatrixID -Матрица, от которой Вы хотите определить новое преобразование для объекта. 
    Наконец вот некоторые весьма специальные математические функции. Они могут использоваться, чтобы преобразовать между координатами экрана и мировыми космическими координатами.

    Эта функция вычисляет вектор руководства, который описывает луч, начинающийся в камере и идущий в то, что может быть замечено в данном пикселе экрана. Отметьте, что возвращенный вектор обычно не нормализуется. Y-компонент возвращенного вектора всегда один.

    ScreenCoordToVector ( OutputVectorID, ScreenCoordX, ScreenCoordY, CameraIndex)

    OutputVectorID -См. выше.
    ScreenCoordX, ScreenCoordY -Положение экрана в пикселах, относительно левой вершины внутренней бровки окна Game Maker. Это - положение экрана, для которого будет вычислен соответствующий луч.
    CameraIndex -Индекс камеры, для которой должна быть выполнена операция. Если Вы хотите вычислить, луч для камеры по умолчанию проходят 0 или ничто, иначе проходят, ценность переменной числа камеры возражают, что Вы хотите проверить.


    Эта функция делает операцию полной противоположности ScreenCoordToVector (Math.htm (...)). Это производит вектор положения экрана от данной трехмерной мировой космической координаты. X и y компонент вектора продукции - координаты viewport, и z компонент - координата z данного положения, преобразованного в место камеры, которое может использоваться, чтобы узнать, является ли положение позади камеры.
    CoordToScreen ( OutputVector, X, Y, Z, CameraIndex)

    OutputVectorID -См. выше.
    X, Y, Z -координаты положения, которое должно быть переведено на место экрана.
    CameraIndex-Индекс камеры, для которой должна быть выполнена операция, который является ценностью переменной числа соответствующего объекта камеры. Пройдите 0 или ничто, если Вы хотите выполнить эту операцию для камеры по умолчанию.






    © Shkola Ultimate 3D . Все права защищены.Макарский Роман (ASD_W_GAMES) And Беляков Вячеслав (ZXC76)
    Author:
    © Christoph Peters. Some rights reserved.


    Школа Ultimate3D 2009-2010 год