article:
tag:
mod code publish @2011-06-28

Javascript > rectangle 操作函数 上一篇 | 下一篇

rect, rectangle, intersect, intersectRect, point


/**
 * 把 rectangle 数据 转换为 中心点坐标数据
 */

function rectToCenterPoint( _rect ){
    var _r = {
        'x': _rect.left + _rect.width / 2
            , 'y': _rect.top + _rect.height / 2
    };
    return _r;
}
 
    /**
     * 判断两个矩形是否有交集
     */

    function intersectRect( r1, r2 ) {
        return !(
                    r2.x > ( r1.x + r1.width ) || 
                    ( r2.x + r2.width ) < r1.x || 
                    r2.y > ( r1.y + r1.height ) ||
                    ( r2.y + r2.height ) < r1.y
                );
    }
    /**
     * 判断两个矩形是否有交集
     */

    function intersectRect( r1, r2 ) {
        return !(
                    r2.left > r1.right || 
                    r2.right < r1.left || 
                    r2.top > r1.bottom ||
                    r2.bottom < r1.top
                );
    }
    /**
     * 把坐标和宽高生成一个 rectangle 数据
     */

    function locationToRect( _x, _y, _width, _height ){
        var _offset, _r = {
            'left': _x
            , 'top': _y
            , 'right': _x + _width
            , 'bottom': _y + _height 
        };
        return _r;
    }
    /**
     * 把 rectangle 数据 转换为 坐标数据
     */

    function rectToPoint( _rect ){
        var _r = {
            'x': _rect.left + ( _rect.right - _rect.left ) / 2
            , 'y': _rect.top + ( _rect.bottom - _rect.top ) / 2
        };
        return _r;
    }
    /**
     * 计算两个坐标点之间的距离
     */

    function pointDistance( _p1, _p2 ){
        var _dx = _p2.x - _p1.x
            , _dy = _p2.y - _p1.y
            , _dist = Math.sqrt( _dx * _dx + _dy * _dy );
            ;
        return _dist;
    }

    function pointToRect( _p1, _p2 ){
        var _r = { 'x': 0'y': 0'width': 0'height': 0 };

        if( _p1 && _p2 ){
            if( _p1.x < _p2.x ){
                _r.x = _p1.x;
                _r.width = _p2.x - _p1.x;
            }else{
                _r.x = _p2.x;
                _r.width = _p1.x - _p2.x;
            }

            if( _p1.y < _p2.y ){
                _r.y = _p1.y;
                _r.height = _p2.y - _p1.y;
            }else{
                _r.y = _p2.y;
                _r.height = _p1.y - _p2.y;
            }
            _r.left = _r.x;
            _r.top = _r.y;
        }

        return _r;
    }
    /**
     * 返回选择器的 矩形 位置
     */

    function selectorToRectangle( _selector ){
        _selector = $( _selector );
        var _offset = _selector.offset()
            , _w = _selector.prop('offsetWidth')
            , _h = _selector.prop('offsetHeight');

        return {
            x: _offset.left
            , y: _offset.top
            , width: _w
            , height: _h
        }
    }
@suches
http://btbtd.com/mods/code/item.php?uid=1&item=4801

发表于 @ 2014-08-07 19:30:16

该文章暂时没有回复
评论内容:
昵称:
验证码: