需求: 已知一个向量,初始位置在y轴方向,如图红色箭头,绕中心点(x1, y1)旋转若干角度后,到达Line(x2,y2 x1,y1)的位置,求旋转角度

分析:

坐标点(x1, y1)(x2, y2)已知,则可利用JavaScript反三角函数求角度。

      var  getYAngle= function (cx, cy, x2, y2) {
var x = Math.abs(cx - x2);
var y = Math.abs(cy - y2);
var z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
var tan = x / y;
var radina = Math.atan(tan);//用反三角函数求弧度
var angle = Math.floor(180 / (Math.PI / radina)) || 0;//将弧度转换成角度
if (x2 > cx && y2 > cy) {// point在第四象限
angle = (-1) * angle;
}
if (x2 == cx && y2 > cy) {// point在y轴负方向上
angle = 0;
}
if (x2 < cx && y2 > cy) {//point在第三象限
angle = angle;
}
if (x2 < cx && y2 == cy) {//point在x轴负方向
angle = 90;
}
if (x2 < cx && y2 < cy) {// point在第二象限 angle = 180 - angle;
}
if (x2 == cx && y2 < cy) {//point在y轴正方向上
angle = 180;
}
if (x2 > cx && y2 < cy) {//point在第一象限
angle = 180 + angle;
} if (x2 > cx && y2 == cy) {//point在x轴正方向上
angle = -90;
} return angle;
}

然后使用Svg.js修改polygon的属性

// headingPolygon
var Headingpolygon = SVG.get(this.config.panelId + '_Headingpolygon');
var xa = x1 - 7, xb = x1 + 7, ya = y1 + 18;
var headAngle = this.getYAngle(x1, y1, x2, y2) || 0; Headingpolygon.attr({
'points': x1 + "," + y1 + " " + xa + "," + ya + " " + xb + "," + ya,
'transform': 'rotate(' + headAngle + ', ' + x1 + ' ' + y1 + ')'
});

本文参考: http://www.cnblogs.com/worldFulcrum/p/5573927.html

JavaScript求两点之间相对于Y轴的顺时针旋转角度的更多相关文章

  1. 求两点之间距离 C++

    求两点之间距离(20 分) 定义一个Point类,有两个数据成员:x和y, 分别代表x坐标和y坐标,并有若干成员函数. 定义一个函数Distance(), 用于求两点之间的距离.输入格式: 输入有两行 ...

  2. 求两点之间最短路径-Dijkstra算法

     Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.D ...

  3. 武汉科技大学ACM :1006: 零起点学算法25——求两点之间的距离

    Problem Description 输入平面坐标系中2点的坐标,输出它们之间的距离 Input 输入4个浮点数x1 y1 x2 y2,分别是点(x1,y1) (x2,y2)的坐标(多组数据) Ou ...

  4. HDU2874(LCA应用:求两点之间距离,图不连通)

    Connections between cities Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

  5. UESTC(LCA应用:求两点之间的距离)

    Journey Time Limit: 15000/3000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Bob has ...

  6. URAL 题目1553. Caves and Tunnels(Link Cut Tree 改动点权,求两点之间最大)

    1553. Caves and Tunnels Time limit: 3.0 second Memory limit: 64 MB After landing on Mars surface, sc ...

  7. JavaScript如何获得两点之间顺时针旋转的角度

    接上回:如何用javascript中的canvas让图片自己旋转 既然能够制定角度让图片旋转,那么现在要做的是自动获得旋转的角度, 让图片能够随着鼠标的方向旋转,让人物能够面朝鼠标的方向: 源代码: ...

  8. dfs+记忆化搜索,求任意两点之间的最长路径

    C.Coolest Ski Route 题意:n个点,m条边组成的有向图,求任意两点之间的最长路径 dfs记忆化搜索 #include<iostream> #include<stri ...

  9. Geotools求shapefile路网中任意两点之间最短路径的距离

    前言:之前在博问求助过这个问题.经过几天的思考,算是解决了(但仍有不足),另一方面对Geotools不是很熟,有些描述可能不正确,希望大家批评指正. 问题:作为一个新手,我并没有发现Geotools中 ...

随机推荐

  1. Django扩展内置User类

    内置User类 使用内置User可以方便实现登录验证,利用Admin管理界面还可以方便添加.删除.修改用户. 一个内置的User类定义了以下字段: username: 用户名 password: 密码 ...

  2. PAT Advanced 1036 Boys vs Girls (25 分)

    This time you are asked to tell the difference between the lowest grade of all the male students and ...

  3. flask基础之一

    flask基础之一 hello world #从flask这个包中导入Flask这个类 #Flask这个类是项目的核心,以后的很多操作都是基于这个类的对象 #注册url,注册蓝图都是这个类的对象 fr ...

  4. DevExpress ASP.NET Core Controls 2019发展蓝图(No.5)

    本文主要为大家介绍DevExpress ASP.NET Core Controls 2019年的官方发展蓝图,更多精彩内容欢迎持续收藏关注哦~ [DevExpress ASP.NET Controls ...

  5. ie下,首页打开页面非常慢

    手里的项目,登录页面在IE下首次进入页面非常的慢,应该不只是登录页面,因为项目我也是半路接手的.开始以为是js的问题,后台把所有的代码都去掉,就一个空白的页面,然后慢慢的试试,最后才发现是一个CSS文 ...

  6. 循环结构for语句-求和思想

    循环结构for语句的练习-求和思想:需求1:求出1到10之间的数据和 public static void main(String[] args) { int sum = 0; for(int i = ...

  7. HDU 6287 Just h-index

    Time limit 3000 ms Memory limit 132768 kB OS Windows Source CCPC2018-湖南全国邀请赛-重现赛(感谢湘潭大学) 中文题意 一个序列,每 ...

  8. jdk7.x对Jenkins上的SonarQube Plugin的支持不足,替换方式

    Jenkins.war放在Tomcat7下,完成各种配置,包括Jenkins中JDK,Maven,Git等. 最初的配置为Tomcat7, JDK7.x. 因为要在Jenkins上安装SonarQub ...

  9. 170906-MyBatis续

    ===============================================Dynamic SQL========================================== ...

  10. android 文件读写工具类

    将可以序列化的对象通过base64编码后进行保存 但是感觉多数情况下,不需要采用这个功能,直接保存原始的json字符串,取出来之后再进行解析即可 package com.wotlab.home.mon ...