【发布时间】:2011-09-29 22:42:58
【问题描述】:
我创建了这个 page 以便更好地理解这个问题。如您所见,使用 CSS3 我们可以使用 transform: rotate[XYZ](M deg/rad) 围绕 X、Y 或 Z 轴旋转元素。
但我正在寻找一个函数来旋转任何给定行上的元素。例如,在x=y 行上旋转元素。甚至更复杂的y=2x+3。
如果您不明白,请拿着一张纸从两个较远的角落翻转(y=x 或y=-x)。或者看看这张照片。
我猜这将是两个旋转的组合,但我不知道如何计算旋转。
更新:
我不知道 CSS transform 有一个 rotate3d 函数。该函数接受四个参数rx、ry、rz 和deg。我觉得这对解决这个问题很有帮助。
另一件事是当我们改变translate[X,Y,Z] 它实际上改变了旋转的原点。这意味着如果您想围绕Y=10px 旋转,您应该将translateZ 更改为10px
更新2:
我的实际目标是创建一个使用 GUI 应用 CSS 转换属性的工具。正如您在我的 jsbin 文件中看到的那样。我想将它扩展到 transform 你可以做的任何事情。其中之一是旋转。我确定可以围绕x=0 以外的其他行旋转元素...但我不知道如何进行计算。例如,围绕Y 旋转45 度和围绕Z 旋转45 度与围绕x=y 旋转45 度相同。我需要空间中所有线条的解决方案。
【问题讨论】:
-
任何轴上的所有旋转都可以定义为 X、Y 和 Z 轴上的旋转 - 这只是一个数学问题。维基百科有something to start with。 :)
-
您是否尝试使用 javascript 创建 M 理论模型? :)
-
3D 空间中的任何一条线都可以作为旋转轴。想想 x=y 线。请重新打开我的问题。我会添加更多细节
-
我们不在 3D 空间中。 HTML 文档本质上是 2D 的,因此您可以旋转的只是一个点。 3D transforms 完全不同...
-
当你说“旋转”时,你是真的指旋转任意角度(这样得到的图形可以位于平面之外)还是简单的意思是翻转(即 reflection) 越过这条线。后一种情况要简单得多。