1. 程式人生 > >three.js 原始碼註釋(八十四)extras/geometries/ParametricGeometry.js

three.js 原始碼註釋(八十四)extras/geometries/ParametricGeometry.js


俺也是剛開始學,好多地兒肯定不對還請見諒.

以下程式碼是THREE.JS 原始碼檔案中extras/geometries/ParametricGeometry.js檔案的註釋.


/**
 * @author zz85 / https://github.com/zz85
 * Parametric Surfaces Geometry
 * based on the brilliant article by @prideout http://prideout.net/blog/?p=44
 *
 * new THREE.ParametricGeometry( parametricFunction, uSegments, ySegements );
 *
 */
/*
///ParametricGeometry用來在三維空間內通過引數func的定義,生成一個幾何體.有了這個物件,各種你想要的集合體,發揮你的數學天賦吧.
///
///	用法: 
/// 	  var func = function(u,v){
///				var point = new THREE.Vector3();
///				point.x = 100 + Math.cos(u);
///				point.y = 100 + Math.sin(v);
///				return point;
///		  };
///		  var geometry = new THREE.ParametricGeometry(func,8,8);	
/// 	  var material = new THREE.MeshBasicMaterial({color: 0x00ff00});
/// 	  var param = new THREE.Mesh(geometry,material);
/// 	  scene.add(param);
*/
///<summary>ParametricGeometry</summary>
///<param name ="func" type="funciton">功能函式,必須接受引數u,v,返回Vector3</param>
///<param name ="slices" type="int">u方向上的細分線段數</param>
///<param name ="stacks" type="int">v方向上的細分線段數</param>
THREE.ParametricGeometry = function ( func, slices, stacks ) {

	THREE.Geometry.call( this );	//呼叫Geometry物件的call方法,將原本屬於Geometry的方法交給當前物件ParametricGeometry來使用.

	var verts = this.vertices;
	var faces = this.faces;
	var uvs = this.faceVertexUvs[ 0 ];

	var i, il, j, p;
	var u, v;

	var stackCount = stacks + 1;
	var sliceCount = slices + 1;
	//計算頂點資料,壓入vertices陣列.
	for ( i = 0; i <= stacks; i ++ ) {

		v = i / stacks;

		for ( j = 0; j <= slices; j ++ ) {

			u = j / slices;

			p = func( u, v );
			verts.push( p );

		}
	}

	var a, b, c, d;
	var uva, uvb, uvc, uvd;
	//計算三角面,以及貼圖uv.
	for ( i = 0; i < stacks; i ++ ) {

		for ( j = 0; j < slices; j ++ ) {

			a = i * sliceCount + j;
			b = i * sliceCount + j + 1;
			c = (i + 1) * sliceCount + j + 1;
			d = (i + 1) * sliceCount + j;

			uva = new THREE.Vector2( j / slices, i / stacks );
			uvb = new THREE.Vector2( ( j + 1 ) / slices, i / stacks );
			uvc = new THREE.Vector2( ( j + 1 ) / slices, ( i + 1 ) / stacks );
			uvd = new THREE.Vector2( j / slices, ( i + 1 ) / stacks );

			faces.push( new THREE.Face3( a, b, d ) );
			uvs.push( [ uva, uvb, uvd ] );

			faces.push( new THREE.Face3( b, c, d ) );
			uvs.push( [ uvb.clone(), uvc, uvd.clone() ] );

		}

	}

	// console.log(this);

	// magic bullet
	// var diff = this.mergeVertices();
	// console.log('removed ', diff, ' vertices by merging');

	this.computeFaceNormals();	//計算面的法線
	this.computeVertexNormals();	//計算頂點法線

};
/*************************************************
****下面是ParametricGeometry物件的方法屬性定義,繼承自Geometry物件.
**************************************************/
THREE.ParametricGeometry.prototype = Object.create( THREE.Geometry.prototype );



以下程式碼是THREE.JS 原始碼檔案中extras/geometries/ParametricGeometry.js檔案的註釋.

相關推薦

three.js 原始碼註釋extras/geometries/ParametricGeometry.js

