Подтвердить что ты не робот

Как повернуть элемент вокруг строки, отличной от X = 0, Y = 0 и Z = 0, используя CSS3?

Я создал эту страницу, чтобы лучше понять вопрос. Как вы можете видеть, используя CSS3, мы можем вращать элемент вокруг оси X, Y или Z, используя transform: rotate[XYZ](M deg/rad).

Но я ищу функцию для вращения элемента на любой заданной строке. Например, вращение элемента на линии x=y. или даже более сложным y=2x+3.

Если вы этого не понимаете, держите бумагу в руках и переверните ее из двух ее углов (для y=x или y=-x). или посмотрите на это изображение.

enter image description here

enter image description here

Я предполагаю, что это будет комбинация двух поворотов, но я не знаю, как рассчитать вращения.

Update:

Я не знал, что есть функция rotate3d для CSS transform. эта функция принимает четыре аргумента rx, ry, rz и deg. Я считаю, что это будет очень полезно для этой проблемы.

Другое дело, когда мы меняем translate[X,Y,Z], фактически изменяя начало вращения. Это означает, что если вы хотите повернуть вокруг Y=10px, вы должны изменить translateZ на 10px

Update2:

Моя фактическая цель - создать инструмент для применения свойства преобразования CSS с помощью графического интерфейса. как вы можете видеть в моем файле jsbin. Я хочу расширить его до любого возможного transform, которое вы можете сделать. Один из них - вращение. Я уверен, что можно повернуть элемент вокруг других строк, чем x=0... но я не знаю, как это сделать. Например, вращение 45deg вокруг Y и 45deg вокруг Z такое же, как вращение 45 градусов вокруг x=y. Мне нужно решение для всех строк в пространстве.

4b9b3361

Ответ 1

Решение для вопроса, которое я задаю, это функция css transform, rotate3d. Используя эту функцию, мы могли бы вращать элементы DOM вокруг любой линии в трехмерном пространстве.

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

Если у вас есть функция линии, например 1x + 2y + 3z = 0, и вы хотите повернуть элемент на 30 градусов, вы должны применить это свойство css к элементу; transform: rotate3d(1, 2, 3, 30deg);.

Я создал это небольшое приложение, чтобы продемонстрировать, как работает rotate3d.

Ответ 2

Я предлагаю прочитать введение в статью Вращение вокруг произвольной оси в 3 измерениях. Основы:

(1) Translate space so that the rotation axis passes through the origin.
(2) Rotate space about the z axis so that the rotation axis lies in the xz plane.
(3) Rotate space about the y axis so that the rotation axis lies along the z axis.
(4) Perform the desired rotation by θ about the z axis.
(5) Apply the inverse of step (3).
(6) Apply the inverse of step (2).
(7) Apply the inverse of step (1).

Ответ 3

Я верю, что понимаю, что вы имеете в виду. Итак, если вы знаете Photoshop, когда вы поворачиваете изображение, вы можете выбрать опорную точку. Это та же идея. Таким образом, вы добавляете точку поворота кода: 50% 50% для класса. Проблема только в том, что точка ротации еще не принята в любом браузере, но скоро будет. Я думал, вы должны знать, что это в конечном итоге станет возможностью. здесь для более