关于点绕圆环运动轨迹未重合的理解

关于点绕圆环运动轨迹未重合的理解

1.为什么未重合

2.怎样解决

3.另一种理解

4.最终实现(为了看上去协调,给动画div加了border-radius属性)

以下为源码:

----------------------------------------------

<!doctype html>

<html>

<head>

<meta http-equiv="content-Type" content="text/html;charset=utf-8">

<title>关于点绕圆环运动轨迹未重合的理解</title>

<meta name="keywords" content="关键词,关键词">

<meta name="description" content="">

<title>Process Bar</title>

<style>

*{margin:0;padding:0;}

h1,h3,p{text-align:center;}

h1{padding:20px;}

img{display:block;margin:0 auto;}

#box{width:200px;height:200px;margin:20px auto;position:relative;}

#cycle{width:180px;height:180px;border-radius:50%;border:10px solid red;}

.movediv{position:absolute;width:10px;height:10px;background:#fff;border-radius:50%;}

</style>

</head>

<body>

<h1>关于点绕圆环运动轨迹未重合的理解</h1>

<h3>1.为什么未重合</h3>

<img src="2.png" width="800" height="600" />

<h3>2.怎样解决</h3>

<img src="1.png" width="800" height="600" />

<h3>3.另一种理解</h3>

<img src="3.png" width="800" height="600" />

<h3>4.最终实现(为了看上去协调,给动画div加了border-radius属性)</h3>

<div id="box">

<div id="cycle"></div>

</div>

</body>

<script>

window.onload = function(){

var moveDom = document.createElement("div");

moveDom.className = "movediv";

var cycleDom = document.getElementById("cycle");

cycleDom.appendChild(moveDom);

var speed = 0.2;

var start = 0;

var r = 96;

var timer = setInterval(function(){

start += speed;

var left = 100+parseInt(r*Math.cos(start))-5;//减去动画div的宽的一半,使div在X轴上处于中心位置

var top = 100+parseInt(r*Math.sin(start))-5;//减去动画div的高的一半,使div在Y轴上处于中心位置

//var left = 100-5+parseInt(r*Math.cos(start));//圆心X轴减去动画div的宽的一半,使圆心水平方向与圆环圆心重合

//var top = 100-5+parseInt(r*Math.sin(start));//圆心Y轴减去动画div的高的一半,使圆心垂直方向与圆环圆心重合

moveDom.style.top = top+"px";

moveDom.style.left = left+"px";

},50);

};

</script>

</html>

时间: 2024-10-20 14:45:44

关于点绕圆环运动轨迹未重合的理解的相关文章

创建对象的几种方法

第一种:创建0bject对象实例 创建自定义对象的最简单方法就是创建一个Object的实例,再为他添加属性和方法. 1 var people = new Object(); 2 people.name = "yewenxiang"; 3 people.age = 24; 4 people.sayName = function(){ 5 console.log(this.name); 6 } 还可以使用对象字面量语法创建一个对象,等价于上面的代码 1 var people = { 2 n

Python 快速排序

def quick_sort(alist, start, end): """快速排序""" # 递归的退出条件 if start >= end: return # 设定起始元素为要寻找位置的基准元素 mid = alist[start] # low为序列左边的由左向右移动的游标 low = start # high为序列右边的由右向左移动的游标 high = end while low < high: # 如果low与high未重合,

【Javascript】Javascript原型与继承

一切都是对象! 以下的四种(undefined, number, string, boolean)属于简单的值类型,不是对象.剩下的几种情况——函数.数组.对象.null.new Number(10)都是对象.他们都是引用类型. 判断一个变量是不是对象非常简单.值类型的类型判断用typeof,引用类型的类型判断用instanceof. var fn = function () { }; console.log(fn instanceof Object); // true java中的对象都是ne

原型链整理

/*判断类型*/ function show(x){ /*undefined,number,string,boolean属于简单的值类型,值类型的判断用typeof*/ console.log(typeof x);//undefined console.log(typeof 10);//number console.log(typeof 'abc');//string console.log(typeof true);//boolean /*函数,数组,对象,null,new Number(10

找到链表中环的起始点

以前想了好几次没想明白,早上拿笔纸一画就看出来了: 设置slow,fast两个指针,slow每次移动一步,fast每次移动两步:若fast结束前与slow重合则说明有环,若未重合即结束则说明没有环: 第一次重合时,假设从head到环起始位置距离为k,slow移动了n步,则slow在环中移动了n-k步,fast在环中移动了2n-k步:距离差n为环长度的倍数: 所以slow再移动k步将到达环的起始位置:这时再从head出发一个finder指针,移动k步恰好也到了环的起始位置,所以当slow==fin

javascript基础复习/重新学习

与其说复习,不如说重新学习.这里记录一下学习过程中想要记录的东西,以便于以后温习. ECMAScript原始数据类型:String.Number.Boolean.Undefined.Null 对变量或者值调用typeof运算符将返回下列值之一: undefined - 如果变量是Undefined类型的 string - 如果变量是String类型的 number - 如果变量是Number类型的 boolean - 如果变量是Boolean类型的 object - 如果变量是一种引用类型或Nu

js面向对象系列——关系图

下面这张图就是结构图,可以尝试用显性的prototype和隐形的[[prototype]]来理解这个图: 如果理解不了那么就可以利用之前说的另一个工具:instanceof(它就是依赖原生链来实现) 例如:A InstantOf B 其实就是沿着实例对象的__proto__这条线来找,同时沿着函数对象的prototype这条线来找,如果两条线能找到同一个引用,即同一个对象,那么就返回true.如果找到终点还未重合,则返回false 以为他就是根据这个原理实现的,可以尝试模拟代码如下: Objec

js中instanceof与typeof的区别以及instanceof的门道

js中判断值类型,你可以通过typeof判断,string/number/boolean都很清楚,但是typeof在判断到引用类型的时候,返回值只有object/function,你不知道它到底是一个object对象,还是数组,还是new Number等等. 这个时候就需要用到instanceof:比如在 a  instanceOf f中沿着a的__proto__这条线来找,同时沿着B的prototype这条线来找,如果两条线能找到同一个引用,即同一个对象,那么就返回true.如果找到终点还未重

D3.js area函数

var area = d3.svg.area().interpolate("monotone").x(function(d) { return x(d.date); }).y0(260).y1(function(d) { return y(d.price); });     //.x()数据点在x轴的坐标d.date     //.y1数据点在y轴的坐标d.price,这两个值确定一个数据点的坐标(数值)     //.y0相当于转换器[0,260],把y1的值映射到[0-260](像