Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
dfa26949
T
three.js
项目概览
Ablesons
/
three.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
three.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
dfa26949
编写于
9月 04, 2013
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Updated builds.
上级
1de9bc91
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
11 addition
and
10 deletion
+11
-10
build/three.js
build/three.js
+9
-8
build/three.min.js
build/three.min.js
+2
-2
未找到文件。
build/three.js
浏览文件 @
dfa26949
...
...
@@ -28956,7 +28956,7 @@ THREE.Path.prototype.absellipse = function ( aX, aY, xRadius, yRadius,
aStartAngle, aEndAngle, aClockwise );
this.curves.push( curve );
var lastPoint = curve.getPoint(
aClockwise ? 1 : 0
);
var lastPoint = curve.getPoint(
1
);
args.push(lastPoint.x);
args.push(lastPoint.y);
...
...
@@ -30036,9 +30036,7 @@ THREE.SplineCurve.prototype.getPoint = function ( t ) {
* Ellipse curve
**************************************************************/
THREE.EllipseCurve = function ( aX, aY, xRadius, yRadius,
aStartAngle, aEndAngle,
aClockwise ) {
THREE.EllipseCurve = function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise ) {
this.aX = aX;
this.aY = aY;
...
...
@@ -30057,15 +30055,18 @@ THREE.EllipseCurve.prototype = Object.create( THREE.Curve.prototype );
THREE.EllipseCurve.prototype.getPoint = function ( t ) {
var angle;
var deltaAngle = this.aEndAngle - this.aStartAngle;
if (
!this.aClockwis
e ) {
if (
this.aClockwise === tru
e ) {
t = 1 - t
;
angle = this.aEndAngle + ( 1 - t ) * ( Math.PI * 2 - deltaAngle )
;
}
}
else {
var angle = this.aStartAngle + t * deltaAngle;
angle = this.aStartAngle + t * deltaAngle;
}
var tx = this.aX + this.xRadius * Math.cos( angle );
var ty = this.aY + this.yRadius * Math.sin( angle );
...
...
build/three.min.js
浏览文件 @
dfa26949
...
...
@@ -554,7 +554,7 @@ THREE.Path.prototype.moveTo=function(a,b){var c=Array.prototype.slice.call(argum
THREE
.
Path
.
prototype
.
quadraticCurveTo
=
function
(
a
,
b
,
c
,
d
){
var
e
=
Array
.
prototype
.
slice
.
call
(
arguments
),
f
=
this
.
actions
[
this
.
actions
.
length
-
1
].
args
,
f
=
new
THREE
.
QuadraticBezierCurve
(
new
THREE
.
Vector2
(
f
[
f
.
length
-
2
],
f
[
f
.
length
-
1
]),
new
THREE
.
Vector2
(
a
,
b
),
new
THREE
.
Vector2
(
c
,
d
));
this
.
curves
.
push
(
f
);
this
.
actions
.
push
({
action
:
THREE
.
PathActions
.
QUADRATIC_CURVE_TO
,
args
:
e
})};
THREE
.
Path
.
prototype
.
bezierCurveTo
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
var
h
=
Array
.
prototype
.
slice
.
call
(
arguments
),
g
=
this
.
actions
[
this
.
actions
.
length
-
1
].
args
,
g
=
new
THREE
.
CubicBezierCurve
(
new
THREE
.
Vector2
(
g
[
g
.
length
-
2
],
g
[
g
.
length
-
1
]),
new
THREE
.
Vector2
(
a
,
b
),
new
THREE
.
Vector2
(
c
,
d
),
new
THREE
.
Vector2
(
e
,
f
));
this
.
curves
.
push
(
g
);
this
.
actions
.
push
({
action
:
THREE
.
PathActions
.
BEZIER_CURVE_TO
,
args
:
h
})};
THREE
.
Path
.
prototype
.
splineThru
=
function
(
a
){
var
b
=
Array
.
prototype
.
slice
.
call
(
arguments
),
c
=
this
.
actions
[
this
.
actions
.
length
-
1
].
args
,
c
=
[
new
THREE
.
Vector2
(
c
[
c
.
length
-
2
],
c
[
c
.
length
-
1
])];
Array
.
prototype
.
push
.
apply
(
c
,
a
);
c
=
new
THREE
.
SplineCurve
(
c
);
this
.
curves
.
push
(
c
);
this
.
actions
.
push
({
action
:
THREE
.
PathActions
.
CSPLINE_THRU
,
args
:
b
})};
THREE
.
Path
.
prototype
.
arc
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
var
h
=
this
.
actions
[
this
.
actions
.
length
-
1
].
args
;
this
.
absarc
(
a
+
h
[
h
.
length
-
2
],
b
+
h
[
h
.
length
-
1
],
c
,
d
,
e
,
f
)};
THREE
.
Path
.
prototype
.
absarc
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
absellipse
(
a
,
b
,
c
,
c
,
d
,
e
,
f
)};
THREE
.
Path
.
prototype
.
ellipse
=
function
(
a
,
b
,
c
,
d
,
e
,
f
,
h
){
var
g
=
this
.
actions
[
this
.
actions
.
length
-
1
].
args
;
this
.
absellipse
(
a
+
g
[
g
.
length
-
2
],
b
+
g
[
g
.
length
-
1
],
c
,
d
,
e
,
f
,
h
)};
THREE
.
Path
.
prototype
.
absellipse
=
function
(
a
,
b
,
c
,
d
,
e
,
f
,
h
){
var
g
=
Array
.
prototype
.
slice
.
call
(
arguments
),
i
=
new
THREE
.
EllipseCurve
(
a
,
b
,
c
,
d
,
e
,
f
,
h
);
this
.
curves
.
push
(
i
);
i
=
i
.
getPoint
(
h
?
1
:
0
);
g
.
push
(
i
.
x
);
g
.
push
(
i
.
y
);
this
.
actions
.
push
({
action
:
THREE
.
PathActions
.
ELLIPSE
,
args
:
g
})};
THREE
.
Path
.
prototype
.
absarc
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
absellipse
(
a
,
b
,
c
,
c
,
d
,
e
,
f
)};
THREE
.
Path
.
prototype
.
ellipse
=
function
(
a
,
b
,
c
,
d
,
e
,
f
,
h
){
var
g
=
this
.
actions
[
this
.
actions
.
length
-
1
].
args
;
this
.
absellipse
(
a
+
g
[
g
.
length
-
2
],
b
+
g
[
g
.
length
-
1
],
c
,
d
,
e
,
f
,
h
)};
THREE
.
Path
.
prototype
.
absellipse
=
function
(
a
,
b
,
c
,
d
,
e
,
f
,
h
){
var
g
=
Array
.
prototype
.
slice
.
call
(
arguments
),
i
=
new
THREE
.
EllipseCurve
(
a
,
b
,
c
,
d
,
e
,
f
,
h
);
this
.
curves
.
push
(
i
);
i
=
i
.
getPoint
(
1
);
g
.
push
(
i
.
x
);
g
.
push
(
i
.
y
);
this
.
actions
.
push
({
action
:
THREE
.
PathActions
.
ELLIPSE
,
args
:
g
})};
THREE
.
Path
.
prototype
.
getSpacedPoints
=
function
(
a
){
a
||
(
a
=
40
);
for
(
var
b
=
[],
c
=
0
;
c
<
a
;
c
++
)
b
.
push
(
this
.
getPoint
(
c
/
a
));
return
b
};
THREE
.
Path
.
prototype
.
getPoints
=
function
(
a
,
b
){
if
(
this
.
useSpacedPoints
)
return
console
.
log
(
"
tata
"
),
this
.
getSpacedPoints
(
a
,
b
);
var
a
=
a
||
12
,
c
=
[],
d
,
e
,
f
,
h
,
g
,
i
,
k
,
m
,
l
,
n
,
s
,
t
,
p
;
d
=
0
;
for
(
e
=
this
.
actions
.
length
;
d
<
e
;
d
++
)
switch
(
f
=
this
.
actions
[
d
],
h
=
f
.
action
,
f
=
f
.
args
,
h
){
case
THREE
.
PathActions
.
MOVE_TO
:
c
.
push
(
new
THREE
.
Vector2
(
f
[
0
],
f
[
1
]));
break
;
case
THREE
.
PathActions
.
LINE_TO
:
c
.
push
(
new
THREE
.
Vector2
(
f
[
0
],
f
[
1
]));
break
;
case
THREE
.
PathActions
.
QUADRATIC_CURVE_TO
:
g
=
f
[
2
];
i
=
f
[
3
];
l
=
f
[
0
];
n
=
f
[
1
];
0
<
c
.
length
?(
h
=
c
[
c
.
length
-
1
],
s
=
h
.
x
,
t
=
h
.
y
):(
h
=
this
.
actions
[
d
-
1
].
args
,
s
=
h
[
h
.
length
-
2
],
t
=
h
[
h
.
length
-
1
]);
for
(
f
=
1
;
f
<=
a
;
f
++
)
p
=
f
/
a
,
h
=
THREE
.
Shape
.
Utils
.
b2
(
p
,
s
,
l
,
g
),
p
=
THREE
.
Shape
.
Utils
.
b2
(
p
,
t
,
n
,
i
),
c
.
push
(
new
THREE
.
Vector2
(
h
,
p
));
break
;
case
THREE
.
PathActions
.
BEZIER_CURVE_TO
:
g
=
f
[
4
];
i
=
f
[
5
];
l
=
f
[
0
];
n
=
f
[
1
];
k
=
f
[
2
];
m
=
f
[
3
];
0
<
c
.
length
?(
h
=
c
[
c
.
length
-
1
],
s
=
h
.
x
,
t
=
h
.
y
):(
h
=
this
.
actions
[
d
-
1
].
args
,
s
=
h
[
h
.
length
-
2
],
t
=
h
[
h
.
length
-
1
]);
for
(
f
=
1
;
f
<=
a
;
f
++
)
p
=
f
/
a
,
h
=
THREE
.
Shape
.
Utils
.
b3
(
p
,
s
,
l
,
k
,
g
),
p
=
THREE
.
Shape
.
Utils
.
b3
(
p
,
t
,
n
,
m
,
i
),
c
.
push
(
new
THREE
.
Vector2
(
h
,
p
));
break
;
case
THREE
.
PathActions
.
CSPLINE_THRU
:
h
=
...
...
@@ -570,7 +570,7 @@ isolatedPts:t,allpoints:d}},triangulateShape:function(a,b){var c=THREE.Shape.Uti
isClockWise
:
function
(
a
){
return
0
>
THREE
.
FontUtils
.
Triangulate
.
area
(
a
)},
b2p0
:
function
(
a
,
b
){
var
c
=
1
-
a
;
return
c
*
c
*
b
},
b2p1
:
function
(
a
,
b
){
return
2
*
(
1
-
a
)
*
a
*
b
},
b2p2
:
function
(
a
,
b
){
return
a
*
a
*
b
},
b2
:
function
(
a
,
b
,
c
,
d
){
return
this
.
b2p0
(
a
,
b
)
+
this
.
b2p1
(
a
,
c
)
+
this
.
b2p2
(
a
,
d
)},
b3p0
:
function
(
a
,
b
){
var
c
=
1
-
a
;
return
c
*
c
*
c
*
b
},
b3p1
:
function
(
a
,
b
){
var
c
=
1
-
a
;
return
3
*
c
*
c
*
a
*
b
},
b3p2
:
function
(
a
,
b
){
return
3
*
(
1
-
a
)
*
a
*
a
*
b
},
b3p3
:
function
(
a
,
b
){
return
a
*
a
*
a
*
b
},
b3
:
function
(
a
,
b
,
c
,
d
,
e
){
return
this
.
b3p0
(
a
,
b
)
+
this
.
b3p1
(
a
,
c
)
+
this
.
b3p2
(
a
,
d
)
+
this
.
b3p3
(
a
,
e
)}};
THREE
.
LineCurve
=
function
(
a
,
b
){
this
.
v1
=
a
;
this
.
v2
=
b
};
THREE
.
LineCurve
.
prototype
=
Object
.
create
(
THREE
.
Curve
.
prototype
);
THREE
.
LineCurve
.
prototype
.
getPoint
=
function
(
a
){
var
b
=
this
.
v2
.
clone
().
sub
(
this
.
v1
);
b
.
multiplyScalar
(
a
).
add
(
this
.
v1
);
return
b
};
THREE
.
LineCurve
.
prototype
.
getPointAt
=
function
(
a
){
return
this
.
getPoint
(
a
)};
THREE
.
LineCurve
.
prototype
.
getTangent
=
function
(){
return
this
.
v2
.
clone
().
sub
(
this
.
v1
).
normalize
()};
THREE
.
QuadraticBezierCurve
=
function
(
a
,
b
,
c
){
this
.
v0
=
a
;
this
.
v1
=
b
;
this
.
v2
=
c
};
THREE
.
QuadraticBezierCurve
.
prototype
=
Object
.
create
(
THREE
.
Curve
.
prototype
);
THREE
.
QuadraticBezierCurve
.
prototype
.
getPoint
=
function
(
a
){
var
b
;
b
=
THREE
.
Shape
.
Utils
.
b2
(
a
,
this
.
v0
.
x
,
this
.
v1
.
x
,
this
.
v2
.
x
);
a
=
THREE
.
Shape
.
Utils
.
b2
(
a
,
this
.
v0
.
y
,
this
.
v1
.
y
,
this
.
v2
.
y
);
return
new
THREE
.
Vector2
(
b
,
a
)};
THREE
.
QuadraticBezierCurve
.
prototype
.
getTangent
=
function
(
a
){
var
b
;
b
=
THREE
.
Curve
.
Utils
.
tangentQuadraticBezier
(
a
,
this
.
v0
.
x
,
this
.
v1
.
x
,
this
.
v2
.
x
);
a
=
THREE
.
Curve
.
Utils
.
tangentQuadraticBezier
(
a
,
this
.
v0
.
y
,
this
.
v1
.
y
,
this
.
v2
.
y
);
b
=
new
THREE
.
Vector2
(
b
,
a
);
b
.
normalize
();
return
b
};
THREE
.
CubicBezierCurve
=
function
(
a
,
b
,
c
,
d
){
this
.
v0
=
a
;
this
.
v1
=
b
;
this
.
v2
=
c
;
this
.
v3
=
d
};
THREE
.
CubicBezierCurve
.
prototype
=
Object
.
create
(
THREE
.
Curve
.
prototype
);
THREE
.
CubicBezierCurve
.
prototype
.
getPoint
=
function
(
a
){
var
b
;
b
=
THREE
.
Shape
.
Utils
.
b3
(
a
,
this
.
v0
.
x
,
this
.
v1
.
x
,
this
.
v2
.
x
,
this
.
v3
.
x
);
a
=
THREE
.
Shape
.
Utils
.
b3
(
a
,
this
.
v0
.
y
,
this
.
v1
.
y
,
this
.
v2
.
y
,
this
.
v3
.
y
);
return
new
THREE
.
Vector2
(
b
,
a
)};
THREE
.
CubicBezierCurve
.
prototype
.
getTangent
=
function
(
a
){
var
b
;
b
=
THREE
.
Curve
.
Utils
.
tangentCubicBezier
(
a
,
this
.
v0
.
x
,
this
.
v1
.
x
,
this
.
v2
.
x
,
this
.
v3
.
x
);
a
=
THREE
.
Curve
.
Utils
.
tangentCubicBezier
(
a
,
this
.
v0
.
y
,
this
.
v1
.
y
,
this
.
v2
.
y
,
this
.
v3
.
y
);
b
=
new
THREE
.
Vector2
(
b
,
a
);
b
.
normalize
();
return
b
};
THREE
.
SplineCurve
=
function
(
a
){
this
.
points
=
void
0
==
a
?[]:
a
};
THREE
.
SplineCurve
.
prototype
=
Object
.
create
(
THREE
.
Curve
.
prototype
);
THREE
.
SplineCurve
.
prototype
.
getPoint
=
function
(
a
){
var
b
=
new
THREE
.
Vector2
,
c
=
[],
d
=
this
.
points
,
e
;
e
=
(
d
.
length
-
1
)
*
a
;
a
=
Math
.
floor
(
e
);
e
-=
a
;
c
[
0
]
=
0
==
a
?
a
:
a
-
1
;
c
[
1
]
=
a
;
c
[
2
]
=
a
>
d
.
length
-
2
?
d
.
length
-
1
:
a
+
1
;
c
[
3
]
=
a
>
d
.
length
-
3
?
d
.
length
-
1
:
a
+
2
;
b
.
x
=
THREE
.
Curve
.
Utils
.
interpolate
(
d
[
c
[
0
]].
x
,
d
[
c
[
1
]].
x
,
d
[
c
[
2
]].
x
,
d
[
c
[
3
]].
x
,
e
);
b
.
y
=
THREE
.
Curve
.
Utils
.
interpolate
(
d
[
c
[
0
]].
y
,
d
[
c
[
1
]].
y
,
d
[
c
[
2
]].
y
,
d
[
c
[
3
]].
y
,
e
);
return
b
};
THREE
.
EllipseCurve
=
function
(
a
,
b
,
c
,
d
,
e
,
f
,
h
){
this
.
aX
=
a
;
this
.
aY
=
b
;
this
.
xRadius
=
c
;
this
.
yRadius
=
d
;
this
.
aStartAngle
=
e
;
this
.
aEndAngle
=
f
;
this
.
aClockwise
=
h
};
THREE
.
EllipseCurve
.
prototype
=
Object
.
create
(
THREE
.
Curve
.
prototype
);
THREE
.
EllipseCurve
.
prototype
.
getPoint
=
function
(
a
){
var
b
=
this
.
aEndAngle
-
this
.
aStartAngle
;
this
.
aClockwise
||
(
a
=
1
-
a
);
b
=
this
.
aStartAngle
+
a
*
b
;
a
=
this
.
aX
+
this
.
xRadius
*
Math
.
cos
(
b
);
b
=
this
.
aY
+
this
.
yRadius
*
Math
.
sin
(
b
);
return
new
THREE
.
Vector2
(
a
,
b
)};
THREE
.
ArcCurve
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
THREE
.
EllipseCurve
.
call
(
this
,
a
,
b
,
c
,
c
,
d
,
e
,
f
)};
THREE
.
ArcCurve
.
prototype
=
Object
.
create
(
THREE
.
EllipseCurve
.
prototype
);
THREE
.
LineCurve3
=
THREE
.
Curve
.
create
(
function
(
a
,
b
){
this
.
v1
=
a
;
this
.
v2
=
b
},
function
(
a
){
var
b
=
new
THREE
.
Vector3
;
b
.
subVectors
(
this
.
v2
,
this
.
v1
);
b
.
multiplyScalar
(
a
);
b
.
add
(
this
.
v1
);
return
b
});
THREE
.
QuadraticBezierCurve3
=
THREE
.
Curve
.
create
(
function
(
a
,
b
,
c
){
this
.
v0
=
a
;
this
.
v1
=
b
;
this
.
v2
=
c
},
function
(
a
){
var
b
,
c
;
b
=
THREE
.
Shape
.
Utils
.
b2
(
a
,
this
.
v0
.
x
,
this
.
v1
.
x
,
this
.
v2
.
x
);
c
=
THREE
.
Shape
.
Utils
.
b2
(
a
,
this
.
v0
.
y
,
this
.
v1
.
y
,
this
.
v2
.
y
);
a
=
THREE
.
Shape
.
Utils
.
b2
(
a
,
this
.
v0
.
z
,
this
.
v1
.
z
,
this
.
v2
.
z
);
return
new
THREE
.
Vector3
(
b
,
c
,
a
)});
THREE
.
CubicBezierCurve3
=
THREE
.
Curve
.
create
(
function
(
a
,
b
,
c
,
d
){
this
.
v0
=
a
;
this
.
v1
=
b
;
this
.
v2
=
c
;
this
.
v3
=
d
},
function
(
a
){
var
b
,
c
;
b
=
THREE
.
Shape
.
Utils
.
b3
(
a
,
this
.
v0
.
x
,
this
.
v1
.
x
,
this
.
v2
.
x
,
this
.
v3
.
x
);
c
=
THREE
.
Shape
.
Utils
.
b3
(
a
,
this
.
v0
.
y
,
this
.
v1
.
y
,
this
.
v2
.
y
,
this
.
v3
.
y
);
a
=
THREE
.
Shape
.
Utils
.
b3
(
a
,
this
.
v0
.
z
,
this
.
v1
.
z
,
this
.
v2
.
z
,
this
.
v3
.
z
);
return
new
THREE
.
Vector3
(
b
,
c
,
a
)});
THREE
.
SplineCurve3
=
THREE
.
Curve
.
create
(
function
(
a
){
this
.
points
=
void
0
==
a
?[]:
a
},
function
(
a
){
var
b
=
new
THREE
.
Vector3
,
c
=
[],
d
=
this
.
points
,
e
,
a
=
(
d
.
length
-
1
)
*
a
;
e
=
Math
.
floor
(
a
);
a
-=
e
;
c
[
0
]
=
0
==
e
?
e
:
e
-
1
;
c
[
1
]
=
e
;
c
[
2
]
=
e
>
d
.
length
-
2
?
d
.
length
-
1
:
e
+
1
;
c
[
3
]
=
e
>
d
.
length
-
3
?
d
.
length
-
1
:
e
+
2
;
e
=
d
[
c
[
0
]];
var
f
=
d
[
c
[
1
]],
h
=
d
[
c
[
2
]],
c
=
d
[
c
[
3
]];
b
.
x
=
THREE
.
Curve
.
Utils
.
interpolate
(
e
.
x
,
f
.
x
,
h
.
x
,
c
.
x
,
a
);
b
.
y
=
THREE
.
Curve
.
Utils
.
interpolate
(
e
.
y
,
f
.
y
,
h
.
y
,
c
.
y
,
a
);
b
.
z
=
THREE
.
Curve
.
Utils
.
interpolate
(
e
.
z
,
f
.
z
,
h
.
z
,
c
.
z
,
a
);
return
b
});
THREE
.
ClosedSplineCurve3
=
THREE
.
Curve
.
create
(
function
(
a
){
this
.
points
=
void
0
==
a
?[]:
a
},
function
(
a
){
var
b
=
new
THREE
.
Vector3
,
c
=
[],
d
=
this
.
points
,
e
;
e
=
(
d
.
length
-
0
)
*
a
;
a
=
Math
.
floor
(
e
);
e
-=
a
;
a
+=
0
<
a
?
0
:(
Math
.
floor
(
Math
.
abs
(
a
)
/
d
.
length
)
+
1
)
*
d
.
length
;
c
[
0
]
=
(
a
-
1
)
%
d
.
length
;
c
[
1
]
=
a
%
d
.
length
;
c
[
2
]
=
(
a
+
1
)
%
d
.
length
;
c
[
3
]
=
(
a
+
2
)
%
d
.
length
;
b
.
x
=
THREE
.
Curve
.
Utils
.
interpolate
(
d
[
c
[
0
]].
x
,
d
[
c
[
1
]].
x
,
d
[
c
[
2
]].
x
,
d
[
c
[
3
]].
x
,
e
);
b
.
y
=
THREE
.
Curve
.
Utils
.
interpolate
(
d
[
c
[
0
]].
y
,
d
[
c
[
1
]].
y
,
d
[
c
[
2
]].
y
,
d
[
c
[
3
]].
y
,
e
);
b
.
z
=
THREE
.
Curve
.
Utils
.
interpolate
(
d
[
c
[
0
]].
z
,
THREE
.
CubicBezierCurve
.
prototype
.
getTangent
=
function
(
a
){
var
b
;
b
=
THREE
.
Curve
.
Utils
.
tangentCubicBezier
(
a
,
this
.
v0
.
x
,
this
.
v1
.
x
,
this
.
v2
.
x
,
this
.
v3
.
x
);
a
=
THREE
.
Curve
.
Utils
.
tangentCubicBezier
(
a
,
this
.
v0
.
y
,
this
.
v1
.
y
,
this
.
v2
.
y
,
this
.
v3
.
y
);
b
=
new
THREE
.
Vector2
(
b
,
a
);
b
.
normalize
();
return
b
};
THREE
.
SplineCurve
=
function
(
a
){
this
.
points
=
void
0
==
a
?[]:
a
};
THREE
.
SplineCurve
.
prototype
=
Object
.
create
(
THREE
.
Curve
.
prototype
);
THREE
.
SplineCurve
.
prototype
.
getPoint
=
function
(
a
){
var
b
=
new
THREE
.
Vector2
,
c
=
[],
d
=
this
.
points
,
e
;
e
=
(
d
.
length
-
1
)
*
a
;
a
=
Math
.
floor
(
e
);
e
-=
a
;
c
[
0
]
=
0
==
a
?
a
:
a
-
1
;
c
[
1
]
=
a
;
c
[
2
]
=
a
>
d
.
length
-
2
?
d
.
length
-
1
:
a
+
1
;
c
[
3
]
=
a
>
d
.
length
-
3
?
d
.
length
-
1
:
a
+
2
;
b
.
x
=
THREE
.
Curve
.
Utils
.
interpolate
(
d
[
c
[
0
]].
x
,
d
[
c
[
1
]].
x
,
d
[
c
[
2
]].
x
,
d
[
c
[
3
]].
x
,
e
);
b
.
y
=
THREE
.
Curve
.
Utils
.
interpolate
(
d
[
c
[
0
]].
y
,
d
[
c
[
1
]].
y
,
d
[
c
[
2
]].
y
,
d
[
c
[
3
]].
y
,
e
);
return
b
};
THREE
.
EllipseCurve
=
function
(
a
,
b
,
c
,
d
,
e
,
f
,
h
){
this
.
aX
=
a
;
this
.
aY
=
b
;
this
.
xRadius
=
c
;
this
.
yRadius
=
d
;
this
.
aStartAngle
=
e
;
this
.
aEndAngle
=
f
;
this
.
aClockwise
=
h
};
THREE
.
EllipseCurve
.
prototype
=
Object
.
create
(
THREE
.
Curve
.
prototype
);
THREE
.
EllipseCurve
.
prototype
.
getPoint
=
function
(
a
){
var
b
;
b
=
this
.
aEndAngle
-
this
.
aStartAngle
;
b
=!
0
===
this
.
aClockwise
?
this
.
aEndAngle
+
(
1
-
a
)
*
(
2
*
Math
.
PI
-
b
):
this
.
aStartAngle
+
a
*
b
;
a
=
this
.
aX
+
this
.
xRadius
*
Math
.
cos
(
b
);
b
=
this
.
aY
+
this
.
yRadius
*
Math
.
sin
(
b
);
return
new
THREE
.
Vector2
(
a
,
b
)};
THREE
.
ArcCurve
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
THREE
.
EllipseCurve
.
call
(
this
,
a
,
b
,
c
,
c
,
d
,
e
,
f
)};
THREE
.
ArcCurve
.
prototype
=
Object
.
create
(
THREE
.
EllipseCurve
.
prototype
);
THREE
.
LineCurve3
=
THREE
.
Curve
.
create
(
function
(
a
,
b
){
this
.
v1
=
a
;
this
.
v2
=
b
},
function
(
a
){
var
b
=
new
THREE
.
Vector3
;
b
.
subVectors
(
this
.
v2
,
this
.
v1
);
b
.
multiplyScalar
(
a
);
b
.
add
(
this
.
v1
);
return
b
});
THREE
.
QuadraticBezierCurve3
=
THREE
.
Curve
.
create
(
function
(
a
,
b
,
c
){
this
.
v0
=
a
;
this
.
v1
=
b
;
this
.
v2
=
c
},
function
(
a
){
var
b
,
c
;
b
=
THREE
.
Shape
.
Utils
.
b2
(
a
,
this
.
v0
.
x
,
this
.
v1
.
x
,
this
.
v2
.
x
);
c
=
THREE
.
Shape
.
Utils
.
b2
(
a
,
this
.
v0
.
y
,
this
.
v1
.
y
,
this
.
v2
.
y
);
a
=
THREE
.
Shape
.
Utils
.
b2
(
a
,
this
.
v0
.
z
,
this
.
v1
.
z
,
this
.
v2
.
z
);
return
new
THREE
.
Vector3
(
b
,
c
,
a
)});
THREE
.
CubicBezierCurve3
=
THREE
.
Curve
.
create
(
function
(
a
,
b
,
c
,
d
){
this
.
v0
=
a
;
this
.
v1
=
b
;
this
.
v2
=
c
;
this
.
v3
=
d
},
function
(
a
){
var
b
,
c
;
b
=
THREE
.
Shape
.
Utils
.
b3
(
a
,
this
.
v0
.
x
,
this
.
v1
.
x
,
this
.
v2
.
x
,
this
.
v3
.
x
);
c
=
THREE
.
Shape
.
Utils
.
b3
(
a
,
this
.
v0
.
y
,
this
.
v1
.
y
,
this
.
v2
.
y
,
this
.
v3
.
y
);
a
=
THREE
.
Shape
.
Utils
.
b3
(
a
,
this
.
v0
.
z
,
this
.
v1
.
z
,
this
.
v2
.
z
,
this
.
v3
.
z
);
return
new
THREE
.
Vector3
(
b
,
c
,
a
)});
THREE
.
SplineCurve3
=
THREE
.
Curve
.
create
(
function
(
a
){
this
.
points
=
void
0
==
a
?[]:
a
},
function
(
a
){
var
b
=
new
THREE
.
Vector3
,
c
=
[],
d
=
this
.
points
,
e
,
a
=
(
d
.
length
-
1
)
*
a
;
e
=
Math
.
floor
(
a
);
a
-=
e
;
c
[
0
]
=
0
==
e
?
e
:
e
-
1
;
c
[
1
]
=
e
;
c
[
2
]
=
e
>
d
.
length
-
2
?
d
.
length
-
1
:
e
+
1
;
c
[
3
]
=
e
>
d
.
length
-
3
?
d
.
length
-
1
:
e
+
2
;
e
=
d
[
c
[
0
]];
var
f
=
d
[
c
[
1
]],
h
=
d
[
c
[
2
]],
c
=
d
[
c
[
3
]];
b
.
x
=
THREE
.
Curve
.
Utils
.
interpolate
(
e
.
x
,
f
.
x
,
h
.
x
,
c
.
x
,
a
);
b
.
y
=
THREE
.
Curve
.
Utils
.
interpolate
(
e
.
y
,
f
.
y
,
h
.
y
,
c
.
y
,
a
);
b
.
z
=
THREE
.
Curve
.
Utils
.
interpolate
(
e
.
z
,
f
.
z
,
h
.
z
,
c
.
z
,
a
);
return
b
});
THREE
.
ClosedSplineCurve3
=
THREE
.
Curve
.
create
(
function
(
a
){
this
.
points
=
void
0
==
a
?[]:
a
},
function
(
a
){
var
b
=
new
THREE
.
Vector3
,
c
=
[],
d
=
this
.
points
,
e
;
e
=
(
d
.
length
-
0
)
*
a
;
a
=
Math
.
floor
(
e
);
e
-=
a
;
a
+=
0
<
a
?
0
:(
Math
.
floor
(
Math
.
abs
(
a
)
/
d
.
length
)
+
1
)
*
d
.
length
;
c
[
0
]
=
(
a
-
1
)
%
d
.
length
;
c
[
1
]
=
a
%
d
.
length
;
c
[
2
]
=
(
a
+
1
)
%
d
.
length
;
c
[
3
]
=
(
a
+
2
)
%
d
.
length
;
b
.
x
=
THREE
.
Curve
.
Utils
.
interpolate
(
d
[
c
[
0
]].
x
,
d
[
c
[
1
]].
x
,
d
[
c
[
2
]].
x
,
d
[
c
[
3
]].
x
,
e
);
b
.
y
=
THREE
.
Curve
.
Utils
.
interpolate
(
d
[
c
[
0
]].
y
,
d
[
c
[
1
]].
y
,
d
[
c
[
2
]].
y
,
d
[
c
[
3
]].
y
,
e
);
b
.
z
=
THREE
.
Curve
.
Utils
.
interpolate
(
d
[
c
[
0
]].
z
,
d
[
c
[
1
]].
z
,
d
[
c
[
2
]].
z
,
d
[
c
[
3
]].
z
,
e
);
return
b
});
THREE
.
AnimationHandler
=
function
(){
var
a
=
[],
b
=
{},
c
=
{
update
:
function
(
b
){
for
(
var
c
=
0
;
c
<
a
.
length
;
c
++
)
a
[
c
].
update
(
b
)},
addToUpdate
:
function
(
b
){
-
1
===
a
.
indexOf
(
b
)
&&
a
.
push
(
b
)},
removeFromUpdate
:
function
(
b
){
b
=
a
.
indexOf
(
b
);
-
1
!==
b
&&
a
.
splice
(
b
,
1
)},
add
:
function
(
a
){
void
0
!==
b
[
a
.
name
]
&&
console
.
log
(
"
THREE.AnimationHandler.add: Warning!
"
+
a
.
name
+
"
already exists in library. Overwriting.
"
);
b
[
a
.
name
]
=
a
;
if
(
!
0
!==
a
.
initialized
){
for
(
var
c
=
0
;
c
<
a
.
hierarchy
.
length
;
c
++
){
for
(
var
d
=
0
;
d
<
a
.
hierarchy
[
c
].
keys
.
length
;
d
++
)
if
(
0
>
a
.
hierarchy
[
c
].
keys
[
d
].
time
&&
(
a
.
hierarchy
[
c
].
keys
[
d
].
time
=
0
),
void
0
!==
a
.
hierarchy
[
c
].
keys
[
d
].
rot
&&!
(
a
.
hierarchy
[
c
].
keys
[
d
].
rot
instanceof
THREE
.
Quaternion
)){
var
g
=
a
.
hierarchy
[
c
].
keys
[
d
].
rot
;
a
.
hierarchy
[
c
].
keys
[
d
].
rot
=
new
THREE
.
Quaternion
(
g
[
0
],
g
[
1
],
g
[
2
],
g
[
3
])}
if
(
a
.
hierarchy
[
c
].
keys
.
length
&&
void
0
!==
a
.
hierarchy
[
c
].
keys
[
0
].
morphTargets
){
g
=
{};
for
(
d
=
0
;
d
<
a
.
hierarchy
[
c
].
keys
.
length
;
d
++
)
for
(
var
i
=
0
;
i
<
a
.
hierarchy
[
c
].
keys
[
d
].
morphTargets
.
length
;
i
++
){
var
k
=
a
.
hierarchy
[
c
].
keys
[
d
].
morphTargets
[
i
];
g
[
k
]
=-
1
}
a
.
hierarchy
[
c
].
usedMorphTargets
=
g
;
for
(
d
=
0
;
d
<
a
.
hierarchy
[
c
].
keys
.
length
;
d
++
){
var
m
=
{};
for
(
k
in
g
){
for
(
i
=
0
;
i
<
a
.
hierarchy
[
c
].
keys
[
d
].
morphTargets
.
length
;
i
++
)
if
(
a
.
hierarchy
[
c
].
keys
[
d
].
morphTargets
[
i
]
===
k
){
m
[
k
]
=
a
.
hierarchy
[
c
].
keys
[
d
].
morphTargetsInfluences
[
i
];
break
}
i
===
a
.
hierarchy
[
c
].
keys
[
d
].
morphTargets
.
length
&&
(
m
[
k
]
=
0
)}
a
.
hierarchy
[
c
].
keys
[
d
].
morphTargetsInfluences
=
m
}}
for
(
d
=
1
;
d
<
a
.
hierarchy
[
c
].
keys
.
length
;
d
++
)
a
.
hierarchy
[
c
].
keys
[
d
].
time
===
a
.
hierarchy
[
c
].
keys
[
d
-
1
].
time
&&
(
a
.
hierarchy
[
c
].
keys
.
splice
(
d
,
1
),
d
--
);
for
(
d
=
0
;
d
<
a
.
hierarchy
[
c
].
keys
.
length
;
d
++
)
a
.
hierarchy
[
c
].
keys
[
d
].
index
=
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录