/* Функция обновления межкадровых параметров объекта анимации. * АРГУМЕНТЫ: * - указатель на "себя" - сам объект анимации: * od6UNIT_COW *Unit; * - указатель на контекст анимации: * od6ANIM *Ani; * ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Нет. */ static VOID CowUnitResponse( od6UNIT_COW *Unit, od6ANIM *Ani ) { OD6_RndWs = Ani->W; OD6_RndHs = Ani->H; OD6_RndWp = OD6_RndHp * Ani->W / Ani->H; OD6_RndMatrProjection = MatrProjection(-OD6_RndWp / 2, OD6_RndWp / 2, -OD6_RndHp / 2, OD6_RndHp / 2, OD6_RndProjDist, 1000.0); }
static VOID CubeUnitResponse( as4UNIT_CUBE *Unit, as4ANIM *Ani ) { AS4_RndWs = Ani->W; AS4_RndHs = Ani->H; AS4_RndWp = AS4_RndHp * Ani->W / Ani->H; AS4_RndMatrProjection = MatrProjection(-AS4_RndWp / 2, AS4_RndWp / 2, -AS4_RndHp / 2, AS4_RndHp / 2, AS4_ProjDist, 1000.0); } /* End of 'CubeUnitResponse' function */
VOID SS3_AnimResize( INT W, INT H ) { DBL ratio_x = 1, ratio_y = 1; SS3_Anim.W = W; SS3_Anim.H = H; if (W > H) ratio_x = (DBL)W / H; else ratio_y = (DBL)H / W; SS3_Anim.Wp = SS3_Anim.ProjSize * ratio_x; SS3_Anim.Hp = SS3_Anim.ProjSize * ratio_y; SS3_Anim.MatrProjection = MatrProjection(-SS3_Anim.Wp / 2, SS3_Anim.Wp / 2, -SS3_Anim.Hp / 2, SS3_Anim.Hp / 2, SS3_Anim.ProjDist, 1000); glViewport(0, 0, W, H); }
/* Resize of animation function. * ARGUMENTS: * - new width and height of animation: * INT W, H; * RETURNS: None. */ VOID EF2_AnimResize( INT W, INT H ) { DBL ratio_x = 1, ratio_y = 1; /* Save size of screen */ EF2_Anim.W = W; EF2_Anim.H = H; if (W > H) ratio_x = (DBL)W / H; else ratio_y = (DBL)H / W; EF2_Anim.Wp = EF2_Anim.ProjSize * ratio_x; EF2_Anim.Hp = EF2_Anim.ProjSize * ratio_y; EF2_Anim.MatrProjection = MatrProjection(-EF2_Anim.Wp / 2, EF2_Anim.Wp / 2, -EF2_Anim.Hp / 2, EF2_Anim.Hp / 2, EF2_Anim.ProjDist, 1000); /* Change size of screen */ glViewport(0, 0, W, H); } /* End of 'EF2_AnimResize' function */
/* Функция обработки изменения размера области вывода. * АРГУМЕНТЫ: * - новый размер области вывода: * INT W, H; * ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Нет. */ VOID OK2_AnimResize( INT W, INT H ) { DBL ratio_x = 1, ratio_y = 1; /* Сохранение размера */ OK2_Anim.W = W; OK2_Anim.H = H; /* Поле просмотра */ glViewport(0, 0, W, H); if (W > H) ratio_x = (DBL)W / H; else ratio_y = (DBL)H / W; OK2_Anim.Wp = OK2_Anim.ProjSize * ratio_x; OK2_Anim.Hp = OK2_Anim.ProjSize * ratio_y; OK2_Anim.MatrProjection = MatrProjection(-OK2_Anim.Wp / 2, OK2_Anim.Wp / 2, -OK2_Anim.Hp / 2, OK2_Anim.Hp / 2, OK2_Anim.ProjDist, OK2_Anim.FarClip); } /* End of 'OK2_AnimResize' function */
/* Функция обновления межкадровых параметров объекта анимации. * АРГУМЕНТЫ: * - указатель на "себя" - сам объект анимации: * ii2UNIT_COW *Unit; * - указатель на контекст анимации: * ii2ANIM *Ani; * ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Нет. */ static VOID CowUnitResponse( ii2UNIT_COW *Unit, ii2ANIM *Ani ) { MatrProjection( -II2_RndWp / 2, II2_RndWp / 2, -II2_RndHp / 2, II2_RndHp / 2, II2_RndProjDist, 1000 ); } /* End of 'CowUnitResponse' function */