js如何计算A(x1,y1)和B(x2,y2)的角度

js如何计算A(x1,y1)和B(x2,y2)的角度,第1张

根据我的理解,你这是给了两个坐标,求这个向量和水平线的角度么?

其实就是一个数学问题吧?

function angle(start,end){

    var diff_x = endx - startx,

        diff_y = endy - starty;

    //返回角度,不是弧度

    return 360Mathatan(diff_y/diff_x)/(2MathPI);

}

那么执行

angle({x:0,y:0},{x:1,y:1})就会返回45(度)

rotate是jQuery旋转rotate插件,支持Internet Explorer 60+ 、Firefox 20 、Safari 3 、Opera 9 、Google Chrome,高级浏览器下使用Transform,低版本ie使用VML实现。

rotate(angle)angle参数:[Number] – 默认为 0

根据给定的角度旋转例如:

$(“#img”)rotate(45);或 $(‘#img’)rotate({angle:45})

rotate(parameters)parameters参数:[Object] 包含旋转参数的对象。

支持的属性

1angle属性:[Number] – default 0 – 旋转的角度数,并且立即执行

例如:1$(“#img”)rotate({angle:45});

2bind属性:[Object] 对象,包含绑定到一个旋转对象的事件。事件内部的$(this)指向旋转对象-这样可以在内部链式调用- $(this)rotate(…)。

例如 (click on arrow):

$(“#img”)rotate({bind:{

    click: function(){

            $(this)rotate({

                angle: 0,

                animateTo:180

            })

          }

       }

});

3animateTo属性:[Number] – default 0 – 从当前角度值动画旋转到给定的角度值 (或给定的角度参数)

4duration属性:[Number] – 指定使用animateTo的动画执行持续时间

例如 (click on arrow):

$(“#img”)rotate({bind:{

    click: function(){

        $(this)rotate({

            duration:6000,

            angle: 0,

            animateTo:100

        })

    }

   }

});

5 step属性:[Function] – 每个动画步骤中执行的回调函数,当前角度值作为该函数的第一个参数

6  easing属性:[Function] – 默认 (see below)

默认:function (x, t, b, c, d) { return -c  ((t=t/d-1)ttt - 1) + b; }

Where:

t: current time,

b: begInnIng value,

c: change In value,

d: duration,

x: unused

没有渐变:No easing (linear easing):function(x, t, b, c, d) { return (t/d)c ; }

     

示例1:没有效果,一直转

 $("#scImg")rotate({

                              angle:0,

                              animateTo:360,

                              callback: rotation,

                                easing: function (x,t,b,c,d){     

                                      return (t/d)c ;

                             }

                      });

   

示例2: 默认的效果

         $("#scImg")rotate({

                              angle:0,

                              animateTo:360,

                              callback: rotation,

                              easing: function (x,t,b,c,d){

return -c((t=t/d-1)ttt-1)+b ;

                             }

                      });示例3:

$(“#img”)rotate({bind:{

    click: function(){

        $(this)rotate({

            angle: 0,

            animateTo:180,

            easing: $easingeaseInOutElastic

            })

        }

    }

});

7callback属性:[Function] 动画完成时执行的回调函数

例如

$(“#img”)rotate({bind:{

    click: function(){

        $(this)rotate({

            angle: 0,

            animateTo:180,

            callback: function(){ alert(1) }

            })

        }

    }

});

8 getRotateAngle这个函数只是简单地返回旋转对象当前的角度。

例如:

$(“#img”)rotate({

    angle: 45,

    bind: {

        click : function(){

        alert($(this)getRotateAngle());

        }

    }

});

9stopRotate这个函数只是简单地停止正在进行的旋转动画。例如:

$(“#img”)rotate({

    bind: {

        click: function(){

            $(“#img”)rotate({

                angle: 0,

                animateTo: 180,

                duration: 6000

            });

        setTimeout(function(){

            $(“#img”)stopRotate();

            }, 1000);

        }

    }

});

这是数学题啊

Rotate = function(Source,Angle)//Angle为正时逆时针转动, 单位为弧度

{

var A,R;

A = Mathatan2(SourceY,SourceX)//atan2自带坐标系识别, 注意X,Y的顺序

A += Angle//旋转

R = Mathsqrt(SourceX  SourceX + SourceY  SourceY)//半径

return {

X : Mathcos(A)  R,

Y : Mathsin(A)  R

}

}

Rotate({X : 0,Y : 4},-MathPI / 4)

注意, 由於牵扯浮点运算, 所以你如果调用

Rotate({X : 0,Y : 4},MathPI / 2)

返回可能会是{X: -4, Y: 4898425415289509e-16}

Y很小但不等於0

当然如果用矩阵变换也是可以写的

这是CSS3里面的属性,

以中心为圆点旋转:transform-origin:center 0px;

旋转角度:transform:rotate(360deg);

顺时针旋转角度;

旋转角度可以写在js代码里,点击旋转或者加载页面旋转都行

以上就是关于js如何计算A(x1,y1)和B(x2,y2)的角度全部的内容,包括:js如何计算A(x1,y1)和B(x2,y2)的角度、jquery.rotate.js库中的rotate函数怎么用。、求大神js代码 知道A点的坐标,绕着O(原点)旋转任意角度求出旋转后的B坐标。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10060492.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存