俺也是剛開始學,好多地兒肯定不對還請見諒. 以下程式碼是THREE.JS 原始碼檔案中extras/geometries/ParametricGeometry.js檔案的註釋. /** * @author zz85 / https://github.com/zz8

three.js 原始碼註釋extras/core/Shape.js

俺也是剛開始學,好多地兒肯定不對還請見諒. 以下程式碼是THREE.JS 原始碼檔案中extras/core/Shape.js檔案的註釋. /** * @author zz85 / http://www.lab4games.net/zz85/blog * Def

three.js 原始碼註釋Texture/Texture.js

俺也是剛開始學,好多地兒肯定不對還請見諒. 以下程式碼是THREE.JS 原始碼檔案中Texture/Texture.js檔案的註釋. /** * @author mrdoob / http://mrdoob.com/ * @author alteredq /

three.js 原始碼註釋objects/Mesh.js

俺也是剛開始學,好多地兒肯定不對還請見諒. 以下程式碼是THREE.JS 原始碼檔案中objects/Mesh.js檔案的註釋. /** * @author mrdoob / http://mrdoob.com/ * @author alteredq / htt

three.js 原始碼註釋Core/Object3D.js

俺也是剛開始學,好多地兒肯定不對還請見諒. 以下程式碼是THREE.JS 原始碼檔案中Core/Object3D.js檔案的註釋. /** * @author mrdoob / http://mrdoob.com/ * @author mikael emting

three.js 原始碼註釋Material /MeshDepthMaterial.js

俺也是剛開始學,好多地兒肯定不對還請見諒. 以下程式碼是THREE.JS 原始碼檔案中materials/MeshDepthMaterial.js檔案的註釋. /** * @author mrdoob / http://mrdoob.com/ * @author

three.js 原始碼註釋Core/BufferGeometry.js

俺也是剛開始學,好多地兒肯定不對還請見諒. 以下程式碼是THREE.JS 原始碼檔案中Core/BufferGeometry.js檔案的註釋. /** * @author alteredq / http://alteredqualia.com/ */ /* //

three.js 原始碼註釋extras/geometries/IcosahedronGeometry.js

俺也是剛開始學,好多地兒肯定不對還請見諒. 以下程式碼是THREE.JS 原始碼檔案中extras/geometries/IcosahedronGeometry.js檔案的註釋. /** * @author timothypratley / https://git

three.js 原始碼註釋Material /MeshPhongMaterial.js

俺也是剛開始學,好多地兒肯定不對還請見諒. 以下程式碼是THREE.JS 原始碼檔案中materials/MeshPhongMaterial.js檔案的註釋. /** * @author mrdoob / http://mrdoob.com/ * @author

three.js 原始碼註釋objects/Line.js

俺也是剛開始學,好多地兒肯定不對還請見諒. 以下程式碼是THREE.JS 原始碼檔案中objects/Line.js檔案的註釋. /** * @author mrdoob / http://mrdoob.com/ */ /* ///Line物件,建立一條線,或者

前端學習 DOM-剪下板Dom

Selection 是一個全域性物件,通過window.getSelection()獲得,代表當前使用者在網頁上選擇的文字範圍或游標所在的位置 方法 Selection.toString() 獲得選中文字的字串 window.getSelection().toString()

Redis原始碼分析--- redis.h服務端的實現分析1

       上次剛剛分析過了客戶端的結構體分析,思路比較簡答,清晰,最後學習的是服務端的實現,服務端在Redis可是重中之重,裡面基本上囊括了之前模組中涉及到的所有知識點,從redis的標頭檔案就可以看出了,redis.h程式碼量就已經破1000+行了,而且都還只是一些變

Android開發筆記使用Properties讀寫屬性值

Properties概述 Java中的配置檔案常為.properties檔案,而Properties類便是讀寫此類檔案的工具。屬性檔案有兩種格式,一種是文字格式,其內容是“鍵=值”的形式,文字註釋資訊可以用"#"來註釋。另一種是XML格式,鍵值對遵循XML規範,Androi

three.js 原始碼註釋Material /MeshNormalMaterial.js

俺也是剛開始學,好多地兒肯定不對還請見諒. 以下程式碼是THREE.JS 原始碼檔案中Material/MeshNormalMaterial.js檔案的註釋. /** * @author mrdoob / http://mrdoob.com/ * * para

three.js 原始碼註釋Math/Sphere.js

俺也是剛開始學,好多地兒肯定不對還請見諒. 以下程式碼是THREE.JS 原始碼檔案中Math/Sphere.js檔案的註釋. // File:src/math/Sphere.js /** * @author bhouston / http://exocorte

three.js 原始碼註釋Light/AreaLight.js

俺也是剛開始學,好多地兒肯定不對還請見諒. 以下程式碼是THREE.JS 原始碼檔案中Light/AreaLight.js檔案的註釋. /** * @author MPanknin / http://www.redplant.de/ * @author alte

three.js 原始碼註釋Math/Vector3.js

以下程式碼是THREE.JS 原始碼檔案中Math/Vector3.js檔案的註釋. // File:src/math/Vector3.js /** * @author mrdoob / http://mrdoob.com/ * @author *kil

three.js 原始碼註釋Math/Vector2.js

以下程式碼是THREE.JS 原始碼檔案中Math/Vector2.js檔案的註釋. // File:src/math/Vector2.js /** * @author mrdoob / http://mrdoob.com/ * @author philog

Java程式設計師從笨鳥到菜鳥之細談Spring深入理解spring+struts2整合原始碼

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Java程式設計師從笨鳥到菜鳥之細談Spring深入原始碼分析Spring之HibernateTemplate

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!