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

SVGLoader: Clean up.

上级 60751a3e
...@@ -221,7 +221,6 @@ THREE.SVGLoader.prototype = { ...@@ -221,7 +221,6 @@ THREE.SVGLoader.prototype = {
break; break;
case 'A': case 'A':
console.warn( command );
var numbers = parseFloats( data ); var numbers = parseFloats( data );
for ( var j = 0, jl = numbers.length; j < jl; j += 7 ) { for ( var j = 0, jl = numbers.length; j < jl; j += 7 ) {
var start = point.clone(); var start = point.clone();
...@@ -344,7 +343,6 @@ THREE.SVGLoader.prototype = { ...@@ -344,7 +343,6 @@ THREE.SVGLoader.prototype = {
break; break;
case 'a': case 'a':
console.warn( command );
var numbers = parseFloats( data ); var numbers = parseFloats( data );
for ( var j = 0, jl = numbers.length; j < jl; j += 7 ) { for ( var j = 0, jl = numbers.length; j < jl; j += 7 ) {
var start = point.clone(); var start = point.clone();
...@@ -409,13 +407,16 @@ THREE.SVGLoader.prototype = { ...@@ -409,13 +407,16 @@ THREE.SVGLoader.prototype = {
// Ensure radii are large enough // Ensure radii are large enough
var cr = x1ps / rxs + y1ps / rys; var cr = x1ps / rxs + y1ps / rys;
if ( cr > 1 ) { if ( cr > 1 ) {
// scale up rx,ry equally so cr == 1 // scale up rx,ry equally so cr == 1
var s = Math.sqrt( cr ); var s = Math.sqrt( cr );
rx = s * rx; rx = s * rx;
ry = s * ry; ry = s * ry;
rxs = rx * rx; rxs = rx * rx;
rys = ry * ry; rys = ry * ry;
} }
var dq = ( rxs * y1ps + rys * x1ps ); var dq = ( rxs * y1ps + rys * x1ps );
...@@ -431,19 +432,20 @@ THREE.SVGLoader.prototype = { ...@@ -431,19 +432,20 @@ THREE.SVGLoader.prototype = {
// Step 4: Compute θ1 and Δθ // Step 4: Compute θ1 and Δθ
var theta = svgAngle( 1, 0, ( x1p - cxp ) / rx, ( y1p - cyp ) / ry ); var theta = svgAngle( 1, 0, ( x1p - cxp ) / rx, ( y1p - cyp ) / ry );
var delta = svgAngle( ( x1p - cxp ) / rx, ( y1p - cyp ) / ry, ( - x1p - cxp ) / rx, ( - y1p - cyp ) / ry ); var delta = svgAngle( ( x1p - cxp ) / rx, ( y1p - cyp ) / ry, ( - x1p - cxp ) / rx, ( - y1p - cyp ) / ry ) % ( Math.PI * 2 );
delta = delta % ( Math.PI * 2 );
path.currentPath.absellipse( cx, cy, rx, ry, theta, theta + delta, sweep_flag === 0, x_axis_rotation ); path.currentPath.absellipse( cx, cy, rx, ry, theta, theta + delta, sweep_flag === 0, x_axis_rotation );
} }
function svgAngle( ux, uy, vx, vy ) { function svgAngle( ux, uy, vx, vy ) {
var dot = ux * vx + uy * vy; var dot = ux * vx + uy * vy;
var len = Math.sqrt( ux * ux + uy * uy ) * Math.sqrt( vx * vx + vy * vy ); var len = Math.sqrt( ux * ux + uy * uy ) * Math.sqrt( vx * vx + vy * vy );
var ang = Math.acos( Math.max( -1, Math.min( 1, dot / len ) ) ); //floating point precision, slightly over values appear var ang = Math.acos( Math.max( -1, Math.min( 1, dot / len ) ) ); // floating point precision, slightly over values appear
if ( ( ux * vy - uy * vx ) < 0 ) ang = - ang; if ( ( ux * vy - uy * vx ) < 0 ) ang = - ang;
return ang; return ang;
} }
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册