Вычислите синус, косинус, тангенс и многое другое с помощью CSS.
Тригонометрические функции
 В CSS можно писать математические выражения . В основе лежит функция calc() для выполнения вычислений, но, скорее всего, вы также слышали о min() , max() и clamp() .
 К этим функциям присоединяются тригонометрические функции sin() , cos() , tan() , asin() , acos() , atan() и atan2() . Эти функции определены в модуле CSS «Значения и единицы измерения» уровня 4 и доступны во всех браузерах.
sin() , cos() и tan()
Три основные триггерные функции:
-  cos(): возвращает косинус угла, который является значением от-1до1.
-  sin(): возвращает синус угла, который является значением от-1до1.
-  tan(): возвращает тангенс угла, который является значением между−∞и+∞.
В отличие от своих аналогов в JavaScript, эти функции принимают в качестве аргумента как углы, так и радианы.
 В следующей демонстрации эти функции используются для рисования линий, составляющих треугольник, окружающий набор --angle :
-  «Гипотенуза» (желтая линия) — это линия, соединяющая центр круга с точкой. Его длина равна --radiusкруга.
-  «Смежная» (красная линия) — это линия, идущая от центра круга вдоль оси X. Его длина равна --radius, умноженному на косинус--angle.
-  «Противоположная» (синяя линия) — это линия, идущая от центра точки вдоль оси Y. Его длина равна --radius, умноженному на синус--angle.
-  Функция tan()параметра--angleиспользуется для рисования зеленой линии от точки к оси X.
 asin() , acos() , atan() и atan2()
 Дуговыми или обратными аналогами sin() , cos() и tan() являются asin() , acos() и atan() соответственно. Эти функции выполняют вычисления в обратном направлении: они принимают числовое значение в качестве аргумента и возвращают для него соответствующий угол.
 Наконец, есть atan2() , который принимает два аргумента A и B Функция возвращает угол между положительной осью X и точкой (B,A) .
Примеры
Существуют различные варианты использования этих функций. Далее следует небольшая подборка.
Перемещайте предметы по круговой траектории вокруг центральной точки.
 В следующей демонстрации точки вращаются вокруг центральной точки. Вместо вращения каждой точки вокруг своего центра и последующего перемещения ее наружу, каждая точка перемещается по осям X и Y. Расстояния по осям X и Y определяются с учетом cos() и, соответственно, sin() --angle .
:root {
  --radius: 20vmin;
}
.dot {
  --angle: 30deg;
  translate: /* Translation on X-axis */
             calc(cos(var(--angle)) * var(--radius))
             /* Translation on Y-axis */
             calc(sin(var(--angle)) * var(--radius) * -1)
  ;
}
 Чтобы равномерно распределить точки вокруг центральной точки, каждой точке присваивается дополнительное смещение, основанное на индексе ее nth-child . Например, если есть три точки, расстояние между каждой точкой составляет 120deg (= 360deg / 3 ).
-  Первый дочерний элемент из трех смещается на 0 x 120deg=0deg.
-  Второй дочерний элемент из трех смещается на 1 x 120deg=120deg.
-  Третий дочерний элемент из трех смещается на 2 x 120deg=240deg.
Поворот элемента лицом к его началу
 Функция atan2() вычисляет относительный угол от одной точки к другой. Функция принимает в качестве параметров два значения, разделенных запятыми: положение y и x другой точки относительно исходной точки, которая находится в начале координат 0,0 .
Используя вычисленное значение, можно вращать элементы так, чтобы они были обращены друг к другу, используя свойства индивидуального преобразования .
В следующем примере поля повернуты так, чтобы они были обращены к местоположению мыши. Положение мыши синхронизируется с пользовательским свойством через JavaScript.
div.box {
  --my-x: 200;
  --my-y: 300;
  /* Position the box inside its parent */
  position: absolute;
  width: 50px;
  aspect-ratio: 1;
  translate: calc((var(--my-x) * 1px)) calc(var(--my-y) * 1px);
  /* Rotate so that the box faces the mouse position */
  /* For this, take the box its own position and size (25 = half the width) into account */
  rotate: atan2(
            calc((var(--mouse-x) - var(--my-x) - 25) * 1),
            calc((var(--mouse-y) - var(--my-y) - 25) * -1)
          );
}
Главное событие сообщества
 Как показано в этой анимированной ленте Мёбиуса Аны Тюдор , cos() и sin() могут использоваться не только для перевода. Здесь их результат используется для управления компонентами s и l функции цвета hsl() . 
