mirror of
https://github.com/wahyd4/three.js.git
synced 2026-08-15 16:05:57 +10:00
I don't remember when was the last time I used them. Current Web Developer Tools do this already for you. Color::updateRGBA ⟶ Color::updateRGB
201 lines
4.1 KiB
JavaScript
201 lines
4.1 KiB
JavaScript
/**
|
|
* @author mr.doob / http://mrdoob.com/
|
|
*/
|
|
|
|
THREE.Rectangle = function () {
|
|
|
|
var _left, _top, _right, _bottom,
|
|
_width, _height, _isEmpty = true;
|
|
|
|
function resize() {
|
|
|
|
_width = _right - _left;
|
|
_height = _bottom - _top;
|
|
|
|
}
|
|
|
|
this.getX = function () {
|
|
|
|
return _left;
|
|
|
|
};
|
|
|
|
this.getY = function () {
|
|
|
|
return _top;
|
|
|
|
};
|
|
|
|
this.getWidth = function () {
|
|
|
|
return _width;
|
|
|
|
};
|
|
|
|
this.getHeight = function () {
|
|
|
|
return _height;
|
|
|
|
};
|
|
|
|
this.getLeft = function() {
|
|
|
|
return _left;
|
|
|
|
};
|
|
|
|
this.getTop = function() {
|
|
|
|
return _top;
|
|
|
|
};
|
|
|
|
this.getRight = function() {
|
|
|
|
return _right;
|
|
|
|
};
|
|
|
|
this.getBottom = function() {
|
|
|
|
return _bottom;
|
|
|
|
};
|
|
|
|
this.set = function ( left, top, right, bottom ) {
|
|
|
|
_isEmpty = false;
|
|
|
|
_left = left; _top = top;
|
|
_right = right; _bottom = bottom;
|
|
|
|
resize();
|
|
|
|
};
|
|
|
|
this.addPoint = function ( x, y ) {
|
|
|
|
if ( _isEmpty ) {
|
|
|
|
_isEmpty = false;
|
|
_left = x; _top = y;
|
|
_right = x; _bottom = y;
|
|
|
|
resize();
|
|
|
|
} else {
|
|
|
|
_left = _left < x ? _left : x; // Math.min( _left, x );
|
|
_top = _top < y ? _top : y; // Math.min( _top, y );
|
|
_right = _right > x ? _right : x; // Math.max( _right, x );
|
|
_bottom = _bottom > y ? _bottom : y; // Math.max( _bottom, y );
|
|
|
|
resize();
|
|
}
|
|
|
|
};
|
|
|
|
this.add3Points = function ( x1, y1, x2, y2, x3, y3 ) {
|
|
|
|
if (_isEmpty) {
|
|
|
|
_isEmpty = false;
|
|
_left = x1 < x2 ? ( x1 < x3 ? x1 : x3 ) : ( x2 < x3 ? x2 : x3 );
|
|
_top = y1 < y2 ? ( y1 < y3 ? y1 : y3 ) : ( y2 < y3 ? y2 : y3 );
|
|
_right = x1 > x2 ? ( x1 > x3 ? x1 : x3 ) : ( x2 > x3 ? x2 : x3 );
|
|
_bottom = y1 > y2 ? ( y1 > y3 ? y1 : y3 ) : ( y2 > y3 ? y2 : y3 );
|
|
|
|
resize();
|
|
|
|
} else {
|
|
|
|
_left = x1 < x2 ? ( x1 < x3 ? ( x1 < _left ? x1 : _left ) : ( x3 < _left ? x3 : _left ) ) : ( x2 < x3 ? ( x2 < _left ? x2 : _left ) : ( x3 < _left ? x3 : _left ) );
|
|
_top = y1 < y2 ? ( y1 < y3 ? ( y1 < _top ? y1 : _top ) : ( y3 < _top ? y3 : _top ) ) : ( y2 < y3 ? ( y2 < _top ? y2 : _top ) : ( y3 < _top ? y3 : _top ) );
|
|
_right = x1 > x2 ? ( x1 > x3 ? ( x1 > _right ? x1 : _right ) : ( x3 > _right ? x3 : _right ) ) : ( x2 > x3 ? ( x2 > _right ? x2 : _right ) : ( x3 > _right ? x3 : _right ) );
|
|
_bottom = y1 > y2 ? ( y1 > y3 ? ( y1 > _bottom ? y1 : _bottom ) : ( y3 > _bottom ? y3 : _bottom ) ) : ( y2 > y3 ? ( y2 > _bottom ? y2 : _bottom ) : ( y3 > _bottom ? y3 : _bottom ) );
|
|
|
|
resize();
|
|
|
|
};
|
|
|
|
};
|
|
|
|
this.addRectangle = function ( r ) {
|
|
|
|
if ( _isEmpty ) {
|
|
|
|
_isEmpty = false;
|
|
_left = r.getLeft(); _top = r.getTop();
|
|
_right = r.getRight(); _bottom = r.getBottom();
|
|
|
|
resize();
|
|
|
|
} else {
|
|
|
|
_left = _left < r.getLeft() ? _left : r.getLeft(); // Math.min(_left, r.getLeft() );
|
|
_top = _top < r.getTop() ? _top : r.getTop(); // Math.min(_top, r.getTop() );
|
|
_right = _right > r.getRight() ? _right : r.getRight(); // Math.max(_right, r.getRight() );
|
|
_bottom = _bottom > r.getBottom() ? _bottom : r.getBottom(); // Math.max(_bottom, r.getBottom() );
|
|
|
|
resize();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
this.inflate = function ( v ) {
|
|
|
|
_left -= v; _top -= v;
|
|
_right += v; _bottom += v;
|
|
|
|
resize();
|
|
|
|
};
|
|
|
|
this.minSelf = function ( r ) {
|
|
|
|
_left = _left > r.getLeft() ? _left : r.getLeft(); // Math.max( _left, r.getLeft() );
|
|
_top = _top > r.getTop() ? _top : r.getTop(); // Math.max( _top, r.getTop() );
|
|
_right = _right < r.getRight() ? _right : r.getRight(); // Math.min( _right, r.getRight() );
|
|
_bottom = _bottom < r.getBottom() ? _bottom : r.getBottom(); // Math.min( _bottom, r.getBottom() );
|
|
|
|
resize();
|
|
|
|
};
|
|
|
|
/*
|
|
this.contains = function ( x, y ) {
|
|
|
|
return x > _left && x < _right && y > _top && y < _bottom;
|
|
|
|
};
|
|
*/
|
|
|
|
this.instersects = function ( r ) {
|
|
|
|
// return this.contains( r.getLeft(), r.getTop() ) || this.contains( r.getRight(), r.getTop() ) || this.contains( r.getLeft(), r.getBottom() ) || this.contains( r.getRight(), r.getBottom() );
|
|
|
|
return Math.min( _right, r.getRight() ) - Math.max( _left, r.getLeft() ) >= 0 &&
|
|
Math.min( _bottom, r.getBottom() ) - Math.max( _top, r.getTop() ) >= 0;
|
|
|
|
};
|
|
|
|
this.empty = function () {
|
|
|
|
_isEmpty = true;
|
|
|
|
_left = 0; _top = 0;
|
|
_right = 0; _bottom = 0;
|
|
|
|
resize();
|
|
|
|
};
|
|
|
|
this.isEmpty = function () {
|
|
|
|
return _isEmpty;
|
|
|
|
};
|
|
|
|
};
|