three.js 源碼注釋(二十六)Core/BufferAttribute.js
來源:程序員人生 發布時間:2014-12-23 08:37:54 閱讀次數:3328次
商域無疆 (http://blog.csdn.net/omni360/)
本文遵守“署名-非商業用處-保持1致”創作公用協議
轉載請保存此句:商域無疆 - 本博客專注于 敏捷開發及移動和物聯裝備研究:數據可視化、GOLANG、Html5、WEBGL、THREE.JS,否則,出自本博客的文章謝絕轉載或再轉載,謝謝合作。
俺也是剛開始學,好多地兒肯定不對還請見諒.
以下代碼是THREE.JS 源碼文件中Core/BufferAttribute.js文件的注釋.
更多更新在 : https://github.com/omni360/three.js.sourcecode
/**
* @author mrdoob / http://mrdoob.com/
*/
/*
///BufferAttribute類用來存儲于bufferGeometry相干聯的屬性數據,更多細節可以參考官方的樣例http://threejs.org/
/// 這個類用來存儲內置屬性例如頂點位置,法線,色彩,等,但也能夠用于存儲bufferGeometry對象的自定義屬性.
///BufferAttribute對象的功能函數采取定義構造的函數原型對象來實現.
/// TODO:增加1個基類setAttr(index,item,itemSize)根據跟多不同的屬性相長度設置屬性
///
*/
///<summary>BufferAttribute</summary>
///<param name ="array" type="Array">屬性數組</param>
///<param name ="itemSize" type="number">屬性相長度</param>
///<returns type="BufferAttribute">返回新的屬性數組</returns>
THREE.BufferAttribute = function ( array, itemSize ) {
this.array = array; //BufferAttribute的array屬性
this.itemSize = itemSize; //BufferAttribute的itemSize屬性
};
/****************************************
****下面是BufferAttribute對象提供的功能函數.
****************************************/
THREE.BufferAttribute.prototype = {
constructor: THREE.BufferAttribute, //構造器,返回對創建此對象BufferAttribute函數的援用.
/*
///get length 方法用來獲得BufferAttribute的數組長度
///NOTE: get length()BufferAttribute.prototype.length(),這類用法在除ie閱讀器之外的閱讀器上可使用.
*/
///<summary>get length</summary>
///<returns type="number">返回BufferAttribute的數組長度</returns>
get length () {
return this.array.length; //返回BufferAttribute的數組長度
},
/*
///set方法用來重新設置BufferAttribute的屬性數組
*/
///<summary>set</summary>
///<param name ="value" type="Array">屬性數組</param>
///<returns type="BufferAttribute">返回新的BufferAttribute屬性對象</returns>
set: function ( value ) {
this.array.set( value );
return this; //返回新的BufferAttribute屬性對象
},
/*
///setX方法用來重新設置含有3個屬性相的BufferAttribute屬性數組的第1個份量
/// NOTE:setX方法中,屬性數組的長度是屬性相的長度乘以屬性的個數.比如要寄存100個點的坐標,坐標有3個屬性相,那末屬性數組的長度是300,如果想改變第30個點的x坐標就將index設為30
*/
///<summary>setX</summary>
///<param name ="index" type="Number">屬性數組的索引</param>
///<param name ="x" type="Number">屬性數組的第1個份量</param>
///<returns type="BufferAttribute">返回新的BufferAttribute屬性對象</returns>
setX: function ( index, x ) {
this.array[ index * this.itemSize ] = x;
return this; //返回新的BufferAttribute屬性對象
},
/*
///setY方法用來重新設置含有3個屬性相的BufferAttribute屬性數組的第2個份量
/// NOTE:setY方法中,屬性數組的長度是屬性相的長度乘以屬性的個數.比如要寄存100個點的坐標,坐標有3個屬性相,那末屬性數組的長度是300,如果想改變第30個點的Y坐標就將index設為30
*/
///<summary>setY</summary>
///<param name ="index" type="Number">屬性數組的索引</param>
///<param name ="y" type="Number">屬性數組的第1個份量</param>
///<returns type="BufferAttribute">返回新的BufferAttribute屬性對象</returns>
setY: function ( index, y ) {
this.array[ index * this.itemSize + 1 ] = y;
return this; //返回新的BufferAttribute屬性對象
},
/*
///setZ方法用來重新設置含有3個屬性相的BufferAttribute屬性數組的第3個份量
/// NOTE:setY方法中,屬性數組的長度是屬性相的長度乘以屬性的個數.比如要寄存100個點的坐標,坐標有3個屬性相,那末屬性數組的長度是300,如果想改變第30個點的Z坐標就將index設為30
*/
///<summary>setZ</summary>
///<param name ="index" type="Number">屬性數組的索引</param>
///<param name ="z" type="Number">屬性數組的第1個份量</param>
///<returns type="BufferAttribute">返回新的BufferAttribute屬性對象</returns>
setZ: function ( index, z ) {
this.array[ index * this.itemSize + 2 ] = z;
return this; //返回新的BufferAttribute屬性對象
},
/*
///setXY方法用來重新設置含有3個屬性相的BufferAttribute屬性數組的第1個和第2個份量
/// NOTE:setXY方法中,屬性數組的長度是屬性相的長度乘以屬性的個數.比如要寄存100個點的坐標,坐標有3個屬性相,那末屬性數組的長度是300,如果想改變第30個點的x,y坐標就將index設為30
*/
///<summary>setXY</summary>
///<param name ="index" type="Number">屬性數組的索引</param>
///<param name ="x" type="Number">屬性數組的第1個份量</param>
///<param name ="y" type="Number">屬性數組的第2個份量</param>
///<returns type="BufferAttribute">返回新的BufferAttribute屬性對象</returns>
setXY: function ( index, x, y ) {
index *= this.itemSize;
this.array[ index ] = x;
this.array[ index + 1 ] = y;
return this; //返回新的BufferAttribute屬性對象
},
/*
///setXYZ方法用來重新設置含有3個屬性相的BufferAttribute屬性數組的第1個,第2個和第3個份量
/// NOTE:setXY方法中,屬性數組的長度是屬性相的長度乘以屬性的個數.比如要寄存100個點的坐標,坐標有3個屬性相,那末屬性數組的長度是300,如果想改變第30個點的x,y,z坐標就將index設為30
*/
///<summary>setXYZ</summary>
///<param name ="index" type="Number">屬性數組的索引</param>
///<param name ="x" type="Number">屬性數組的第1個份量</param>
///<param name ="y" type="Number">屬性數組的第2個份量</param>
///<param name ="z" type="Number">屬性數組的第3個份量</param>
///<returns type="BufferAttribute">返回新的BufferAttribute屬性對象</returns>
setXYZ: function ( index, x, y, z ) {
index *= this.itemSize;
this.array[ index ] = x;
this.array[ index + 1 ] = y;
this.array[ index + 2 ] = z;
return this; //返回新的BufferAttribute屬性對象
},
/*
///setXYZW方法用來重新設置含有3個屬性相的BufferAttribute屬性數組的第1個,第2個和第3個,第4個份量
/// NOTE:setXYZW方法中,屬性數組的長度是屬性相的長度乘以屬性的個數.比如要寄存100個點的坐標,坐標有4個屬性相,那末屬性數組的長度是400,如果想改變第30個點的x,y,z,w坐標就將index設為30
*/
///<summary>setXYZW</summary>
///<param name ="index" type="Number">屬性數組的索引</param>
///<param name ="x" type="Number">屬性數組的第1個份量</param>
///<param name ="y" type="Number">屬性數組的第2個份量</param>
///<param name ="z" type="Number">屬性數組的第3個份量</param>
///<param name ="w" type="Number">屬性數組的第4個份量</param>
///<returns type="BufferAttribute">返回新的BufferAttribute屬性對象</returns>
setXYZW: function ( index, x, y, z, w ) {
index *= this.itemSize;
this.array[ index ] = x;
this.array[ index + 1 ] = y;
this.array[ index + 2 ] = z;
this.array[ index + 3 ] = w;
return this; //返回新的BufferAttribute屬性對象
}
};
/**********************************************************************************
****下面這些方法是定義不同數據類型的屬性,已在新版本中刪除,這里保存是為了向后兼容.
***********************************************************************************/
THREE.Int8Attribute = function ( data, itemSize ) {
console.warn( 'THREE.Int8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' );
return new THREE.BufferAttribute( data, itemSize );
};
THREE.Uint8Attribute = function ( data, itemSize ) {
console.warn( 'THREE.Uint8Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' );
return new THREE.BufferAttribute( data, itemSize );
};
THREE.Uint8ClampedAttribute = function ( data, itemSize ) {
console.warn( 'THREE.Uint8ClampedAttribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' );
return new THREE.BufferAttribute( data, itemSize );
};
THREE.Int16Attribute = function ( data, itemSize ) {
console.warn( 'THREE.Int16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' );
return new THREE.BufferAttribute( data, itemSize );
};
THREE.Uint16Attribute = function ( data, itemSize ) {
console.warn( 'THREE.Uint16Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' );
return new THREE.BufferAttribute( data, itemSize );
};
THREE.Int32Attribute = function ( data, itemSize ) {
console.warn( 'THREE.Int32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' );
return new THREE.BufferAttribute( data, itemSize );
};
THREE.Uint32Attribute = function ( data, itemSize ) {
console.warn( 'THREE.Uint32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' );
return new THREE.BufferAttribute( data, itemSize );
};
THREE.Float32Attribute = function ( data, itemSize ) {
console.warn( 'THREE.Float32Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' );
return new THREE.BufferAttribute( data, itemSize );
};
THREE.Float64Attribute = function ( data, itemSize ) {
console.warn( 'THREE.Float64Attribute has been removed. Use THREE.BufferAttribute( array, itemSize ) instead.' );
return new THREE.BufferAttribute( data, itemSize );
};
商域無疆 (http://blog.csdn.net/omni360/)
本文遵守“署名-非商業用處-保持1致”創作公用協議
轉載請保存此句:商域無疆 - 本博客專注于 敏捷開發及移動和物聯裝備研究:數據可視化、GOLANG、Html5、WEBGL、THREE.JS,否則,出自本博客的文章謝絕轉載或再轉載,謝謝合作。
以下代碼是THREE.JS 源碼文件中Core/BufferAttribute.js文件的注釋.
更多更新在 : https://github.com/omni360/three.js.sourcecode
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