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

Merge remote-tracking branch 'origin/dev' into dev

......@@ -2,6 +2,7 @@
* @author WestLangley / https://github.com/WestLangley
* @author zz85 / https://github.com/zz85
* @author miningold / https://github.com/miningold
* @author jonobr1 / https://github.com/jonobr1
*
* Modified from the TorusKnotGeometry by @oosmoxiecode
*
......@@ -11,7 +12,7 @@
* http://www.cs.indiana.edu/pub/techreports/TR425.pdf
*/
THREE.TubeGeometry = function ( path, segments, radius, radialSegments, closed ) {
THREE.TubeGeometry = function ( path, segments, radius, radialSegments, closed, taper ) {
THREE.Geometry.call( this );
......@@ -29,6 +30,7 @@ THREE.TubeGeometry = function ( path, segments, radius, radialSegments, closed )
radius = radius || 1;
radialSegments = radialSegments || 8;
closed = closed || false;
taper = taper || THREE.TubeGeometry.NoTaper;
var grid = [];
......@@ -42,7 +44,7 @@ THREE.TubeGeometry = function ( path, segments, radius, radialSegments, closed )
x, y, z,
tx, ty, tz,
u, v,
u, v, r,
cx, cy,
pos, pos2 = new THREE.Vector3(),
......@@ -81,12 +83,14 @@ THREE.TubeGeometry = function ( path, segments, radius, radialSegments, closed )
normal = normals[ i ];
binormal = binormals[ i ];
r = radius * taper(u);
for ( j = 0; j < radialSegments; j ++ ) {
v = j / radialSegments * 2 * Math.PI;
cx = - radius * Math.cos( v ); // TODO: Hack: Negating it so it faces outside.
cy = radius * Math.sin( v );
cx = - r * Math.cos( v ); // TODO: Hack: Negating it so it faces outside.
cy = r * Math.sin( v );
pos2.copy( pos );
pos2.x += cx * normal.x + cy * binormal.x;
......@@ -135,6 +139,13 @@ THREE.TubeGeometry = function ( path, segments, radius, radialSegments, closed )
THREE.TubeGeometry.prototype = Object.create( THREE.Geometry.prototype );
THREE.TubeGeometry.prototype.constructor = THREE.TubeGeometry;
THREE.TubeGeometry.NoTaper = function(u) {
return u;
};
THREE.TubeGeometry.SinusoidalTaper = function(u) {
return Math.sin(Math.PI * u);
};
// For computing of Frenet frames, exposing the tangents, normals and binormals the spline
THREE.TubeGeometry.FrenetFrames = function ( path, segments, closed ) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册