博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript求两点之间相对于Y轴的顺时针旋转角度
阅读量:4651 次
发布时间:2019-06-09

本文共 1746 字,大约阅读时间需要 5 分钟。

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

725304-20180222151012274-20951013.png

分析:

坐标点(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 + ')'       });

本文参考:

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

你可能感兴趣的文章
maze_travel的隐私声明
查看>>
对正则表达式又重新学了一遍,笔记方便以后查阅
查看>>
UIKit应用 - Swift 版本: 3.让UITableViewCell的背景色渐变
查看>>
Java反射
查看>>
building tool
查看>>
JS中for循环输出三角形
查看>>
字节对齐2
查看>>
与Win8之磁盘活动时间100%斗争心得
查看>>
Matrix: android 中的Matrix (android.graphics.Matrix) (转)
查看>>
Android中处理崩溃异常
查看>>
Day7—socket进阶
查看>>
只读数据文件损坏恢复
查看>>
转过来的,可以看下
查看>>
windows搭建SVN服务MD版
查看>>
HashMap的工作原理
查看>>
一碗饭
查看>>
floyd求最小环 模板
查看>>
SqlServer索引的原理与应用
查看>>
使用Kubeadm搭建Kubernetes(1.12.2)集群
查看>>
微信小程序获取当前地址以及选择地址详解 地点标记
查看>>