• 矩阵代码



    var oDiv = document.getElementById("feifei");

    $(function () {

    var aSpan = $('.resizable');
    for (var i = 0; i < aSpan.length; i++) {
    dragFn(aSpan.eq(i).get(0));
    }


    $('.rotate-circle').mousedown(function (ev) {
    var oEv = ev || event;
    var oDiv = document.getElementById("feifei");
    var oldWidth = oDiv.offsetWidth;
    var oldHeight = oDiv.offsetHeight;
    var oldX = oEv.clientX;
    var oldY = oEv.clientY;
    var oldLeft = oDiv.offsetLeft;
    var oldTop = oDiv.offsetTop;
    var oldCenterX = oldLeft + oldWidth/2;
    var oldCenterY = oldTop + oldHeight/2;

    var obj = $('.feifei');

    var deg=eval('get'+obj.css('transform'));
    console.log('deg',deg);
    //构造getmatrix函数,返回上次旋转度数
    console.log(deg);
    document.onmousemove = function (ev) {
    var ov = ev || event;
    var newX = ov.clientX;
    var newY = ov.clientY;
    var VectorAB = [newX-oldCenterX,newY-oldCenterY];
    var VectorBC = [oldX-oldCenterX,oldY-oldCenterY];
    var Mul = VectorAB[0]*VectorBC[0] + VectorAB[1]*VectorBC[1];
    var ScalarAB = VectorAB[0]*VectorAB[0] + VectorAB[1]*VectorAB[1];
    var ScalarBC = VectorBC[0]*VectorBC[0] + VectorBC[1]*VectorBC[1];
    var MulScalar = Math.sqrt(ScalarAB) * Math.sqrt(ScalarBC);
    var angle = Math.acos(Mul/MulScalar)/Math.PI*180;
    if(deg==0){
    if(newX<oldCenterX){//鼠标在第二象限
    obj.css({'transform':'rotate('+(deg-angle)+'deg)'});
    }
    if(newX>oldCenterX){//鼠标在第一象限
    obj.css({'transform':'rotate('+(deg+angle)+'deg)'});
    }
    }else{
    console.log( Math.tan(angle*Math.PI/180));
    var y = Math.tan(angle*Math.PI/180) * newX;
    if(newY<y){//鼠标在第二象限
    obj.css({'transform':'rotate('+(deg-angle)+'deg)'});
    }
    if(newY>y){//鼠标在第一象限
    obj.css({'transform':'rotate('+(deg+angle)+'deg)'});
    }
    }

    /*if(newX===oldCenterX&&newY<oldCenterY){//鼠标在y轴负方向上
    angle = 0;
    obj.css({'transform':'rotate('+(angle)+'deg)'});
    }
    if(newX===oldCenterX&&newY>oldCenterY){//鼠标在y轴负方向上
    angle = 180;
    obj.css({'transform':'rotate('+(angle)+'deg)'});
    }

    if(newX>oldCenterX&&newY===oldCenterY){//鼠标在x轴正方向上
    angle = 90;
    obj.css({'transform':'rotate('+(angle)+'deg)'});
    }

    if(newX<oldCenterX&&newY===oldCenterY){//鼠标在x轴负方向
    angle = -90;
    obj.css({'transform':'rotate('+(angle)+'deg)'});
    }*/

    };

    document.onmouseup = function (ev) {
    document.onmousemove = null;
    var ov = ev || event;
    var newX = ov.clientX;
    var newY = ov.clientY;
    var VectorAB = [newX-oldCenterX,newY-oldCenterY];
    var VectorBC = [oldX-oldCenterX,oldY-oldCenterY];

    var Mul = VectorAB[0]*VectorBC[0] + VectorAB[1]*VectorBC[1];
    var ScalarAB = VectorAB[0]*VectorAB[0] + VectorAB[1]*VectorAB[1];
    var ScalarBC = VectorBC[0]*VectorBC[0] + VectorBC[1]*VectorBC[1];

    var MulScalar = Math.sqrt(ScalarAB) * Math.sqrt(ScalarBC);


    var angle = Math.acos(Mul/MulScalar)/Math.PI*180;
    if(newX<oldCenterX&&newY<oldCenterY){//鼠标在第二象限
    angle = - angle;
    //obj.css({'transform':'rotate('+(deg+angle)+'deg)'});
    }
    if(newX<oldCenterX&&newY>oldCenterY){//鼠标在第三象限
    angle = - angle;
    //obj.css({'transform':'rotate('+(deg+angle)+'deg)'});
    }
    if(newX>oldCenterX&&newY<oldCenterY){//鼠标在第一象限

    //obj.css({'transform':'rotate('+(deg+angle)+'deg)'});
    }
    if(newX>oldCenterX&&newY>oldCenterY){//鼠标在第四象限

    //obj.css({'transform':'rotate('+(deg+angle)+'deg)'});
    }
    if(newX===oldCenterX&&newY<oldCenterY){//鼠标在y轴负方向上
    angle = 0;

    }
    if(newX===oldCenterX&&newY>oldCenterY){//鼠标在y轴负方向上
    angle = -180;
    }

    if(newX>oldCenterX&&newY===oldCenterY){//鼠标在x轴正方向上
    angle = 90;

    }

    if(newX<oldCenterX&&newY===oldCenterY){//鼠标在x轴负方向
    angle = -90;

    }
    obj.css({'transform':'rotate('+(angle)+'deg)'});
    document.onmouseup = null;
    };
    return false;

    });
    });


    function getmatrix(a,b,c,d,e,f){
    var aa=Math.round(180*Math.asin(a)/ Math.PI);
    var bb=Math.round(180*Math.acos(b)/ Math.PI);
    var cc=Math.round(180*Math.asin(c)/ Math.PI);
    var dd=Math.round(180*Math.acos(d)/ Math.PI);
    var deg=0;
    if(aa==bb||-aa==bb){
    deg=dd;
    }else if(-aa+bb==180){
    deg=180+cc;
    }else if(aa+bb==180){
    deg=360-cc||360-dd;
    }

    return deg > 180 ? -360 + deg % 360 : deg % 360 ;
    }

    function dragFn(obj) {
    console.log(obj);
    obj.onmousedown = function (ev) {
    var oEv = ev || event;

    var oldWidth = oDiv.offsetWidth;
    var oldHeight = oDiv.offsetHeight;
    var oldX = oEv.clientX;
    var oldY = oEv.clientY;
    var oldLeft = oDiv.offsetLeft;
    var oldTop = oDiv.offsetTop;

    document.onmousemove = function (ev) {
    var oEv = ev || event;
    var classname = obj.className;
    if (classname.indexOf('circle-nw')>-1) {
    oDiv.style.width = oldWidth - (oEv.clientX - oldX) + 'px';
    oDiv.style.height=oldHeight-(oEv.clientY-oldY)+'px';
    oDiv.style.left = oldLeft + (oEv.clientX - oldX) + 'px';
    oDiv.style.top = oldTop + (oEv.clientY - oldY) + 'px';
    }
    else if (classname.indexOf('circle-sw')>-1) {
    oDiv.style.width = oldWidth - (oEv.clientX - oldX) + 'px';
    oDiv.style.height=oldHeight+(oEv.clientY-oldY)+'px';
    oDiv.style.left = oldLeft + (oEv.clientX - oldX) + 'px';
    oDiv.style.bottom = oldTop + (oEv.clientY + oldY) + 'px';
    }
    else if (classname.indexOf('circle-ne')>-1) {
    oDiv.style.width = oldWidth + (oEv.clientX - oldX) + 'px';
    oDiv.style.height = oldHeight - (oEv.clientY - oldY)+'px';
    oDiv.style.right = oldLeft - (oEv.clientX - oldX) + 'px';
    oDiv.style.top = oldTop + (oEv.clientY - oldY) + 'px';
    }
    else if (classname.indexOf('circle-se')>-1) {
    oDiv.style.width = oldWidth + (oEv.clientX - oldX) + 'px';
    oDiv.style.height = oldHeight + (oEv.clientY - oldY)+'px';
    oDiv.style.right = oldLeft - (oEv.clientX - oldX) + 'px';
    oDiv.style.bottom = oldTop + (oEv.clientY + oldY) + 'px';
    }
    else if (classname.indexOf('line-n')>-1) {
    oDiv.style.height=oldHeight-(oEv.clientY-oldY)+'px';
    oDiv.style.top = oldTop + (oEv.clientY - oldY) + 'px';
    }
    else if (classname.indexOf('line-s')>-1) {
    oDiv.style.height = oldHeight + (oEv.clientY - oldY)+'px';
    oDiv.style.bottom = oldTop - (oEv.clientY + oldY) + 'px';
    }
    else if (classname.indexOf('line-w')>-1) {
    oDiv.style.height = oldHeight + 'px';
    oDiv.style.width = oldWidth - (oEv.clientX - oldX) + 'px';
    oDiv.style.left = oldLeft + (oEv.clientX - oldX) + 'px';
    }
    else if (classname.indexOf('line-e')>-1) {
    oDiv.style.height = oldHeight + 'px';
    oDiv.style.width = oldWidth + (oEv.clientX - oldX) + 'px';
    oDiv.style.right = oldLeft - (oEv.clientX - oldX) + 'px';
    }
    };

    document.onmouseup = function () {
    document.onmousemove = null;
    };
    return false;
    };
    }

    <meta charset="UTF-8">
    <div class="feifei" id="feifei">
        <div class="element-box" style="">
            <div class="element-box-contents" style=" 100%; height: 100%">
    
                <div class="element comp_image editable-image" style="
        background-size: cover;
        background-image: url(public/images/luopan_bg.png);
        background-repeat: no-repeat;
        background-position: 50% 50%;
    "></div>
            </div>
        </div>
    
        <div class="eqc-select ng-isolate-scope" comp-resize="n,ne,e,se,s,sw,w,nw,r">
            <div class="rotate-circle"></div>
            <div class="rotate-line"></div>
            <div class="bar bar-m-line"></div>
            <div class="line-n line resizable" style="cursor: ns-resize; z-index: 3;">
                <div class="circle"></div>
            </div>
            <div class="line-e line resizable" style="cursor: ew-resize;">
                <div class="circle"></div>
            </div>
            <div class="line-s line resizable" style="cursor: ns-resize;">
                <div class="circle"></div>
            </div>
            <div class="line-w line resizable" style="cursor: ew-resize;">
                <div class="circle"></div>
            </div>
            <div class="circle-nw circle resizable" style="cursor: nwse-resize; z-index: 4111;"></div>
            <div class="circle-ne circle resizable" style="cursor: nesw-resize; z-index: 41111;"></div>
            <div class="circle-se circle resizable" style="cursor: nwse-resize;"></div>
            <div class="circle-sw circle resizable" style="cursor: nesw-resize;"></div>
        </div>
    </div>
    
    <script src="mytest/drag.js"></script>
    <script src="mytest/drag2.js"></script>
    <script>
        $(function(){
    
            $('.circle-nw').click(function () {
    
    
            });
    
            function getPos(obj) {
                var pos = $(obj).offset();
                return [pos.left, pos.top];
            }
    
            function moveto(x, y) {
                $img2.css({
                    top: px(-y),
                    left: px(-x)
                });
                $sel.css({
                    top: px(y),
                    left: px(x)
                });
            }
    
            function resize(w, h) {
                $sel.width(Math.round(w)).height(Math.round(h));
            }
    
            function refresh() {
                var c = Coords.getFixed();
                Coords.setPressed([c.x, c.y]);
                Coords.setCurrent([c.x2, c.y2]);
                updateVisible();
            }
    
            function update(select) {
                var c = Coords.getFixed();
    
                resize(c.w, c.h);
                moveto(c.x, c.y);
                if (options.shade) Shade.updateRaw(c);
    
                awake || show();
    
                if (select) {
                    options.onSelect.call(api, unscale(c));
                } else {
                    options.onChange.call(api, unscale(c));
                }
            }
        })
    
    </script>
    

      

    .eqc-select {
        z-index: 103;
        position: absolute;
        pointer-events: none;
        height: 100%;
         100%;
        top: 0;
        left: 0;
    }
    .eqc-select .rotate-circle {
         12px;
        height: 12px;
        border-radius: 12px;
        top: -35px;
        left: 50%;
        margin-left: -6px;
        background-color: #44cb83;
        border: none;
        cursor: url(mouserotate.ico) 10 10,default;
    }
    .eqc-select .rotate-line {
         2px;
        height: 31px;
        top: -25px;
        left: 50%;
        margin-left: -1px;
        background-color: #44cb83;
    }
    .eqc-select .bar-m-line {
        height: 100%;
        border-left: 1px dashed #44cb83;
        top: 0;
        left: 50%;
        margin-left: -.5px;
        display: none;
    }
    .eqc-select .line-n {
         100%;
        height: 5px;
        top: -4px;
        background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAMAAAAoyzS7AAAAGXRFW…MAAAAGUExURQih7wAAAIpv3OoAAAAMSURBVHjaYmAACDAAAAIAAU9tWeEAAAAASUVORK5CYII=) repeat-x bottom;
    }
    .eqc-select>div {
        position: absolute;
        pointer-events: auto;
    }
    .eqc-select .line {
        z-index: 2;
    }
    .eqc-select .line-e {
         5px;
        height: 100%;
        top: 0;
        right: -4px;
        background: url(corssbg.png) repeat-y 0;
    }
    .eqc-select .line-e div {
        position: absolute;
        top: 50%;
        right: -2px;
        margin-top: -5px;
    }
    .eqc-select .circle {
         12px;
        height: 12px;
        background-color: #fff;
        border: 1px solid #59c7f9;
        border-radius: 12px;
    }
    .eqc-select .circle {
        z-index: 4;
    }
    .eqc-select .line-s {
         100%;
        height: 5px;
        bottom: -4px;
        background: url(linebg.png) repeat-x top;
    }
    .eqc-select .line-s {
         100%;
        height: 5px;
        bottom: -4px;
        background: url(linebg.png) repeat-x top;
    }
    .eqc-select .circle-nw {
        top: -5px;
        left: -5px;
    }
    .eqc-select .circle-ne {
        top: -5px;
        right: -6px;
    }
    .eqc-select .circle-sw {
        bottom: -5px;
        left: -5px;
    }
    .eqc-select .line-n {
         100%;
        height: 5px;
        top: -4px;
        background: url(linebg.png) repeat-x bottom;
    }
    .eqc-select .line-n div {
        position: absolute;
        left: 50%;
        top: -2px;
        margin-left: -6px;
    }
    .eqc-select .line-w div {
        position: absolute;
        top: 50%;
        left: -1px;
        margin-top: -5px;
    }
    .eqc-select .line-s div {
        position: absolute;
        left: 50%;
        bottom: -2px;
        margin-left: -6px;
    }
    .eqc-select .line-w div {
        position: absolute;
        top: 50%;
        left: -1px;
        margin-top: -5px;
    }
    .eqc-select .circle-nw {
        top: -5px;
        left: -5px;
    }
    .eqc-select .circle-ne {
        top: -5px;
        right: -6px;
    }
    .eqc-select .circle-se {
        bottom: -5px;
        right: -6px;
    }
    .eqc-select .circle-sw {
        bottom: -5px;
        left: -5px;
    }
    .eqc-select .line-w {
         5px;
        height: 100%;
        top: 0;
        left: -4px;
        background: url(corssbg.png) repeat-y 100%;
    }
    .eqc-select .line-s {
         100%;
        height: 5px;
        bottom: -4px;
        background: url(linebg.png) repeat-x top;
    }
    .feifei{
         223px;
        height: 413px;
        left: 366px;
        top: 188px;
        z-index: 12;
        transform: rotateZ(0deg);
        opacity: 1;
        position: absolute;
        border- 0px;
    }
    .comp_image{
        100%;
        height:100%;
    }
    .element-box{
         100%; height: 100%;
        color: rgb(103, 103, 103); transform: none; text-align: left; border- 0px; border-style: solid;
        border-color: rgb(0, 0, 0); border-radius: 0px; padding-bottom: 0px; padding-top: 0px; box-shadow: rgba(0, 0, 0, 0.5) 0px 0px 0px; margin-top: 0px; margin-bottom: 0px;
    }
    

      

  • 相关阅读:
    python用win32com模拟浏览器
    python判断输入的字符串是否为数字
    phpwind9.0去掉头部版权信息 Powered by phpwind
    Python批量查询网站收录
    结巴分词 python中文分词
    phpwind 9.0 RC版[20121108],伪静态无效的问题
    [转]LINQ: Building an IQueryable provider series
    获取鼠标选择的文本内容之JavaScript代码
    M2级遍历和范围Range
    转:浏览器的用户代理字符串
  • 原文地址:https://www.cnblogs.com/ffjiang/p/8378689.html
Copyright © 2020-2023  润新知