公式

作者: 卓小生 | 来源:发表于2018-04-21 22:04 被阅读0次

已知两点获取直线公式:

Math.sqrt( Math.pow((x1 - x2),2) + Math.pow((y1 - y2),2) )

已知三点求角度


var cos= (Math.pow(一边,2)+Math.pow(二边,2) - Math.pow(三边,2) ) / (2*一边*二边)//得余弦
var deg = Math.acos( deg )*180/Math.PI;//得角度
deg = Math.round(deg)//取整角度 四舍五入

栗子

360°旋转仪盘表

html

 <!-- 底盘 -->
<div id="disk">
    <div id="img"></div>
    <div id="pointer">
        <div></div>
    </div>
    <div class="outer"></div>
    <div class="pie"></div>
</div>

css

/*转盘*/
#disk{
    /*display: none;*/
    position: relative;
    width: 88px;
    height: 88px;
    margin-left: 200px;
    margin-top: 200px;
    border-radius: 50%;
}
#disk:after{
    content: '';
    position: absolute;
    width: 2px;
    height: 2px;
    border-radius: 50%;
    background: #111;
    top: 50%;
    left: 50%;
    margin: -1px 0 0 -1px;
}
#img{
    position: relative;
    width: 88px;
    height: 88px;
    border-radius: 50%;
    background: #ff9eff;
    z-index: 999;       
}
#pointer{
    position: absolute;
    width: 0;
    height: 0;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 77px solid red;
    top: -33px;
    left: 50%;
    margin-left: -10px;
    z-index: 8;
    transform-origin: center bottom;
    transform: rotate(0deg);                
}
#pointer div{
    position: absolute;
    width: 2px;
    height: 2px;
    background: blue;
    border-radius: 50%;
    z-index: 99;
    top: 0;
    margin-top: -1px;
    left: 0;
    margin-left: -1px;
}
.outer{
    position: absolute;
    width: 154px;
    height: 154px;
    top: 50%;
    left: 50%;
    margin-top: -77px;
    margin-left: -77px;
    transform: rotate(0deg);
    clip: rect(0px,77px,154px,0px);/* 这个clip属性用来绘制半圆,在clip的rect范围内的内容显示出来,使用clip属性,元素必须是absolute的 */
    border-radius: 77px;
    background: rgba(0,0,0,.2);
    z-index: 1
}
.pie{
    position: absolute;
    width: 156px;
    height: 156px;
    top: 50%;
    left: 50%;              
    margin-top: -78px;
    margin-left: -78px;             
    transform: rotate(0deg);
    clip: rect(0px,78px,156px,0px);
    border-radius: 78px;
    background: #fff;
    z-index: 1
}

js

 // 控制 拖拽
    var deg;
    var obj = $('#pointer');
    function drag() {
        obj.bind('mousedown', start);  
        function start(e) { 
            $(document).bind({
                'mousemove': move,
                'mouseup': stop
            });
            return false;
        }
        function move(e) {
            // 获取圆心
            var circleL = $('#disk').offset().left + 44;
            var circleT = $('#disk').offset().top + 44;
            // 获取起始点
            var startL = circleL;
            var startT = circleT - 88;
            // 第一条边
            var first = 88;
            //第二条边 
            var tow = 88;
            // 这是指针顶尖的中心点
            var ol = obj.find('div').offset().left + 1;
            var ot = obj.find('div').offset().top + 1;
            // console.log( ol,ot )
            var X = e.pageX;
            var Y = e.pageY;
            // console.log( X ,circleL+'--------' )
            //第二条边 
            var tow = Math.sqrt(Math.pow((X - circleL), 2) + Math.pow((Y - circleT), 2))

            // 求第三边
            var Third = Math.sqrt(Math.pow((X - startL), 2) + Math.pow((Y - startT), 2))

            // 求arccos 
            deg = (Math.pow(first, 2) + Math.pow(tow, 2) - Math.pow(Third, 2)) / (2 * first * tow)
            // 求角度
            deg = Math.acos(deg) * 180 / Math.PI;
            deg = Math.round(deg);
            // 判断顺时针还是逆时针
            if (startL > X && startT < Y) {
                deg = -deg;
                $('.pie').css({
                    'transform': 'rotate(' + deg + 'deg)'
                })
                $('.outer').css({
                    'transform': 'rotate(0deg)'
                })

            } else {
                $('.outer').css({
                    'transform': 'rotate(' + deg + 'deg)'
                })
                $('.pie').css({
                    'transform': 'rotate(0deg)'
                })
            }
            // 转角度

            obj.css('transform', 'rotate(' + deg + 'deg)');

            console.log(deg)
            return false;
        }
        function stop() {
            $(document).unbind({
                'mousemove': move,
                'mouseup': stop
            });
            obj.css('transform', 'rotate(0deg)');
            $('.pie').css({
                'transform': 'rotate(0deg)'
            })
            $('.outer').css({
                'transform': 'rotate(0deg)'
            })
        }
    }
    drag();

相关文章

  • BP神经网络公式推导

    正向传播 第1层公式1公式2公式3公式4第2层公式5公式6公式7公式8第m层公式9公式10公式11公式12 反向传...

  • MakeDown 数学公式

    MakeDown 数学公式 行内与独行 行内公式:将公式插入到本行内,符号:$公式内容$,如: 独行公式:将公式插...

  • Markdown数学公式

    公式标识符 $ 行内公式:将公式嵌入到本号内:$公式$ 独行公示:整个公式独立一行:$$公式$$ 上标、下标 语法...

  • Org-mode的电子表格的简明教程

    序言 熟悉引用 第一个公式 列公式和单元格公式 交互的编辑公式 Calc和Elisp公式 调试公式 很多, 还有更...

  • Markdown数学公式

    行内公式 将公式插入到本行内$公式内容$ 独行公式 将公式插入到新的一行内,并且居中,$$公式内容$$ 上标、下标...

  • 高数常用公式总结

    1. 基础公式 ,;,,. 2. 极限 极限公式 ; , ;,. 无穷公式 3. 导数 导数公式 , ;,;,; ...

  • 使用简书写数学公式

    1 插入数学公式 在Markdown中插入数学公式的语法是$数学公式$和$$数学公式$$ 行内公式是可以让公式在文...

  • 小斑选股:5分钟搞定通达信自动选股

    1.通达信公式 公式类型分为四大类:技术指标公式、条件选股公式、交易系统公式、五彩K线公式。 1.1技术指标公式 ...

  • 三角函数基础公式整理

    定义式 函数关系 和差角公式 和差化积公式 积化和差公式 二倍角公式 半角公式 万能公式 余弦公式 引用“三角函数...

  • 9、公式定义

    公式用于记录报表数据之间的运算和逻辑关系。公式按作用可分为:审核公式、自动运算公式、非自动运算公式和平衡调整公式,...

网友评论

      本文标题:公式

      本文链接:https://www.haomeiwen.com/subject/uhiflftx.html