提交 ff67978e 编写于 作者: M Mr.doob

Projector: Reusing point arrays.

上级 8b6dd1a4
......@@ -6235,6 +6235,8 @@ THREE.Projector = function() {
_clipBox = new THREE.Box3( new THREE.Vector3( -1, -1, -1 ), new THREE.Vector3( 1, 1, 1 ) ),
_boundingBox = new THREE.Box3(),
_points3 = new Array( 3 ),
_points4 = new Array( 4 ),
_viewMatrix = new THREE.Matrix4(),
_viewProjectionMatrix = new THREE.Matrix4(),
......@@ -6475,8 +6477,12 @@ THREE.Projector = function() {
v2 = _vertexPool[ face.b ];
v3 = _vertexPool[ face.c ];
_points3[ 0 ] = v1.positionScreen;
_points3[ 1 ] = v2.positionScreen;
_points3[ 2 ] = v3.positionScreen;
if ( v1.visible === true || v2.visible === true || v3.visible === true ||
_clipBox.isIntersectionBox( _boundingBox.setFromPoints( [ v1.positionScreen, v2.positionScreen, v3.positionScreen ] ) ) ) {
_clipBox.isIntersectionBox( _boundingBox.setFromPoints( _points3 ) ) ) {
visible = ( ( v3.positionScreen.x - v1.positionScreen.x ) * ( v2.positionScreen.y - v1.positionScreen.y ) -
( v3.positionScreen.y - v1.positionScreen.y ) * ( v2.positionScreen.x - v1.positionScreen.x ) ) < 0;
......@@ -6508,8 +6514,13 @@ THREE.Projector = function() {
v3 = _vertexPool[ face.c ];
v4 = _vertexPool[ face.d ];
_points4[ 0 ] = v1.positionScreen;
_points4[ 1 ] = v2.positionScreen;
_points4[ 2 ] = v3.positionScreen;
_points4[ 3 ] = v4.positionScreen;
if ( v1.visible === true || v2.visible === true || v3.visible === true || v4.visible === true ||
_clipBox.isIntersectionBox( _boundingBox.setFromPoints( [ v1.positionScreen, v2.positionScreen, v3.positionScreen, v4.positionScreen ] ) ) ) {
_clipBox.isIntersectionBox( _boundingBox.setFromPoints( _points4 ) ) ) {
visible = ( v4.positionScreen.x - v1.positionScreen.x ) * ( v2.positionScreen.y - v1.positionScreen.y ) -
( v4.positionScreen.y - v1.positionScreen.y ) * ( v2.positionScreen.x - v1.positionScreen.x ) < 0 ||
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
......@@ -20,6 +20,8 @@ THREE.Projector = function() {
_clipBox = new THREE.Box3( new THREE.Vector3( -1, -1, -1 ), new THREE.Vector3( 1, 1, 1 ) ),
_boundingBox = new THREE.Box3(),
_points3 = new Array( 3 ),
_points4 = new Array( 4 ),
_viewMatrix = new THREE.Matrix4(),
_viewProjectionMatrix = new THREE.Matrix4(),
......@@ -260,8 +262,12 @@ THREE.Projector = function() {
v2 = _vertexPool[ face.b ];
v3 = _vertexPool[ face.c ];
_points3[ 0 ] = v1.positionScreen;
_points3[ 1 ] = v2.positionScreen;
_points3[ 2 ] = v3.positionScreen;
if ( v1.visible === true || v2.visible === true || v3.visible === true ||
_clipBox.isIntersectionBox( _boundingBox.setFromPoints( [ v1.positionScreen, v2.positionScreen, v3.positionScreen ] ) ) ) {
_clipBox.isIntersectionBox( _boundingBox.setFromPoints( _points3 ) ) ) {
visible = ( ( v3.positionScreen.x - v1.positionScreen.x ) * ( v2.positionScreen.y - v1.positionScreen.y ) -
( v3.positionScreen.y - v1.positionScreen.y ) * ( v2.positionScreen.x - v1.positionScreen.x ) ) < 0;
......@@ -293,8 +299,13 @@ THREE.Projector = function() {
v3 = _vertexPool[ face.c ];
v4 = _vertexPool[ face.d ];
_points4[ 0 ] = v1.positionScreen;
_points4[ 1 ] = v2.positionScreen;
_points4[ 2 ] = v3.positionScreen;
_points4[ 3 ] = v4.positionScreen;
if ( v1.visible === true || v2.visible === true || v3.visible === true || v4.visible === true ||
_clipBox.isIntersectionBox( _boundingBox.setFromPoints( [ v1.positionScreen, v2.positionScreen, v3.positionScreen, v4.positionScreen ] ) ) ) {
_clipBox.isIntersectionBox( _boundingBox.setFromPoints( _points4 ) ) ) {
visible = ( v4.positionScreen.x - v1.positionScreen.x ) * ( v2.positionScreen.y - v1.positionScreen.y ) -
( v4.positionScreen.y - v1.positionScreen.y ) * ( v2.positionScreen.x - v1.positionScreen.x ) < 0 ||
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册