如何在不旋转的情况下以圆周运动移动图像?

时间:2013-02-18 16:05:33

标签: javascript html

我需要在我的网站上有一个太阳图像和月亮图像,这些图像将在一天中的大部分时间被隐藏,但是当它们是时候展示时,它们将从左边开始以圆周运动进行。向右走。

我的代码说明了实现白天或黑夜的百分比,我只需要知道如何在不旋转图像的情况下以圆周运动移动图像。

2 个答案:

答案 0 :(得分:3)

css part:

  1. 将css位置设为绝对
  2. 根据三角法
  3. 设置x和y坐标(css top and left)

    三角:

    基本上你想要半圈,pi度为0%,零度为100%,所以它就像获得圆坐标(即x =中心+半径* cos(角度))但唯一复杂的部分是你需要扭转角度:PI *(1%)

    var centerX = document.body.offsetWidth / 2;   // center of screen
    var centerY = document.body.offsetHeight / 2;
    var radiusX = document.body.offsetWidth / 3;   // radius 1/3 screen
    var radiusY = document.body.offsetHeight / 3;
    var angle = Math.PI * (1-percent);
    var x = centerX + radiusX * Math.cos(angle);
    var y = centerY + radiusY * Math.sin(angle); 
    

答案 1 :(得分:0)

确定。

我刚为自己想出了圆周运动,这非常简单。您可以采用半径,角度和一些简单的数学运算来确定某些东西的位置。所以......

var body   = document.getElementsByTagName("body")[0],
    radius = 100, // Some radius here
    max    = 50;  // max number of generations we want (half a circle)
for (var i = 1; i <= max * 2; i++) {
    var div                   = document.createElement("div"),
        angle                 = Math.PI * (i / max);
    div.style.backgroundColor = "#000";
    div.style.borderRadius    = div.style.height = div.style.width = "8px";
    div.style.left            = ((Math.sin(angle) * radius) + radius) + "px";
    div.style.position        = "absolute";
    div.style.top             = ((Math.cos(angle) * radius) + radius) + "px";
    body.appendChild(div);
}

你应该得到一个完整的循环。只需根据需要去除并重建数学,你就应该好好去。