Что такое поворот, который дает горизонтальный и вертикальный переворот?

С учетом этого единичного круга (градусы):

Каким будет код для функций, которые будут поворачивать изображение, чтобы перевернуть его по горизонтали и вертикали?

Например,

  • FlipHorizontal (315) = 225,
  • FlipHorizontal (45) = 135,
  • FlipVertical (315) = 45,
  • FlipVertical (135) = 225.

3 ответа

Добавьте 180, по модулю 360. поэтому добавьте 180 и вычтите 360, если оно больше 360.

angle += 180;
if (angle > 360) angle -= 360;
vflip(a)
{
  return 360-a;
}

hflip(a)
{
  if (a > 180)
    return 540 - a;
  else
    return 180 - a;
}

flipboth(a)
{
  return 360 - ((a>180)?540 - a:180 - a);
  //aka
  //return vflip(hflip(a));
}

Например:

если вы хотите FlipHorizontal(315) = 225, вам нужно сделать что-то вроде этого:

1) альфа> пи?

2) если да, то ваше преобразование будет 2Pi - alpha -> Pi + alpha, где 2Pi - alpha = 315.

3) если нет, то ваше преобразование будет альфа -> пи - альфа, где альфа = 45.

Решите эту задачу как математическую задачу

Другие вопросы по тегам