需求: 已知一个向量,初始位置在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的属性

// headingPolygonvar 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

转载于:https://www.cnblogs.com/liulei-cherry/p/8459006.html

JavaScript求两点之间相对于Y轴的顺时针旋转角度相关推荐

  1. 7-1 求两点之间距离

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

  2. PTA 求两点之间距离 (20 分)

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

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

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

  4. 求两点之间的距离(C++语言)

    求两点之间的距离 两种思路: 第一种: 直接利用四个坐标值进行计算. 第二种: 利用结构体描绘坐标,实现对坐标的抽象描述. 此处两个函数同名,但其函数的参数不同,即函数的函数签名不同,是C++特有的函 ...

  5. C语言 求两点之间线段距离

    求两点之间线段位置 函数求距离方法 #include <stdio.h> #include<math.h> double square(); int main() {print ...

  6. 射线p0-p1相对于Y轴负向顺时针旋转角度

    /* * 射线p0->p1相对于Y轴负向顺时针旋转角度 */ double calculateRotateDegree(CGPoint p1, CGPoint p0) {//printf(&qu ...

  7. C++第一次实验-求两点之间的距离

    一.问题及代码 /* 文件名称:Test4.cpp * 作 者:胡嘉威 * 完成日期: 2017 年 2 月 28 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分:输入两个点的坐标,求两 ...

  8. JavaScript - demo - 两点之间画线

    代码: <html><head></head><body><script>var f;window.onmousedown = functi ...

  9. 求两点之间的夹角--两种方法

    方法一: 假设有两个向量,A和B sigma = acos(dot(A,B)/(norm(A)*norm(B))); %弧度制 换算成角度制:sigma/pi*180 NOTE:此方法求两向量之间的夹 ...

最新文章

  1. Java基础语法运算和控制符
  2. session和cookie的区别和联系---转载
  3. qn模块java脚本_BAT批处理实现自动安装软件功能
  4. 彻底解决_OBJC_CLASS_$_某文件名, referenced from:问题
  5. 17.explain_api
  6. Ios KVC KVO
  7. 全景摄像技术大有可为
  8. android 透明变成白色,android – 状态栏不透明但是白色
  9. temp变量this变量base变量 c# 1613715552
  10. python 第四天
  11. DevOps正在扼杀程序员?
  12. 河南科技大学计算机专业专升本,河南科技大学成人高考计算机应用技术专业的课程有哪些...
  13. 浅析.NET中的引用类型和值类型(下)
  14. Atitit.mysql oracle with as模式临时表模式 CTE 语句的使用,减少子查询的结构性 mssql sql server..
  15. OneNote | 插件/使用技巧
  16. 计算机软件安装包后缀名,软件安装包程序是什么
  17. STM32f407 DCMI方式驱动 OV2640
  18. win10 开热点 【服务主机:网络服务】 疯狂跑流量的解决方案 亲测有效!!!!
  19. 在android view中写坦克大战
  20. 企业级移动应用如何优化域名解析和业务访问?

热门文章

  1. java线程跟多线程
  2. C++ 的Tool工具收集
  3. 关于java设计模式与极品飞车游戏的思考
  4. Flutter AlertDialog弹框的基本使用、Flutter showDialog方法使用概述
  5. Android应用程序管理系列(二)——PackageManager 包管理者
  6. Codewars-(RegEx去除html标签)
  7. Mr.J--JS学习(闭包及IIFE)
  8. SpringMVC表单验证与Velocity整合
  9. FormView用法
  10. asp.net request获取url各个部分