Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
7fd996a8
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,发现更多精彩内容 >>
提交
7fd996a8
编写于
1月 20, 2012
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'alteredq/dev' into dev
上级
514dac4d
8544e4b9
变更
16
展开全部
隐藏空白更改
内联
并排
Showing
16 changed file
with
547 addition
and
110 deletion
+547
-110
build/Three.js
build/Three.js
+13
-13
build/custom/ThreeCanvas.js
build/custom/ThreeCanvas.js
+5
-5
build/custom/ThreeDOM.js
build/custom/ThreeDOM.js
+5
-5
build/custom/ThreeExtras.js
build/custom/ThreeExtras.js
+7
-7
build/custom/ThreeSVG.js
build/custom/ThreeSVG.js
+5
-5
build/custom/ThreeWebGL.js
build/custom/ThreeWebGL.js
+6
-6
docs/api/cameras/OrthographicCamera.rst
docs/api/cameras/OrthographicCamera.rst
+1
-1
docs/api/cameras/PerspectiveCamera.rst
docs/api/cameras/PerspectiveCamera.rst
+1
-1
docs/api/core/Color.rst
docs/api/core/Color.rst
+56
-36
docs/api/core/Geometry.rst
docs/api/core/Geometry.rst
+7
-7
docs/api/core/Math.rst
docs/api/core/Math.rst
+3
-3
docs/api/core/Object3D.rst
docs/api/core/Object3D.rst
+10
-10
docs/api/core/Vector2.rst
docs/api/core/Vector2.rst
+169
-4
docs/api/core/Vector3.rst
docs/api/core/Vector3.rst
+242
-3
src/core/Vector2.js
src/core/Vector2.js
+6
-0
src/core/Vector3.js
src/core/Vector3.js
+11
-4
未找到文件。
build/Three.js
浏览文件 @
7fd996a8
此差异已折叠。
点击以展开。
build/custom/ThreeCanvas.js
浏览文件 @
7fd996a8
...
...
@@ -7,12 +7,12 @@ this.b=Math.sqrt(this.b);return this},setRGB:function(a,b,c){this.r=a;this.g=b;t
Math
.
floor
(
a
);
this
.
r
=
(
a
>>
16
&
255
)
/
255
;
this
.
g
=
(
a
>>
8
&
255
)
/
255
;
this
.
b
=
(
a
&
255
)
/
255
;
return
this
},
getHex
:
function
(){
return
Math
.
floor
(
255
*
this
.
r
)
<<
16
^
Math
.
floor
(
255
*
this
.
g
)
<<
8
^
Math
.
floor
(
255
*
this
.
b
)},
getContextStyle
:
function
(){
return
"
rgb(
"
+
Math
.
floor
(
255
*
this
.
r
)
+
"
,
"
+
Math
.
floor
(
255
*
this
.
g
)
+
"
,
"
+
Math
.
floor
(
255
*
this
.
b
)
+
"
)
"
},
clone
:
function
(){
return
(
new
THREE
.
Color
).
setRGB
(
this
.
r
,
this
.
g
,
this
.
b
)}};
THREE
.
Vector2
=
function
(
a
,
b
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
};
THREE
.
Vector2
.
prototype
=
{
constructor
:
THREE
.
Vector2
,
set
:
function
(
a
,
b
){
this
.
x
=
a
;
this
.
y
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
x
=
a
.
x
;
this
.
y
=
a
.
y
;
return
this
},
clone
:
function
(){
return
new
THREE
.
Vector2
(
this
.
x
,
this
.
y
)},
add
:
function
(
a
,
b
){
this
.
x
=
a
.
x
+
b
.
x
;
this
.
y
=
a
.
y
+
b
.
y
;
return
this
},
addSelf
:
function
(
a
){
this
.
x
+=
a
.
x
;
this
.
y
+=
a
.
y
;
return
this
},
sub
:
function
(
a
,
b
){
this
.
x
=
a
.
x
-
b
.
x
;
this
.
y
=
a
.
y
-
b
.
y
;
return
this
},
subSelf
:
function
(
a
){
this
.
x
-=
a
.
x
;
this
.
y
-=
a
.
y
;
return
this
},
multiplyScalar
:
function
(
a
){
this
.
x
*=
a
;
this
.
y
*=
a
;
return
this
},
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
):
this
.
set
(
0
,
0
);
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
},
lengthSq
:
function
(){
return
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
distanceTo
:
function
(
a
){
return
Math
.
sqrt
(
this
.
distanceToSquared
(
a
))},
distanceToSquared
:
function
(
a
){
var
b
=
this
.
x
-
a
.
x
,
a
=
this
.
y
-
a
.
y
;
return
b
*
b
+
a
*
a
},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
equals
:
function
(
a
){
return
a
.
x
===
this
.
x
&&
a
.
y
===
this
.
y
}};
THREE
.
Vector3
=
function
(
a
,
b
,
c
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
};
equals
:
function
(
a
){
return
a
.
x
===
this
.
x
&&
a
.
y
===
this
.
y
}
,
isZero
:
function
(){
return
1.0
E
-
4
>
this
.
lengthSq
()}
};
THREE
.
Vector3
=
function
(
a
,
b
,
c
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
};
THREE
.
Vector3
.
prototype
=
{
constructor
:
THREE
.
Vector3
,
set
:
function
(
a
,
b
,
c
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
return
this
},
setX
:
function
(
a
){
this
.
x
=
a
;
return
this
},
setY
:
function
(
a
){
this
.
y
=
a
;
return
this
},
setZ
:
function
(
a
){
this
.
z
=
a
;
return
this
},
copy
:
function
(
a
){
this
.
x
=
a
.
x
;
this
.
y
=
a
.
y
;
this
.
z
=
a
.
z
;
return
this
},
clone
:
function
(){
return
new
THREE
.
Vector3
(
this
.
x
,
this
.
y
,
this
.
z
)},
add
:
function
(
a
,
b
){
this
.
x
=
a
.
x
+
b
.
x
;
this
.
y
=
a
.
y
+
b
.
y
;
this
.
z
=
a
.
z
+
b
.
z
;
return
this
},
addSelf
:
function
(
a
){
this
.
x
+=
a
.
x
;
this
.
y
+=
a
.
y
;
this
.
z
+=
a
.
z
;
return
this
},
addScalar
:
function
(
a
){
this
.
x
+=
a
;
this
.
y
+=
a
;
this
.
z
+=
a
;
return
this
},
sub
:
function
(
a
,
b
){
this
.
x
=
a
.
x
-
b
.
x
;
this
.
y
=
a
.
y
-
b
.
y
;
this
.
z
=
a
.
z
-
b
.
z
;
return
this
},
subSelf
:
function
(
a
){
this
.
x
-=
a
.
x
;
this
.
y
-=
a
.
y
;
this
.
z
-=
a
.
z
;
return
this
},
multiply
:
function
(
a
,
b
){
this
.
x
=
a
.
x
*
b
.
x
;
this
.
y
=
a
.
y
*
b
.
y
;
this
.
z
=
a
.
z
*
b
.
z
;
return
this
},
multiplySelf
:
function
(
a
){
this
.
x
*=
a
.
x
;
this
.
y
*=
a
.
y
;
this
.
z
*=
a
.
z
;
return
this
},
multiplyScalar
:
function
(
a
){
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
return
this
},
divideSelf
:
function
(
a
){
this
.
x
/=
a
.
x
;
this
.
y
/=
a
.
y
;
this
.
z
/=
a
.
z
;
return
this
},
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
,
this
.
z
/=
a
):
this
.
z
=
this
.
y
=
this
.
x
=
0
;
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
+
this
.
z
*
a
.
z
},
lengthSq
:
function
(){
return
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
lengthManhattan
:
function
(){
return
this
.
x
+
this
.
y
+
this
.
z
},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
cross
:
function
(
a
,
b
){
this
.
x
=
a
.
y
*
b
.
z
-
a
.
z
*
b
.
y
;
this
.
y
=
a
.
z
*
b
.
x
-
a
.
x
*
b
.
z
;
this
.
z
=
a
.
x
*
b
.
y
-
a
.
y
*
b
.
x
;
return
this
},
crossSelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
;
this
.
x
=
c
*
a
.
z
-
d
*
a
.
y
;
this
.
y
=
d
*
a
.
x
-
b
*
a
.
z
;
this
.
z
=
b
*
a
.
y
-
c
*
a
.
x
;
return
this
},
distanceTo
:
function
(
a
){
return
Math
.
sqrt
(
this
.
distanceToSquared
(
a
))},
distanceToSquared
:
function
(
a
){
return
(
new
THREE
.
Vector3
).
sub
(
this
,
a
).
lengthSq
()},
setPositionFromMatrix
:
function
(
a
){
this
.
x
=
a
.
n14
;
this
.
y
=
a
.
n24
;
this
.
z
=
a
.
n34
},
setRotationFromMatrix
:
function
(
a
){
var
b
=
Math
.
cos
(
this
.
y
);
this
.
y
=
Math
.
asin
(
a
.
n13
);
1.0
E
-
5
<
Math
.
abs
(
b
)?(
this
.
x
=
Math
.
atan2
(
-
a
.
n23
/
b
,
a
.
n33
/
b
),
this
.
z
=
Math
.
atan2
(
-
a
.
n12
/
b
,
a
.
n11
/
b
)):(
this
.
x
=
0
,
this
.
z
=
Math
.
atan2
(
a
.
n21
,
a
.
n22
))},
isZero
:
function
(){
return
1.0
E
-
4
>
this
.
lengthSq
()}};
THREE
.
Vector4
=
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
;
this
.
w
=
void
0
!==
d
?
d
:
1
};
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
,
this
.
z
/=
a
):
this
.
z
=
this
.
y
=
this
.
x
=
0
;
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
+
this
.
z
*
a
.
z
},
lengthSq
:
function
(){
return
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
lengthManhattan
:
function
(){
return
Math
.
abs
(
this
.
x
)
+
Math
.
abs
(
this
.
y
)
+
Math
.
abs
(
this
.
z
)
},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
cross
:
function
(
a
,
b
){
this
.
x
=
a
.
y
*
b
.
z
-
a
.
z
*
b
.
y
;
this
.
y
=
a
.
z
*
b
.
x
-
a
.
x
*
b
.
z
;
this
.
z
=
a
.
x
*
b
.
y
-
a
.
y
*
b
.
x
;
return
this
},
crossSelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
;
this
.
x
=
c
*
a
.
z
-
d
*
a
.
y
;
this
.
y
=
d
*
a
.
x
-
b
*
a
.
z
;
this
.
z
=
b
*
a
.
y
-
c
*
a
.
x
;
return
this
},
distanceTo
:
function
(
a
){
return
Math
.
sqrt
(
this
.
distanceToSquared
(
a
))},
distanceToSquared
:
function
(
a
){
return
(
new
THREE
.
Vector3
).
sub
(
this
,
a
).
lengthSq
()},
setPositionFromMatrix
:
function
(
a
){
this
.
x
=
a
.
n14
;
this
.
y
=
a
.
n24
;
this
.
z
=
a
.
n34
;
return
this
},
setRotationFromMatrix
:
function
(
a
){
var
b
=
Math
.
cos
(
this
.
y
);
this
.
y
=
Math
.
asin
(
a
.
n13
);
1.0
E
-
5
<
Math
.
abs
(
b
)?(
this
.
x
=
Math
.
atan2
(
-
a
.
n23
/
b
,
a
.
n33
/
b
),
this
.
z
=
Math
.
atan2
(
-
a
.
n12
/
b
,
a
.
n11
/
b
)):(
this
.
x
=
0
,
this
.
z
=
Math
.
atan2
(
a
.
n21
,
a
.
n22
))
;
return
this
},
equals
:
function
(
a
){
return
a
.
x
===
this
.
x
&&
a
.
y
===
this
.
y
&&
a
.
z
===
this
.
z
},
isZero
:
function
(){
return
1.0
E
-
4
>
this
.
lengthSq
()}};
THREE
.
Vector4
=
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
;
this
.
w
=
void
0
!==
d
?
d
:
1
};
THREE
.
Vector4
.
prototype
=
{
constructor
:
THREE
.
Vector4
,
set
:
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
this
.
w
=
d
;
return
this
},
copy
:
function
(
a
){
this
.
x
=
a
.
x
;
this
.
y
=
a
.
y
;
this
.
z
=
a
.
z
;
this
.
w
=
void
0
!==
a
.
w
?
a
.
w
:
1
},
clone
:
function
(){
return
new
THREE
.
Vector4
(
this
.
x
,
this
.
y
,
this
.
z
,
this
.
w
)},
add
:
function
(
a
,
b
){
this
.
x
=
a
.
x
+
b
.
x
;
this
.
y
=
a
.
y
+
b
.
y
;
this
.
z
=
a
.
z
+
b
.
z
;
this
.
w
=
a
.
w
+
b
.
w
;
return
this
},
addSelf
:
function
(
a
){
this
.
x
+=
a
.
x
;
this
.
y
+=
a
.
y
;
this
.
z
+=
a
.
z
;
this
.
w
+=
a
.
w
;
return
this
},
sub
:
function
(
a
,
b
){
this
.
x
=
a
.
x
-
b
.
x
;
this
.
y
=
a
.
y
-
b
.
y
;
this
.
z
=
a
.
z
-
b
.
z
;
this
.
w
=
a
.
w
-
b
.
w
;
return
this
},
subSelf
:
function
(
a
){
this
.
x
-=
a
.
x
;
this
.
y
-=
a
.
y
;
this
.
z
-=
a
.
z
;
this
.
w
-=
a
.
w
;
return
this
},
multiplyScalar
:
function
(
a
){
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
;
return
this
},
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
,
this
.
z
/=
a
,
this
.
w
/=
a
):(
this
.
z
=
this
.
y
=
this
.
x
=
0
,
this
.
w
=
1
);
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
+
this
.
z
*
a
.
z
+
this
.
w
*
a
.
w
},
lengthSq
:
function
(){
return
this
.
dot
(
this
)},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
lerpSelf
:
function
(
a
,
b
){
this
.
x
+=
(
a
.
x
-
this
.
x
)
*
b
;
this
.
y
+=
(
a
.
y
-
this
.
y
)
*
b
;
this
.
z
+=
(
a
.
z
-
this
.
z
)
*
b
;
this
.
w
+=
(
a
.
w
-
this
.
w
)
*
b
;
return
this
}};
THREE
.
Frustum
=
function
(){
this
.
planes
=
[
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
]};
...
...
@@ -78,7 +78,7 @@ this.x=a.x*d;this.y=a.y*d;this.z=a.z*d;this.w=Math.cos(c);return this},setFromRo
this
.
normalize
();
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
0
===
a
?
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
:(
a
=
1
/
a
,
this
.
x
*=
a
,
this
.
y
*=
a
,
this
.
z
*=
a
,
this
.
w
*=
a
);
return
this
},
multiplySelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
,
e
=
this
.
w
,
f
=
a
.
x
,
g
=
a
.
y
,
i
=
a
.
z
,
a
=
a
.
w
;
this
.
x
=
b
*
a
+
e
*
f
+
c
*
i
-
d
*
g
;
this
.
y
=
c
*
a
+
e
*
g
+
d
*
f
-
b
*
i
;
this
.
z
=
d
*
a
+
e
*
i
+
b
*
g
-
c
*
f
;
this
.
w
=
e
*
a
-
b
*
f
-
c
*
g
-
d
*
i
;
return
this
},
multiply
:
function
(
a
,
b
){
this
.
x
=
a
.
x
*
b
.
w
+
a
.
y
*
b
.
z
-
a
.
z
*
b
.
y
+
a
.
w
*
b
.
x
;
this
.
y
=-
a
.
x
*
b
.
z
+
a
.
y
*
b
.
w
+
a
.
z
*
b
.
x
+
a
.
w
*
b
.
y
;
this
.
z
=
a
.
x
*
b
.
y
-
a
.
y
*
b
.
x
+
a
.
z
*
b
.
w
+
a
.
w
*
b
.
z
;
this
.
w
=-
a
.
x
*
b
.
x
-
a
.
y
*
b
.
y
-
a
.
z
*
b
.
z
+
a
.
w
*
b
.
w
;
return
this
},
multiplyVector3
:
function
(
a
,
b
){
b
||
(
b
=
a
);
var
c
=
a
.
x
,
d
=
a
.
y
,
e
=
a
.
z
,
f
=
this
.
x
,
g
=
this
.
y
,
i
=
this
.
z
,
m
=
this
.
w
,
h
=
m
*
c
+
g
*
e
-
i
*
d
,
l
=
m
*
d
+
i
*
c
-
f
*
e
,
o
=
m
*
e
+
f
*
d
-
g
*
c
,
c
=-
f
*
c
-
g
*
d
-
i
*
e
;
b
.
x
=
h
*
m
+
c
*-
f
+
l
*-
i
-
o
*-
g
;
b
.
y
=
l
*
m
+
c
*-
g
+
o
*-
f
-
h
*-
i
;
b
.
z
=
o
*
m
+
c
*-
i
+
h
*-
g
-
l
*-
f
;
return
b
}};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
d
){
var
e
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
0
>
e
?(
c
.
w
=-
b
.
w
,
c
.
x
=-
b
.
x
,
c
.
y
=-
b
.
y
,
c
.
z
=-
b
.
z
,
e
=-
e
):
c
.
copy
(
b
);
if
(
1
<=
Math
.
abs
(
e
))
return
c
.
w
=
a
.
w
,
c
.
x
=
a
.
x
,
c
.
y
=
a
.
y
,
c
.
z
=
a
.
z
,
c
;
var
f
=
Math
.
acos
(
e
),
e
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
0.001
>
Math
.
abs
(
e
))
return
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
),
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
),
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
),
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
),
c
;
b
=
Math
.
sin
((
1
-
d
)
*
f
)
/
e
;
d
=
Math
.
sin
(
d
*
f
)
/
e
;
c
.
w
=
a
.
w
*
b
+
c
.
w
*
d
;
c
.
x
=
a
.
x
*
b
+
c
.
x
*
d
;
c
.
y
=
a
.
y
*
b
+
c
.
y
*
d
;
c
.
z
=
a
.
z
*
b
+
c
.
z
*
d
;
return
c
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
d
){
var
e
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
0
>
e
?(
c
.
w
=-
b
.
w
,
c
.
x
=-
b
.
x
,
c
.
y
=-
b
.
y
,
c
.
z
=-
b
.
z
,
e
=-
e
):
c
.
copy
(
b
);
if
(
1
<=
Math
.
abs
(
e
))
return
c
.
w
=
a
.
w
,
c
.
x
=
a
.
x
,
c
.
y
=
a
.
y
,
c
.
z
=
a
.
z
,
c
;
var
f
=
Math
.
acos
(
e
),
e
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
0.001
0
>
Math
.
abs
(
e
))
return
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
),
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
),
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
),
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
),
c
;
b
=
Math
.
sin
((
1
-
d
)
*
f
)
/
e
;
d
=
Math
.
sin
(
d
*
f
)
/
e
;
c
.
w
=
a
.
w
*
b
+
c
.
w
*
d
;
c
.
x
=
a
.
x
*
b
+
c
.
x
*
d
;
c
.
y
=
a
.
y
*
b
+
c
.
y
*
d
;
c
.
z
=
a
.
z
*
b
+
c
.
z
*
d
;
return
c
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Face3
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
normal
=
d
instanceof
THREE
.
Vector3
?
d
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
d
instanceof
Array
?
d
:[];
this
.
color
=
e
instanceof
THREE
.
Color
?
e
:
new
THREE
.
Color
;
this
.
vertexColors
=
e
instanceof
Array
?
e
:[];
this
.
vertexTangents
=
[];
this
.
materialIndex
=
f
;
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
Face4
=
function
(
a
,
b
,
c
,
d
,
e
,
f
,
g
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
d
=
d
;
this
.
normal
=
e
instanceof
THREE
.
Vector3
?
e
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
e
instanceof
Array
?
e
:[];
this
.
color
=
f
instanceof
THREE
.
Color
?
f
:
new
THREE
.
Color
;
this
.
vertexColors
=
f
instanceof
Array
?
f
:[];
this
.
vertexTangents
=
[];
this
.
materialIndex
=
g
;
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
UV
=
function
(
a
,
b
){
this
.
u
=
a
||
0
;
this
.
v
=
b
||
0
};
THREE
.
UV
.
prototype
=
{
constructor
:
THREE
.
UV
,
set
:
function
(
a
,
b
){
this
.
u
=
a
;
this
.
v
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
u
=
a
.
u
;
this
.
v
=
a
.
v
;
return
this
},
clone
:
function
(){
return
new
THREE
.
UV
(
this
.
u
,
this
.
v
)}};
...
...
build/custom/ThreeDOM.js
浏览文件 @
7fd996a8
...
...
@@ -7,12 +7,12 @@ this.b=Math.sqrt(this.b);return this},setRGB:function(a,b,c){this.r=a;this.g=b;t
Math
.
floor
(
a
);
this
.
r
=
(
a
>>
16
&
255
)
/
255
;
this
.
g
=
(
a
>>
8
&
255
)
/
255
;
this
.
b
=
(
a
&
255
)
/
255
;
return
this
},
getHex
:
function
(){
return
Math
.
floor
(
255
*
this
.
r
)
<<
16
^
Math
.
floor
(
255
*
this
.
g
)
<<
8
^
Math
.
floor
(
255
*
this
.
b
)},
getContextStyle
:
function
(){
return
"
rgb(
"
+
Math
.
floor
(
255
*
this
.
r
)
+
"
,
"
+
Math
.
floor
(
255
*
this
.
g
)
+
"
,
"
+
Math
.
floor
(
255
*
this
.
b
)
+
"
)
"
},
clone
:
function
(){
return
(
new
THREE
.
Color
).
setRGB
(
this
.
r
,
this
.
g
,
this
.
b
)}};
THREE
.
Vector2
=
function
(
a
,
b
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
};
THREE
.
Vector2
.
prototype
=
{
constructor
:
THREE
.
Vector2
,
set
:
function
(
a
,
b
){
this
.
x
=
a
;
this
.
y
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
x
=
a
.
x
;
this
.
y
=
a
.
y
;
return
this
},
clone
:
function
(){
return
new
THREE
.
Vector2
(
this
.
x
,
this
.
y
)},
add
:
function
(
a
,
b
){
this
.
x
=
a
.
x
+
b
.
x
;
this
.
y
=
a
.
y
+
b
.
y
;
return
this
},
addSelf
:
function
(
a
){
this
.
x
+=
a
.
x
;
this
.
y
+=
a
.
y
;
return
this
},
sub
:
function
(
a
,
b
){
this
.
x
=
a
.
x
-
b
.
x
;
this
.
y
=
a
.
y
-
b
.
y
;
return
this
},
subSelf
:
function
(
a
){
this
.
x
-=
a
.
x
;
this
.
y
-=
a
.
y
;
return
this
},
multiplyScalar
:
function
(
a
){
this
.
x
*=
a
;
this
.
y
*=
a
;
return
this
},
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
):
this
.
set
(
0
,
0
);
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
},
lengthSq
:
function
(){
return
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
distanceTo
:
function
(
a
){
return
Math
.
sqrt
(
this
.
distanceToSquared
(
a
))},
distanceToSquared
:
function
(
a
){
var
b
=
this
.
x
-
a
.
x
,
a
=
this
.
y
-
a
.
y
;
return
b
*
b
+
a
*
a
},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
equals
:
function
(
a
){
return
a
.
x
===
this
.
x
&&
a
.
y
===
this
.
y
}};
THREE
.
Vector3
=
function
(
a
,
b
,
c
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
};
equals
:
function
(
a
){
return
a
.
x
===
this
.
x
&&
a
.
y
===
this
.
y
}
,
isZero
:
function
(){
return
1.0
E
-
4
>
this
.
lengthSq
()}
};
THREE
.
Vector3
=
function
(
a
,
b
,
c
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
};
THREE
.
Vector3
.
prototype
=
{
constructor
:
THREE
.
Vector3
,
set
:
function
(
a
,
b
,
c
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
return
this
},
setX
:
function
(
a
){
this
.
x
=
a
;
return
this
},
setY
:
function
(
a
){
this
.
y
=
a
;
return
this
},
setZ
:
function
(
a
){
this
.
z
=
a
;
return
this
},
copy
:
function
(
a
){
this
.
x
=
a
.
x
;
this
.
y
=
a
.
y
;
this
.
z
=
a
.
z
;
return
this
},
clone
:
function
(){
return
new
THREE
.
Vector3
(
this
.
x
,
this
.
y
,
this
.
z
)},
add
:
function
(
a
,
b
){
this
.
x
=
a
.
x
+
b
.
x
;
this
.
y
=
a
.
y
+
b
.
y
;
this
.
z
=
a
.
z
+
b
.
z
;
return
this
},
addSelf
:
function
(
a
){
this
.
x
+=
a
.
x
;
this
.
y
+=
a
.
y
;
this
.
z
+=
a
.
z
;
return
this
},
addScalar
:
function
(
a
){
this
.
x
+=
a
;
this
.
y
+=
a
;
this
.
z
+=
a
;
return
this
},
sub
:
function
(
a
,
b
){
this
.
x
=
a
.
x
-
b
.
x
;
this
.
y
=
a
.
y
-
b
.
y
;
this
.
z
=
a
.
z
-
b
.
z
;
return
this
},
subSelf
:
function
(
a
){
this
.
x
-=
a
.
x
;
this
.
y
-=
a
.
y
;
this
.
z
-=
a
.
z
;
return
this
},
multiply
:
function
(
a
,
b
){
this
.
x
=
a
.
x
*
b
.
x
;
this
.
y
=
a
.
y
*
b
.
y
;
this
.
z
=
a
.
z
*
b
.
z
;
return
this
},
multiplySelf
:
function
(
a
){
this
.
x
*=
a
.
x
;
this
.
y
*=
a
.
y
;
this
.
z
*=
a
.
z
;
return
this
},
multiplyScalar
:
function
(
a
){
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
return
this
},
divideSelf
:
function
(
a
){
this
.
x
/=
a
.
x
;
this
.
y
/=
a
.
y
;
this
.
z
/=
a
.
z
;
return
this
},
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
,
this
.
z
/=
a
):
this
.
z
=
this
.
y
=
this
.
x
=
0
;
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
+
this
.
z
*
a
.
z
},
lengthSq
:
function
(){
return
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
lengthManhattan
:
function
(){
return
this
.
x
+
this
.
y
+
this
.
z
},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
cross
:
function
(
a
,
b
){
this
.
x
=
a
.
y
*
b
.
z
-
a
.
z
*
b
.
y
;
this
.
y
=
a
.
z
*
b
.
x
-
a
.
x
*
b
.
z
;
this
.
z
=
a
.
x
*
b
.
y
-
a
.
y
*
b
.
x
;
return
this
},
crossSelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
;
this
.
x
=
c
*
a
.
z
-
d
*
a
.
y
;
this
.
y
=
d
*
a
.
x
-
b
*
a
.
z
;
this
.
z
=
b
*
a
.
y
-
c
*
a
.
x
;
return
this
},
distanceTo
:
function
(
a
){
return
Math
.
sqrt
(
this
.
distanceToSquared
(
a
))},
distanceToSquared
:
function
(
a
){
return
(
new
THREE
.
Vector3
).
sub
(
this
,
a
).
lengthSq
()},
setPositionFromMatrix
:
function
(
a
){
this
.
x
=
a
.
n14
;
this
.
y
=
a
.
n24
;
this
.
z
=
a
.
n34
},
setRotationFromMatrix
:
function
(
a
){
var
b
=
Math
.
cos
(
this
.
y
);
this
.
y
=
Math
.
asin
(
a
.
n13
);
1.0
E
-
5
<
Math
.
abs
(
b
)?(
this
.
x
=
Math
.
atan2
(
-
a
.
n23
/
b
,
a
.
n33
/
b
),
this
.
z
=
Math
.
atan2
(
-
a
.
n12
/
b
,
a
.
n11
/
b
)):(
this
.
x
=
0
,
this
.
z
=
Math
.
atan2
(
a
.
n21
,
a
.
n22
))},
isZero
:
function
(){
return
1.0
E
-
4
>
this
.
lengthSq
()}};
THREE
.
Vector4
=
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
;
this
.
w
=
void
0
!==
d
?
d
:
1
};
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
,
this
.
z
/=
a
):
this
.
z
=
this
.
y
=
this
.
x
=
0
;
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
+
this
.
z
*
a
.
z
},
lengthSq
:
function
(){
return
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
lengthManhattan
:
function
(){
return
Math
.
abs
(
this
.
x
)
+
Math
.
abs
(
this
.
y
)
+
Math
.
abs
(
this
.
z
)
},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
cross
:
function
(
a
,
b
){
this
.
x
=
a
.
y
*
b
.
z
-
a
.
z
*
b
.
y
;
this
.
y
=
a
.
z
*
b
.
x
-
a
.
x
*
b
.
z
;
this
.
z
=
a
.
x
*
b
.
y
-
a
.
y
*
b
.
x
;
return
this
},
crossSelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
;
this
.
x
=
c
*
a
.
z
-
d
*
a
.
y
;
this
.
y
=
d
*
a
.
x
-
b
*
a
.
z
;
this
.
z
=
b
*
a
.
y
-
c
*
a
.
x
;
return
this
},
distanceTo
:
function
(
a
){
return
Math
.
sqrt
(
this
.
distanceToSquared
(
a
))},
distanceToSquared
:
function
(
a
){
return
(
new
THREE
.
Vector3
).
sub
(
this
,
a
).
lengthSq
()},
setPositionFromMatrix
:
function
(
a
){
this
.
x
=
a
.
n14
;
this
.
y
=
a
.
n24
;
this
.
z
=
a
.
n34
;
return
this
},
setRotationFromMatrix
:
function
(
a
){
var
b
=
Math
.
cos
(
this
.
y
);
this
.
y
=
Math
.
asin
(
a
.
n13
);
1.0
E
-
5
<
Math
.
abs
(
b
)?(
this
.
x
=
Math
.
atan2
(
-
a
.
n23
/
b
,
a
.
n33
/
b
),
this
.
z
=
Math
.
atan2
(
-
a
.
n12
/
b
,
a
.
n11
/
b
)):(
this
.
x
=
0
,
this
.
z
=
Math
.
atan2
(
a
.
n21
,
a
.
n22
))
;
return
this
},
equals
:
function
(
a
){
return
a
.
x
===
this
.
x
&&
a
.
y
===
this
.
y
&&
a
.
z
===
this
.
z
},
isZero
:
function
(){
return
1.0
E
-
4
>
this
.
lengthSq
()}};
THREE
.
Vector4
=
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
;
this
.
w
=
void
0
!==
d
?
d
:
1
};
THREE
.
Vector4
.
prototype
=
{
constructor
:
THREE
.
Vector4
,
set
:
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
this
.
w
=
d
;
return
this
},
copy
:
function
(
a
){
this
.
x
=
a
.
x
;
this
.
y
=
a
.
y
;
this
.
z
=
a
.
z
;
this
.
w
=
void
0
!==
a
.
w
?
a
.
w
:
1
},
clone
:
function
(){
return
new
THREE
.
Vector4
(
this
.
x
,
this
.
y
,
this
.
z
,
this
.
w
)},
add
:
function
(
a
,
b
){
this
.
x
=
a
.
x
+
b
.
x
;
this
.
y
=
a
.
y
+
b
.
y
;
this
.
z
=
a
.
z
+
b
.
z
;
this
.
w
=
a
.
w
+
b
.
w
;
return
this
},
addSelf
:
function
(
a
){
this
.
x
+=
a
.
x
;
this
.
y
+=
a
.
y
;
this
.
z
+=
a
.
z
;
this
.
w
+=
a
.
w
;
return
this
},
sub
:
function
(
a
,
b
){
this
.
x
=
a
.
x
-
b
.
x
;
this
.
y
=
a
.
y
-
b
.
y
;
this
.
z
=
a
.
z
-
b
.
z
;
this
.
w
=
a
.
w
-
b
.
w
;
return
this
},
subSelf
:
function
(
a
){
this
.
x
-=
a
.
x
;
this
.
y
-=
a
.
y
;
this
.
z
-=
a
.
z
;
this
.
w
-=
a
.
w
;
return
this
},
multiplyScalar
:
function
(
a
){
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
;
return
this
},
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
,
this
.
z
/=
a
,
this
.
w
/=
a
):(
this
.
z
=
this
.
y
=
this
.
x
=
0
,
this
.
w
=
1
);
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
+
this
.
z
*
a
.
z
+
this
.
w
*
a
.
w
},
lengthSq
:
function
(){
return
this
.
dot
(
this
)},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
lerpSelf
:
function
(
a
,
b
){
this
.
x
+=
(
a
.
x
-
this
.
x
)
*
b
;
this
.
y
+=
(
a
.
y
-
this
.
y
)
*
b
;
this
.
z
+=
(
a
.
z
-
this
.
z
)
*
b
;
this
.
w
+=
(
a
.
w
-
this
.
w
)
*
b
;
return
this
}};
THREE
.
Frustum
=
function
(){
this
.
planes
=
[
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
]};
...
...
@@ -78,7 +78,7 @@ this.x=a.x*d;this.y=a.y*d;this.z=a.z*d;this.w=Math.cos(c);return this},setFromRo
this
.
normalize
();
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
0
===
a
?
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
:(
a
=
1
/
a
,
this
.
x
*=
a
,
this
.
y
*=
a
,
this
.
z
*=
a
,
this
.
w
*=
a
);
return
this
},
multiplySelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
,
e
=
this
.
w
,
f
=
a
.
x
,
g
=
a
.
y
,
h
=
a
.
z
,
a
=
a
.
w
;
this
.
x
=
b
*
a
+
e
*
f
+
c
*
h
-
d
*
g
;
this
.
y
=
c
*
a
+
e
*
g
+
d
*
f
-
b
*
h
;
this
.
z
=
d
*
a
+
e
*
h
+
b
*
g
-
c
*
f
;
this
.
w
=
e
*
a
-
b
*
f
-
c
*
g
-
d
*
h
;
return
this
},
multiply
:
function
(
a
,
b
){
this
.
x
=
a
.
x
*
b
.
w
+
a
.
y
*
b
.
z
-
a
.
z
*
b
.
y
+
a
.
w
*
b
.
x
;
this
.
y
=-
a
.
x
*
b
.
z
+
a
.
y
*
b
.
w
+
a
.
z
*
b
.
x
+
a
.
w
*
b
.
y
;
this
.
z
=
a
.
x
*
b
.
y
-
a
.
y
*
b
.
x
+
a
.
z
*
b
.
w
+
a
.
w
*
b
.
z
;
this
.
w
=-
a
.
x
*
b
.
x
-
a
.
y
*
b
.
y
-
a
.
z
*
b
.
z
+
a
.
w
*
b
.
w
;
return
this
},
multiplyVector3
:
function
(
a
,
b
){
b
||
(
b
=
a
);
var
c
=
a
.
x
,
d
=
a
.
y
,
e
=
a
.
z
,
f
=
this
.
x
,
g
=
this
.
y
,
h
=
this
.
z
,
k
=
this
.
w
,
i
=
k
*
c
+
g
*
e
-
h
*
d
,
j
=
k
*
d
+
h
*
c
-
f
*
e
,
l
=
k
*
e
+
f
*
d
-
g
*
c
,
c
=-
f
*
c
-
g
*
d
-
h
*
e
;
b
.
x
=
i
*
k
+
c
*-
f
+
j
*-
h
-
l
*-
g
;
b
.
y
=
j
*
k
+
c
*-
g
+
l
*-
f
-
i
*-
h
;
b
.
z
=
l
*
k
+
c
*-
h
+
i
*-
g
-
j
*-
f
;
return
b
}};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
d
){
var
e
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
0
>
e
?(
c
.
w
=-
b
.
w
,
c
.
x
=-
b
.
x
,
c
.
y
=-
b
.
y
,
c
.
z
=-
b
.
z
,
e
=-
e
):
c
.
copy
(
b
);
if
(
1
<=
Math
.
abs
(
e
))
return
c
.
w
=
a
.
w
,
c
.
x
=
a
.
x
,
c
.
y
=
a
.
y
,
c
.
z
=
a
.
z
,
c
;
var
f
=
Math
.
acos
(
e
),
e
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
0.001
>
Math
.
abs
(
e
))
return
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
),
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
),
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
),
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
),
c
;
b
=
Math
.
sin
((
1
-
d
)
*
f
)
/
e
;
d
=
Math
.
sin
(
d
*
f
)
/
e
;
c
.
w
=
a
.
w
*
b
+
c
.
w
*
d
;
c
.
x
=
a
.
x
*
b
+
c
.
x
*
d
;
c
.
y
=
a
.
y
*
b
+
c
.
y
*
d
;
c
.
z
=
a
.
z
*
b
+
c
.
z
*
d
;
return
c
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
d
){
var
e
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
0
>
e
?(
c
.
w
=-
b
.
w
,
c
.
x
=-
b
.
x
,
c
.
y
=-
b
.
y
,
c
.
z
=-
b
.
z
,
e
=-
e
):
c
.
copy
(
b
);
if
(
1
<=
Math
.
abs
(
e
))
return
c
.
w
=
a
.
w
,
c
.
x
=
a
.
x
,
c
.
y
=
a
.
y
,
c
.
z
=
a
.
z
,
c
;
var
f
=
Math
.
acos
(
e
),
e
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
0.001
0
>
Math
.
abs
(
e
))
return
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
),
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
),
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
),
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
),
c
;
b
=
Math
.
sin
((
1
-
d
)
*
f
)
/
e
;
d
=
Math
.
sin
(
d
*
f
)
/
e
;
c
.
w
=
a
.
w
*
b
+
c
.
w
*
d
;
c
.
x
=
a
.
x
*
b
+
c
.
x
*
d
;
c
.
y
=
a
.
y
*
b
+
c
.
y
*
d
;
c
.
z
=
a
.
z
*
b
+
c
.
z
*
d
;
return
c
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Face3
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
normal
=
d
instanceof
THREE
.
Vector3
?
d
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
d
instanceof
Array
?
d
:[];
this
.
color
=
e
instanceof
THREE
.
Color
?
e
:
new
THREE
.
Color
;
this
.
vertexColors
=
e
instanceof
Array
?
e
:[];
this
.
vertexTangents
=
[];
this
.
materialIndex
=
f
;
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
Face4
=
function
(
a
,
b
,
c
,
d
,
e
,
f
,
g
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
d
=
d
;
this
.
normal
=
e
instanceof
THREE
.
Vector3
?
e
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
e
instanceof
Array
?
e
:[];
this
.
color
=
f
instanceof
THREE
.
Color
?
f
:
new
THREE
.
Color
;
this
.
vertexColors
=
f
instanceof
Array
?
f
:[];
this
.
vertexTangents
=
[];
this
.
materialIndex
=
g
;
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
UV
=
function
(
a
,
b
){
this
.
u
=
a
||
0
;
this
.
v
=
b
||
0
};
THREE
.
UV
.
prototype
=
{
constructor
:
THREE
.
UV
,
set
:
function
(
a
,
b
){
this
.
u
=
a
;
this
.
v
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
u
=
a
.
u
;
this
.
v
=
a
.
v
;
return
this
},
clone
:
function
(){
return
new
THREE
.
UV
(
this
.
u
,
this
.
v
)}};
...
...
build/custom/ThreeExtras.js
浏览文件 @
7fd996a8
此差异已折叠。
点击以展开。
build/custom/ThreeSVG.js
浏览文件 @
7fd996a8
...
...
@@ -7,12 +7,12 @@ this.b=Math.sqrt(this.b);return this},setRGB:function(a,b,c){this.r=a;this.g=b;t
Math
.
floor
(
a
);
this
.
r
=
(
a
>>
16
&
255
)
/
255
;
this
.
g
=
(
a
>>
8
&
255
)
/
255
;
this
.
b
=
(
a
&
255
)
/
255
;
return
this
},
getHex
:
function
(){
return
Math
.
floor
(
255
*
this
.
r
)
<<
16
^
Math
.
floor
(
255
*
this
.
g
)
<<
8
^
Math
.
floor
(
255
*
this
.
b
)},
getContextStyle
:
function
(){
return
"
rgb(
"
+
Math
.
floor
(
255
*
this
.
r
)
+
"
,
"
+
Math
.
floor
(
255
*
this
.
g
)
+
"
,
"
+
Math
.
floor
(
255
*
this
.
b
)
+
"
)
"
},
clone
:
function
(){
return
(
new
THREE
.
Color
).
setRGB
(
this
.
r
,
this
.
g
,
this
.
b
)}};
THREE
.
Vector2
=
function
(
a
,
b
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
};
THREE
.
Vector2
.
prototype
=
{
constructor
:
THREE
.
Vector2
,
set
:
function
(
a
,
b
){
this
.
x
=
a
;
this
.
y
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
x
=
a
.
x
;
this
.
y
=
a
.
y
;
return
this
},
clone
:
function
(){
return
new
THREE
.
Vector2
(
this
.
x
,
this
.
y
)},
add
:
function
(
a
,
b
){
this
.
x
=
a
.
x
+
b
.
x
;
this
.
y
=
a
.
y
+
b
.
y
;
return
this
},
addSelf
:
function
(
a
){
this
.
x
+=
a
.
x
;
this
.
y
+=
a
.
y
;
return
this
},
sub
:
function
(
a
,
b
){
this
.
x
=
a
.
x
-
b
.
x
;
this
.
y
=
a
.
y
-
b
.
y
;
return
this
},
subSelf
:
function
(
a
){
this
.
x
-=
a
.
x
;
this
.
y
-=
a
.
y
;
return
this
},
multiplyScalar
:
function
(
a
){
this
.
x
*=
a
;
this
.
y
*=
a
;
return
this
},
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
):
this
.
set
(
0
,
0
);
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
},
lengthSq
:
function
(){
return
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
distanceTo
:
function
(
a
){
return
Math
.
sqrt
(
this
.
distanceToSquared
(
a
))},
distanceToSquared
:
function
(
a
){
var
b
=
this
.
x
-
a
.
x
,
a
=
this
.
y
-
a
.
y
;
return
b
*
b
+
a
*
a
},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
equals
:
function
(
a
){
return
a
.
x
===
this
.
x
&&
a
.
y
===
this
.
y
}};
THREE
.
Vector3
=
function
(
a
,
b
,
c
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
};
equals
:
function
(
a
){
return
a
.
x
===
this
.
x
&&
a
.
y
===
this
.
y
}
,
isZero
:
function
(){
return
1.0
E
-
4
>
this
.
lengthSq
()}
};
THREE
.
Vector3
=
function
(
a
,
b
,
c
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
};
THREE
.
Vector3
.
prototype
=
{
constructor
:
THREE
.
Vector3
,
set
:
function
(
a
,
b
,
c
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
return
this
},
setX
:
function
(
a
){
this
.
x
=
a
;
return
this
},
setY
:
function
(
a
){
this
.
y
=
a
;
return
this
},
setZ
:
function
(
a
){
this
.
z
=
a
;
return
this
},
copy
:
function
(
a
){
this
.
x
=
a
.
x
;
this
.
y
=
a
.
y
;
this
.
z
=
a
.
z
;
return
this
},
clone
:
function
(){
return
new
THREE
.
Vector3
(
this
.
x
,
this
.
y
,
this
.
z
)},
add
:
function
(
a
,
b
){
this
.
x
=
a
.
x
+
b
.
x
;
this
.
y
=
a
.
y
+
b
.
y
;
this
.
z
=
a
.
z
+
b
.
z
;
return
this
},
addSelf
:
function
(
a
){
this
.
x
+=
a
.
x
;
this
.
y
+=
a
.
y
;
this
.
z
+=
a
.
z
;
return
this
},
addScalar
:
function
(
a
){
this
.
x
+=
a
;
this
.
y
+=
a
;
this
.
z
+=
a
;
return
this
},
sub
:
function
(
a
,
b
){
this
.
x
=
a
.
x
-
b
.
x
;
this
.
y
=
a
.
y
-
b
.
y
;
this
.
z
=
a
.
z
-
b
.
z
;
return
this
},
subSelf
:
function
(
a
){
this
.
x
-=
a
.
x
;
this
.
y
-=
a
.
y
;
this
.
z
-=
a
.
z
;
return
this
},
multiply
:
function
(
a
,
b
){
this
.
x
=
a
.
x
*
b
.
x
;
this
.
y
=
a
.
y
*
b
.
y
;
this
.
z
=
a
.
z
*
b
.
z
;
return
this
},
multiplySelf
:
function
(
a
){
this
.
x
*=
a
.
x
;
this
.
y
*=
a
.
y
;
this
.
z
*=
a
.
z
;
return
this
},
multiplyScalar
:
function
(
a
){
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
return
this
},
divideSelf
:
function
(
a
){
this
.
x
/=
a
.
x
;
this
.
y
/=
a
.
y
;
this
.
z
/=
a
.
z
;
return
this
},
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
,
this
.
z
/=
a
):
this
.
z
=
this
.
y
=
this
.
x
=
0
;
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
+
this
.
z
*
a
.
z
},
lengthSq
:
function
(){
return
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
lengthManhattan
:
function
(){
return
this
.
x
+
this
.
y
+
this
.
z
},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
cross
:
function
(
a
,
b
){
this
.
x
=
a
.
y
*
b
.
z
-
a
.
z
*
b
.
y
;
this
.
y
=
a
.
z
*
b
.
x
-
a
.
x
*
b
.
z
;
this
.
z
=
a
.
x
*
b
.
y
-
a
.
y
*
b
.
x
;
return
this
},
crossSelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
;
this
.
x
=
c
*
a
.
z
-
d
*
a
.
y
;
this
.
y
=
d
*
a
.
x
-
b
*
a
.
z
;
this
.
z
=
b
*
a
.
y
-
c
*
a
.
x
;
return
this
},
distanceTo
:
function
(
a
){
return
Math
.
sqrt
(
this
.
distanceToSquared
(
a
))},
distanceToSquared
:
function
(
a
){
return
(
new
THREE
.
Vector3
).
sub
(
this
,
a
).
lengthSq
()},
setPositionFromMatrix
:
function
(
a
){
this
.
x
=
a
.
n14
;
this
.
y
=
a
.
n24
;
this
.
z
=
a
.
n34
},
setRotationFromMatrix
:
function
(
a
){
var
b
=
Math
.
cos
(
this
.
y
);
this
.
y
=
Math
.
asin
(
a
.
n13
);
1.0
E
-
5
<
Math
.
abs
(
b
)?(
this
.
x
=
Math
.
atan2
(
-
a
.
n23
/
b
,
a
.
n33
/
b
),
this
.
z
=
Math
.
atan2
(
-
a
.
n12
/
b
,
a
.
n11
/
b
)):(
this
.
x
=
0
,
this
.
z
=
Math
.
atan2
(
a
.
n21
,
a
.
n22
))},
isZero
:
function
(){
return
1.0
E
-
4
>
this
.
lengthSq
()}};
THREE
.
Vector4
=
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
;
this
.
w
=
void
0
!==
d
?
d
:
1
};
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
,
this
.
z
/=
a
):
this
.
z
=
this
.
y
=
this
.
x
=
0
;
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
+
this
.
z
*
a
.
z
},
lengthSq
:
function
(){
return
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
lengthManhattan
:
function
(){
return
Math
.
abs
(
this
.
x
)
+
Math
.
abs
(
this
.
y
)
+
Math
.
abs
(
this
.
z
)
},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
cross
:
function
(
a
,
b
){
this
.
x
=
a
.
y
*
b
.
z
-
a
.
z
*
b
.
y
;
this
.
y
=
a
.
z
*
b
.
x
-
a
.
x
*
b
.
z
;
this
.
z
=
a
.
x
*
b
.
y
-
a
.
y
*
b
.
x
;
return
this
},
crossSelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
;
this
.
x
=
c
*
a
.
z
-
d
*
a
.
y
;
this
.
y
=
d
*
a
.
x
-
b
*
a
.
z
;
this
.
z
=
b
*
a
.
y
-
c
*
a
.
x
;
return
this
},
distanceTo
:
function
(
a
){
return
Math
.
sqrt
(
this
.
distanceToSquared
(
a
))},
distanceToSquared
:
function
(
a
){
return
(
new
THREE
.
Vector3
).
sub
(
this
,
a
).
lengthSq
()},
setPositionFromMatrix
:
function
(
a
){
this
.
x
=
a
.
n14
;
this
.
y
=
a
.
n24
;
this
.
z
=
a
.
n34
;
return
this
},
setRotationFromMatrix
:
function
(
a
){
var
b
=
Math
.
cos
(
this
.
y
);
this
.
y
=
Math
.
asin
(
a
.
n13
);
1.0
E
-
5
<
Math
.
abs
(
b
)?(
this
.
x
=
Math
.
atan2
(
-
a
.
n23
/
b
,
a
.
n33
/
b
),
this
.
z
=
Math
.
atan2
(
-
a
.
n12
/
b
,
a
.
n11
/
b
)):(
this
.
x
=
0
,
this
.
z
=
Math
.
atan2
(
a
.
n21
,
a
.
n22
))
;
return
this
},
equals
:
function
(
a
){
return
a
.
x
===
this
.
x
&&
a
.
y
===
this
.
y
&&
a
.
z
===
this
.
z
},
isZero
:
function
(){
return
1.0
E
-
4
>
this
.
lengthSq
()}};
THREE
.
Vector4
=
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
;
this
.
w
=
void
0
!==
d
?
d
:
1
};
THREE
.
Vector4
.
prototype
=
{
constructor
:
THREE
.
Vector4
,
set
:
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
this
.
w
=
d
;
return
this
},
copy
:
function
(
a
){
this
.
x
=
a
.
x
;
this
.
y
=
a
.
y
;
this
.
z
=
a
.
z
;
this
.
w
=
void
0
!==
a
.
w
?
a
.
w
:
1
},
clone
:
function
(){
return
new
THREE
.
Vector4
(
this
.
x
,
this
.
y
,
this
.
z
,
this
.
w
)},
add
:
function
(
a
,
b
){
this
.
x
=
a
.
x
+
b
.
x
;
this
.
y
=
a
.
y
+
b
.
y
;
this
.
z
=
a
.
z
+
b
.
z
;
this
.
w
=
a
.
w
+
b
.
w
;
return
this
},
addSelf
:
function
(
a
){
this
.
x
+=
a
.
x
;
this
.
y
+=
a
.
y
;
this
.
z
+=
a
.
z
;
this
.
w
+=
a
.
w
;
return
this
},
sub
:
function
(
a
,
b
){
this
.
x
=
a
.
x
-
b
.
x
;
this
.
y
=
a
.
y
-
b
.
y
;
this
.
z
=
a
.
z
-
b
.
z
;
this
.
w
=
a
.
w
-
b
.
w
;
return
this
},
subSelf
:
function
(
a
){
this
.
x
-=
a
.
x
;
this
.
y
-=
a
.
y
;
this
.
z
-=
a
.
z
;
this
.
w
-=
a
.
w
;
return
this
},
multiplyScalar
:
function
(
a
){
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
;
return
this
},
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
,
this
.
z
/=
a
,
this
.
w
/=
a
):(
this
.
z
=
this
.
y
=
this
.
x
=
0
,
this
.
w
=
1
);
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
+
this
.
z
*
a
.
z
+
this
.
w
*
a
.
w
},
lengthSq
:
function
(){
return
this
.
dot
(
this
)},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
lerpSelf
:
function
(
a
,
b
){
this
.
x
+=
(
a
.
x
-
this
.
x
)
*
b
;
this
.
y
+=
(
a
.
y
-
this
.
y
)
*
b
;
this
.
z
+=
(
a
.
z
-
this
.
z
)
*
b
;
this
.
w
+=
(
a
.
w
-
this
.
w
)
*
b
;
return
this
}};
THREE
.
Frustum
=
function
(){
this
.
planes
=
[
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
]};
...
...
@@ -78,7 +78,7 @@ this.x=a.x*d;this.y=a.y*d;this.z=a.z*d;this.w=Math.cos(c);return this},setFromRo
this
.
normalize
();
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
0
===
a
?
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
:(
a
=
1
/
a
,
this
.
x
*=
a
,
this
.
y
*=
a
,
this
.
z
*=
a
,
this
.
w
*=
a
);
return
this
},
multiplySelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
,
e
=
this
.
w
,
f
=
a
.
x
,
g
=
a
.
y
,
h
=
a
.
z
,
a
=
a
.
w
;
this
.
x
=
b
*
a
+
e
*
f
+
c
*
h
-
d
*
g
;
this
.
y
=
c
*
a
+
e
*
g
+
d
*
f
-
b
*
h
;
this
.
z
=
d
*
a
+
e
*
h
+
b
*
g
-
c
*
f
;
this
.
w
=
e
*
a
-
b
*
f
-
c
*
g
-
d
*
h
;
return
this
},
multiply
:
function
(
a
,
b
){
this
.
x
=
a
.
x
*
b
.
w
+
a
.
y
*
b
.
z
-
a
.
z
*
b
.
y
+
a
.
w
*
b
.
x
;
this
.
y
=-
a
.
x
*
b
.
z
+
a
.
y
*
b
.
w
+
a
.
z
*
b
.
x
+
a
.
w
*
b
.
y
;
this
.
z
=
a
.
x
*
b
.
y
-
a
.
y
*
b
.
x
+
a
.
z
*
b
.
w
+
a
.
w
*
b
.
z
;
this
.
w
=-
a
.
x
*
b
.
x
-
a
.
y
*
b
.
y
-
a
.
z
*
b
.
z
+
a
.
w
*
b
.
w
;
return
this
},
multiplyVector3
:
function
(
a
,
b
){
b
||
(
b
=
a
);
var
c
=
a
.
x
,
d
=
a
.
y
,
e
=
a
.
z
,
f
=
this
.
x
,
g
=
this
.
y
,
h
=
this
.
z
,
l
=
this
.
w
,
j
=
l
*
c
+
g
*
e
-
h
*
d
,
i
=
l
*
d
+
h
*
c
-
f
*
e
,
m
=
l
*
e
+
f
*
d
-
g
*
c
,
c
=-
f
*
c
-
g
*
d
-
h
*
e
;
b
.
x
=
j
*
l
+
c
*-
f
+
i
*-
h
-
m
*-
g
;
b
.
y
=
i
*
l
+
c
*-
g
+
m
*-
f
-
j
*-
h
;
b
.
z
=
m
*
l
+
c
*-
h
+
j
*-
g
-
i
*-
f
;
return
b
}};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
d
){
var
e
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
0
>
e
?(
c
.
w
=-
b
.
w
,
c
.
x
=-
b
.
x
,
c
.
y
=-
b
.
y
,
c
.
z
=-
b
.
z
,
e
=-
e
):
c
.
copy
(
b
);
if
(
1
<=
Math
.
abs
(
e
))
return
c
.
w
=
a
.
w
,
c
.
x
=
a
.
x
,
c
.
y
=
a
.
y
,
c
.
z
=
a
.
z
,
c
;
var
f
=
Math
.
acos
(
e
),
e
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
0.001
>
Math
.
abs
(
e
))
return
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
),
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
),
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
),
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
),
c
;
b
=
Math
.
sin
((
1
-
d
)
*
f
)
/
e
;
d
=
Math
.
sin
(
d
*
f
)
/
e
;
c
.
w
=
a
.
w
*
b
+
c
.
w
*
d
;
c
.
x
=
a
.
x
*
b
+
c
.
x
*
d
;
c
.
y
=
a
.
y
*
b
+
c
.
y
*
d
;
c
.
z
=
a
.
z
*
b
+
c
.
z
*
d
;
return
c
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
d
){
var
e
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
0
>
e
?(
c
.
w
=-
b
.
w
,
c
.
x
=-
b
.
x
,
c
.
y
=-
b
.
y
,
c
.
z
=-
b
.
z
,
e
=-
e
):
c
.
copy
(
b
);
if
(
1
<=
Math
.
abs
(
e
))
return
c
.
w
=
a
.
w
,
c
.
x
=
a
.
x
,
c
.
y
=
a
.
y
,
c
.
z
=
a
.
z
,
c
;
var
f
=
Math
.
acos
(
e
),
e
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
0.001
0
>
Math
.
abs
(
e
))
return
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
),
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
),
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
),
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
),
c
;
b
=
Math
.
sin
((
1
-
d
)
*
f
)
/
e
;
d
=
Math
.
sin
(
d
*
f
)
/
e
;
c
.
w
=
a
.
w
*
b
+
c
.
w
*
d
;
c
.
x
=
a
.
x
*
b
+
c
.
x
*
d
;
c
.
y
=
a
.
y
*
b
+
c
.
y
*
d
;
c
.
z
=
a
.
z
*
b
+
c
.
z
*
d
;
return
c
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Face3
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
normal
=
d
instanceof
THREE
.
Vector3
?
d
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
d
instanceof
Array
?
d
:[];
this
.
color
=
e
instanceof
THREE
.
Color
?
e
:
new
THREE
.
Color
;
this
.
vertexColors
=
e
instanceof
Array
?
e
:[];
this
.
vertexTangents
=
[];
this
.
materialIndex
=
f
;
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
Face4
=
function
(
a
,
b
,
c
,
d
,
e
,
f
,
g
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
d
=
d
;
this
.
normal
=
e
instanceof
THREE
.
Vector3
?
e
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
e
instanceof
Array
?
e
:[];
this
.
color
=
f
instanceof
THREE
.
Color
?
f
:
new
THREE
.
Color
;
this
.
vertexColors
=
f
instanceof
Array
?
f
:[];
this
.
vertexTangents
=
[];
this
.
materialIndex
=
g
;
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
UV
=
function
(
a
,
b
){
this
.
u
=
a
||
0
;
this
.
v
=
b
||
0
};
THREE
.
UV
.
prototype
=
{
constructor
:
THREE
.
UV
,
set
:
function
(
a
,
b
){
this
.
u
=
a
;
this
.
v
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
u
=
a
.
u
;
this
.
v
=
a
.
v
;
return
this
},
clone
:
function
(){
return
new
THREE
.
UV
(
this
.
u
,
this
.
v
)}};
...
...
build/custom/ThreeWebGL.js
浏览文件 @
7fd996a8
...
...
@@ -7,12 +7,12 @@ this.b=Math.sqrt(this.b);return this},setRGB:function(a,b,c){this.r=a;this.g=b;t
Math
.
floor
(
a
);
this
.
r
=
(
a
>>
16
&
255
)
/
255
;
this
.
g
=
(
a
>>
8
&
255
)
/
255
;
this
.
b
=
(
a
&
255
)
/
255
;
return
this
},
getHex
:
function
(){
return
Math
.
floor
(
255
*
this
.
r
)
<<
16
^
Math
.
floor
(
255
*
this
.
g
)
<<
8
^
Math
.
floor
(
255
*
this
.
b
)},
getContextStyle
:
function
(){
return
"
rgb(
"
+
Math
.
floor
(
255
*
this
.
r
)
+
"
,
"
+
Math
.
floor
(
255
*
this
.
g
)
+
"
,
"
+
Math
.
floor
(
255
*
this
.
b
)
+
"
)
"
},
clone
:
function
(){
return
(
new
THREE
.
Color
).
setRGB
(
this
.
r
,
this
.
g
,
this
.
b
)}};
THREE
.
Vector2
=
function
(
a
,
b
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
};
THREE
.
Vector2
.
prototype
=
{
constructor
:
THREE
.
Vector2
,
set
:
function
(
a
,
b
){
this
.
x
=
a
;
this
.
y
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
x
=
a
.
x
;
this
.
y
=
a
.
y
;
return
this
},
clone
:
function
(){
return
new
THREE
.
Vector2
(
this
.
x
,
this
.
y
)},
add
:
function
(
a
,
b
){
this
.
x
=
a
.
x
+
b
.
x
;
this
.
y
=
a
.
y
+
b
.
y
;
return
this
},
addSelf
:
function
(
a
){
this
.
x
+=
a
.
x
;
this
.
y
+=
a
.
y
;
return
this
},
sub
:
function
(
a
,
b
){
this
.
x
=
a
.
x
-
b
.
x
;
this
.
y
=
a
.
y
-
b
.
y
;
return
this
},
subSelf
:
function
(
a
){
this
.
x
-=
a
.
x
;
this
.
y
-=
a
.
y
;
return
this
},
multiplyScalar
:
function
(
a
){
this
.
x
*=
a
;
this
.
y
*=
a
;
return
this
},
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
):
this
.
set
(
0
,
0
);
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
},
lengthSq
:
function
(){
return
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
distanceTo
:
function
(
a
){
return
Math
.
sqrt
(
this
.
distanceToSquared
(
a
))},
distanceToSquared
:
function
(
a
){
var
b
=
this
.
x
-
a
.
x
,
a
=
this
.
y
-
a
.
y
;
return
b
*
b
+
a
*
a
},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
equals
:
function
(
a
){
return
a
.
x
===
this
.
x
&&
a
.
y
===
this
.
y
}};
THREE
.
Vector3
=
function
(
a
,
b
,
c
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
};
equals
:
function
(
a
){
return
a
.
x
===
this
.
x
&&
a
.
y
===
this
.
y
}
,
isZero
:
function
(){
return
1.0
E
-
4
>
this
.
lengthSq
()}
};
THREE
.
Vector3
=
function
(
a
,
b
,
c
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
};
THREE
.
Vector3
.
prototype
=
{
constructor
:
THREE
.
Vector3
,
set
:
function
(
a
,
b
,
c
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
return
this
},
setX
:
function
(
a
){
this
.
x
=
a
;
return
this
},
setY
:
function
(
a
){
this
.
y
=
a
;
return
this
},
setZ
:
function
(
a
){
this
.
z
=
a
;
return
this
},
copy
:
function
(
a
){
this
.
x
=
a
.
x
;
this
.
y
=
a
.
y
;
this
.
z
=
a
.
z
;
return
this
},
clone
:
function
(){
return
new
THREE
.
Vector3
(
this
.
x
,
this
.
y
,
this
.
z
)},
add
:
function
(
a
,
b
){
this
.
x
=
a
.
x
+
b
.
x
;
this
.
y
=
a
.
y
+
b
.
y
;
this
.
z
=
a
.
z
+
b
.
z
;
return
this
},
addSelf
:
function
(
a
){
this
.
x
+=
a
.
x
;
this
.
y
+=
a
.
y
;
this
.
z
+=
a
.
z
;
return
this
},
addScalar
:
function
(
a
){
this
.
x
+=
a
;
this
.
y
+=
a
;
this
.
z
+=
a
;
return
this
},
sub
:
function
(
a
,
b
){
this
.
x
=
a
.
x
-
b
.
x
;
this
.
y
=
a
.
y
-
b
.
y
;
this
.
z
=
a
.
z
-
b
.
z
;
return
this
},
subSelf
:
function
(
a
){
this
.
x
-=
a
.
x
;
this
.
y
-=
a
.
y
;
this
.
z
-=
a
.
z
;
return
this
},
multiply
:
function
(
a
,
b
){
this
.
x
=
a
.
x
*
b
.
x
;
this
.
y
=
a
.
y
*
b
.
y
;
this
.
z
=
a
.
z
*
b
.
z
;
return
this
},
multiplySelf
:
function
(
a
){
this
.
x
*=
a
.
x
;
this
.
y
*=
a
.
y
;
this
.
z
*=
a
.
z
;
return
this
},
multiplyScalar
:
function
(
a
){
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
return
this
},
divideSelf
:
function
(
a
){
this
.
x
/=
a
.
x
;
this
.
y
/=
a
.
y
;
this
.
z
/=
a
.
z
;
return
this
},
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
,
this
.
z
/=
a
):
this
.
z
=
this
.
y
=
this
.
x
=
0
;
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
+
this
.
z
*
a
.
z
},
lengthSq
:
function
(){
return
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
lengthManhattan
:
function
(){
return
this
.
x
+
this
.
y
+
this
.
z
},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
cross
:
function
(
a
,
b
){
this
.
x
=
a
.
y
*
b
.
z
-
a
.
z
*
b
.
y
;
this
.
y
=
a
.
z
*
b
.
x
-
a
.
x
*
b
.
z
;
this
.
z
=
a
.
x
*
b
.
y
-
a
.
y
*
b
.
x
;
return
this
},
crossSelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
;
this
.
x
=
c
*
a
.
z
-
d
*
a
.
y
;
this
.
y
=
d
*
a
.
x
-
b
*
a
.
z
;
this
.
z
=
b
*
a
.
y
-
c
*
a
.
x
;
return
this
},
distanceTo
:
function
(
a
){
return
Math
.
sqrt
(
this
.
distanceToSquared
(
a
))},
distanceToSquared
:
function
(
a
){
return
(
new
THREE
.
Vector3
).
sub
(
this
,
a
).
lengthSq
()},
setPositionFromMatrix
:
function
(
a
){
this
.
x
=
a
.
n14
;
this
.
y
=
a
.
n24
;
this
.
z
=
a
.
n34
},
setRotationFromMatrix
:
function
(
a
){
var
b
=
Math
.
cos
(
this
.
y
);
this
.
y
=
Math
.
asin
(
a
.
n13
);
1.0
E
-
5
<
Math
.
abs
(
b
)?(
this
.
x
=
Math
.
atan2
(
-
a
.
n23
/
b
,
a
.
n33
/
b
),
this
.
z
=
Math
.
atan2
(
-
a
.
n12
/
b
,
a
.
n11
/
b
)):(
this
.
x
=
0
,
this
.
z
=
Math
.
atan2
(
a
.
n21
,
a
.
n22
))},
isZero
:
function
(){
return
1.0
E
-
4
>
this
.
lengthSq
()}};
THREE
.
Vector4
=
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
;
this
.
w
=
void
0
!==
d
?
d
:
1
};
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
,
this
.
z
/=
a
):
this
.
z
=
this
.
y
=
this
.
x
=
0
;
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
+
this
.
z
*
a
.
z
},
lengthSq
:
function
(){
return
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
lengthManhattan
:
function
(){
return
Math
.
abs
(
this
.
x
)
+
Math
.
abs
(
this
.
y
)
+
Math
.
abs
(
this
.
z
)
},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
cross
:
function
(
a
,
b
){
this
.
x
=
a
.
y
*
b
.
z
-
a
.
z
*
b
.
y
;
this
.
y
=
a
.
z
*
b
.
x
-
a
.
x
*
b
.
z
;
this
.
z
=
a
.
x
*
b
.
y
-
a
.
y
*
b
.
x
;
return
this
},
crossSelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
;
this
.
x
=
c
*
a
.
z
-
d
*
a
.
y
;
this
.
y
=
d
*
a
.
x
-
b
*
a
.
z
;
this
.
z
=
b
*
a
.
y
-
c
*
a
.
x
;
return
this
},
distanceTo
:
function
(
a
){
return
Math
.
sqrt
(
this
.
distanceToSquared
(
a
))},
distanceToSquared
:
function
(
a
){
return
(
new
THREE
.
Vector3
).
sub
(
this
,
a
).
lengthSq
()},
setPositionFromMatrix
:
function
(
a
){
this
.
x
=
a
.
n14
;
this
.
y
=
a
.
n24
;
this
.
z
=
a
.
n34
;
return
this
},
setRotationFromMatrix
:
function
(
a
){
var
b
=
Math
.
cos
(
this
.
y
);
this
.
y
=
Math
.
asin
(
a
.
n13
);
1.0
E
-
5
<
Math
.
abs
(
b
)?(
this
.
x
=
Math
.
atan2
(
-
a
.
n23
/
b
,
a
.
n33
/
b
),
this
.
z
=
Math
.
atan2
(
-
a
.
n12
/
b
,
a
.
n11
/
b
)):(
this
.
x
=
0
,
this
.
z
=
Math
.
atan2
(
a
.
n21
,
a
.
n22
))
;
return
this
},
equals
:
function
(
a
){
return
a
.
x
===
this
.
x
&&
a
.
y
===
this
.
y
&&
a
.
z
===
this
.
z
},
isZero
:
function
(){
return
1.0
E
-
4
>
this
.
lengthSq
()}};
THREE
.
Vector4
=
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
||
0
;
this
.
y
=
b
||
0
;
this
.
z
=
c
||
0
;
this
.
w
=
void
0
!==
d
?
d
:
1
};
THREE
.
Vector4
.
prototype
=
{
constructor
:
THREE
.
Vector4
,
set
:
function
(
a
,
b
,
c
,
d
){
this
.
x
=
a
;
this
.
y
=
b
;
this
.
z
=
c
;
this
.
w
=
d
;
return
this
},
copy
:
function
(
a
){
this
.
x
=
a
.
x
;
this
.
y
=
a
.
y
;
this
.
z
=
a
.
z
;
this
.
w
=
void
0
!==
a
.
w
?
a
.
w
:
1
},
clone
:
function
(){
return
new
THREE
.
Vector4
(
this
.
x
,
this
.
y
,
this
.
z
,
this
.
w
)},
add
:
function
(
a
,
b
){
this
.
x
=
a
.
x
+
b
.
x
;
this
.
y
=
a
.
y
+
b
.
y
;
this
.
z
=
a
.
z
+
b
.
z
;
this
.
w
=
a
.
w
+
b
.
w
;
return
this
},
addSelf
:
function
(
a
){
this
.
x
+=
a
.
x
;
this
.
y
+=
a
.
y
;
this
.
z
+=
a
.
z
;
this
.
w
+=
a
.
w
;
return
this
},
sub
:
function
(
a
,
b
){
this
.
x
=
a
.
x
-
b
.
x
;
this
.
y
=
a
.
y
-
b
.
y
;
this
.
z
=
a
.
z
-
b
.
z
;
this
.
w
=
a
.
w
-
b
.
w
;
return
this
},
subSelf
:
function
(
a
){
this
.
x
-=
a
.
x
;
this
.
y
-=
a
.
y
;
this
.
z
-=
a
.
z
;
this
.
w
-=
a
.
w
;
return
this
},
multiplyScalar
:
function
(
a
){
this
.
x
*=
a
;
this
.
y
*=
a
;
this
.
z
*=
a
;
this
.
w
*=
a
;
return
this
},
divideScalar
:
function
(
a
){
a
?(
this
.
x
/=
a
,
this
.
y
/=
a
,
this
.
z
/=
a
,
this
.
w
/=
a
):(
this
.
z
=
this
.
y
=
this
.
x
=
0
,
this
.
w
=
1
);
return
this
},
negate
:
function
(){
return
this
.
multiplyScalar
(
-
1
)},
dot
:
function
(
a
){
return
this
.
x
*
a
.
x
+
this
.
y
*
a
.
y
+
this
.
z
*
a
.
z
+
this
.
w
*
a
.
w
},
lengthSq
:
function
(){
return
this
.
dot
(
this
)},
length
:
function
(){
return
Math
.
sqrt
(
this
.
lengthSq
())},
normalize
:
function
(){
return
this
.
divideScalar
(
this
.
length
())},
setLength
:
function
(
a
){
return
this
.
normalize
().
multiplyScalar
(
a
)},
lerpSelf
:
function
(
a
,
b
){
this
.
x
+=
(
a
.
x
-
this
.
x
)
*
b
;
this
.
y
+=
(
a
.
y
-
this
.
y
)
*
b
;
this
.
z
+=
(
a
.
z
-
this
.
z
)
*
b
;
this
.
w
+=
(
a
.
w
-
this
.
w
)
*
b
;
return
this
}};
THREE
.
Frustum
=
function
(){
this
.
planes
=
[
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
,
new
THREE
.
Vector4
]};
...
...
@@ -78,7 +78,7 @@ this.x=a.x*d;this.y=a.y*d;this.z=a.z*d;this.w=Math.cos(c);return this},setFromRo
this
.
normalize
();
return
this
},
calculateW
:
function
(){
this
.
w
=-
Math
.
sqrt
(
Math
.
abs
(
1
-
this
.
x
*
this
.
x
-
this
.
y
*
this
.
y
-
this
.
z
*
this
.
z
));
return
this
},
inverse
:
function
(){
this
.
x
*=-
1
;
this
.
y
*=-
1
;
this
.
z
*=-
1
;
return
this
},
length
:
function
(){
return
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
)},
normalize
:
function
(){
var
a
=
Math
.
sqrt
(
this
.
x
*
this
.
x
+
this
.
y
*
this
.
y
+
this
.
z
*
this
.
z
+
this
.
w
*
this
.
w
);
0
===
a
?
this
.
w
=
this
.
z
=
this
.
y
=
this
.
x
=
0
:(
a
=
1
/
a
,
this
.
x
*=
a
,
this
.
y
*=
a
,
this
.
z
*=
a
,
this
.
w
*=
a
);
return
this
},
multiplySelf
:
function
(
a
){
var
b
=
this
.
x
,
c
=
this
.
y
,
d
=
this
.
z
,
e
=
this
.
w
,
f
=
a
.
x
,
h
=
a
.
y
,
i
=
a
.
z
,
a
=
a
.
w
;
this
.
x
=
b
*
a
+
e
*
f
+
c
*
i
-
d
*
h
;
this
.
y
=
c
*
a
+
e
*
h
+
d
*
f
-
b
*
i
;
this
.
z
=
d
*
a
+
e
*
i
+
b
*
h
-
c
*
f
;
this
.
w
=
e
*
a
-
b
*
f
-
c
*
h
-
d
*
i
;
return
this
},
multiply
:
function
(
a
,
b
){
this
.
x
=
a
.
x
*
b
.
w
+
a
.
y
*
b
.
z
-
a
.
z
*
b
.
y
+
a
.
w
*
b
.
x
;
this
.
y
=-
a
.
x
*
b
.
z
+
a
.
y
*
b
.
w
+
a
.
z
*
b
.
x
+
a
.
w
*
b
.
y
;
this
.
z
=
a
.
x
*
b
.
y
-
a
.
y
*
b
.
x
+
a
.
z
*
b
.
w
+
a
.
w
*
b
.
z
;
this
.
w
=-
a
.
x
*
b
.
x
-
a
.
y
*
b
.
y
-
a
.
z
*
b
.
z
+
a
.
w
*
b
.
w
;
return
this
},
multiplyVector3
:
function
(
a
,
b
){
b
||
(
b
=
a
);
var
c
=
a
.
x
,
d
=
a
.
y
,
e
=
a
.
z
,
f
=
this
.
x
,
h
=
this
.
y
,
i
=
this
.
z
,
k
=
this
.
w
,
l
=
k
*
c
+
h
*
e
-
i
*
d
,
j
=
k
*
d
+
i
*
c
-
f
*
e
,
n
=
k
*
e
+
f
*
d
-
h
*
c
,
c
=-
f
*
c
-
h
*
d
-
i
*
e
;
b
.
x
=
l
*
k
+
c
*-
f
+
j
*-
i
-
n
*-
h
;
b
.
y
=
j
*
k
+
c
*-
h
+
n
*-
f
-
l
*-
i
;
b
.
z
=
n
*
k
+
c
*-
i
+
l
*-
h
-
j
*-
f
;
return
b
}};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
d
){
var
e
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
0
>
e
?(
c
.
w
=-
b
.
w
,
c
.
x
=-
b
.
x
,
c
.
y
=-
b
.
y
,
c
.
z
=-
b
.
z
,
e
=-
e
):
c
.
copy
(
b
);
if
(
1
<=
Math
.
abs
(
e
))
return
c
.
w
=
a
.
w
,
c
.
x
=
a
.
x
,
c
.
y
=
a
.
y
,
c
.
z
=
a
.
z
,
c
;
var
f
=
Math
.
acos
(
e
),
e
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
0.001
>
Math
.
abs
(
e
))
return
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
),
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
),
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
),
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
),
c
;
b
=
Math
.
sin
((
1
-
d
)
*
f
)
/
e
;
d
=
Math
.
sin
(
d
*
f
)
/
e
;
c
.
w
=
a
.
w
*
b
+
c
.
w
*
d
;
c
.
x
=
a
.
x
*
b
+
c
.
x
*
d
;
c
.
y
=
a
.
y
*
b
+
c
.
y
*
d
;
c
.
z
=
a
.
z
*
b
+
c
.
z
*
d
;
return
c
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Quaternion
.
slerp
=
function
(
a
,
b
,
c
,
d
){
var
e
=
a
.
w
*
b
.
w
+
a
.
x
*
b
.
x
+
a
.
y
*
b
.
y
+
a
.
z
*
b
.
z
;
0
>
e
?(
c
.
w
=-
b
.
w
,
c
.
x
=-
b
.
x
,
c
.
y
=-
b
.
y
,
c
.
z
=-
b
.
z
,
e
=-
e
):
c
.
copy
(
b
);
if
(
1
<=
Math
.
abs
(
e
))
return
c
.
w
=
a
.
w
,
c
.
x
=
a
.
x
,
c
.
y
=
a
.
y
,
c
.
z
=
a
.
z
,
c
;
var
f
=
Math
.
acos
(
e
),
e
=
Math
.
sqrt
(
1
-
e
*
e
);
if
(
0.001
0
>
Math
.
abs
(
e
))
return
c
.
w
=
0.5
*
(
a
.
w
+
b
.
w
),
c
.
x
=
0.5
*
(
a
.
x
+
b
.
x
),
c
.
y
=
0.5
*
(
a
.
y
+
b
.
y
),
c
.
z
=
0.5
*
(
a
.
z
+
b
.
z
),
c
;
b
=
Math
.
sin
((
1
-
d
)
*
f
)
/
e
;
d
=
Math
.
sin
(
d
*
f
)
/
e
;
c
.
w
=
a
.
w
*
b
+
c
.
w
*
d
;
c
.
x
=
a
.
x
*
b
+
c
.
x
*
d
;
c
.
y
=
a
.
y
*
b
+
c
.
y
*
d
;
c
.
z
=
a
.
z
*
b
+
c
.
z
*
d
;
return
c
};
THREE
.
Vertex
=
function
(
a
){
this
.
position
=
a
||
new
THREE
.
Vector3
};
THREE
.
Face3
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
normal
=
d
instanceof
THREE
.
Vector3
?
d
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
d
instanceof
Array
?
d
:[];
this
.
color
=
e
instanceof
THREE
.
Color
?
e
:
new
THREE
.
Color
;
this
.
vertexColors
=
e
instanceof
Array
?
e
:[];
this
.
vertexTangents
=
[];
this
.
materialIndex
=
f
;
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
Face4
=
function
(
a
,
b
,
c
,
d
,
e
,
f
,
h
){
this
.
a
=
a
;
this
.
b
=
b
;
this
.
c
=
c
;
this
.
d
=
d
;
this
.
normal
=
e
instanceof
THREE
.
Vector3
?
e
:
new
THREE
.
Vector3
;
this
.
vertexNormals
=
e
instanceof
Array
?
e
:[];
this
.
color
=
f
instanceof
THREE
.
Color
?
f
:
new
THREE
.
Color
;
this
.
vertexColors
=
f
instanceof
Array
?
f
:[];
this
.
vertexTangents
=
[];
this
.
materialIndex
=
h
;
this
.
centroid
=
new
THREE
.
Vector3
};
THREE
.
UV
=
function
(
a
,
b
){
this
.
u
=
a
||
0
;
this
.
v
=
b
||
0
};
THREE
.
UV
.
prototype
=
{
constructor
:
THREE
.
UV
,
set
:
function
(
a
,
b
){
this
.
u
=
a
;
this
.
v
=
b
;
return
this
},
copy
:
function
(
a
){
this
.
u
=
a
.
u
;
this
.
v
=
a
.
v
;
return
this
},
clone
:
function
(){
return
new
THREE
.
UV
(
this
.
u
,
this
.
v
)}};
...
...
@@ -361,7 +361,7 @@ b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.NEAREST);0>=b.getParameter(b
"
color
"
);
p
.
scale
=
b
.
getUniformLocation
(
j
,
"
scale
"
);
p
.
rotation
=
b
.
getUniformLocation
(
j
,
"
rotation
"
);
p
.
screenPosition
=
b
.
getUniformLocation
(
j
,
"
screenPosition
"
);
o
=!
1
};
this
.
render
=
function
(
a
,
d
,
e
,
z
){
var
a
=
a
.
__webglFlares
,
y
=
a
.
length
;
if
(
y
){
var
J
=
new
THREE
.
Vector3
,
K
=
z
/
e
,
u
=
0.5
*
e
,
B
=
0.5
*
z
,
H
=
16
/
z
,
A
=
new
THREE
.
Vector2
(
H
*
K
,
H
),
M
=
new
THREE
.
Vector3
(
1
,
1
,
0
),
N
=
new
THREE
.
Vector2
(
1
,
1
),
I
=
p
,
H
=
n
;
b
.
useProgram
(
j
);
o
||
(
b
.
enableVertexAttribArray
(
n
.
vertex
),
b
.
enableVertexAttribArray
(
n
.
uv
),
o
=!
0
);
b
.
uniform1i
(
I
.
occlusionMap
,
0
);
b
.
uniform1i
(
I
.
map
,
1
);
b
.
bindBuffer
(
b
.
ARRAY_BUFFER
,
f
);
b
.
vertexAttribPointer
(
H
.
vertex
,
2
,
b
.
FLOAT
,
!
1
,
16
,
0
);
b
.
vertexAttribPointer
(
H
.
uv
,
2
,
b
.
FLOAT
,
!
1
,
16
,
8
);
b
.
bindBuffer
(
b
.
ELEMENT_ARRAY_BUFFER
,
h
);
b
.
disable
(
b
.
CULL_FACE
);
b
.
depthMask
(
!
1
);
var
S
,
ua
,
ka
,
$
,
Z
;
for
(
S
=
0
;
S
<
y
;
S
++
)
if
(
H
=
16
/
z
,
A
.
set
(
H
*
K
,
H
),
$
=
a
[
S
],
J
.
set
(
$
.
matrixWorld
.
n14
,
$
.
matrixWorld
.
n24
,
$
.
matrixWorld
.
n34
),
d
.
matrixWorldInverse
.
multiplyVector3
(
J
),
d
.
projectionMatrix
.
multiplyVector3
(
J
),
M
.
copy
(
J
),
N
.
x
=
M
.
x
*
u
+
u
,
N
.
y
=
M
.
y
*
B
+
B
,
l
||
0
<
N
.
x
&&
N
.
x
<
e
&&
0
<
N
.
y
&&
N
.
y
<
z
){
b
.
activeTexture
(
b
.
TEXTURE1
);
b
.
bindTexture
(
b
.
TEXTURE_2D
,
i
);
b
.
copyTexImage2D
(
b
.
TEXTURE_2D
,
0
,
b
.
RGB
,
N
.
x
-
8
,
N
.
y
-
8
,
16
,
16
,
0
);
b
.
uniform1i
(
I
.
renderType
,
0
);
b
.
uniform2f
(
I
.
scale
,
A
.
x
,
A
.
y
);
b
.
uniform3f
(
I
.
screenPosition
,
M
.
x
,
M
.
y
,
M
.
z
);
b
.
disable
(
b
.
BLEND
);
b
.
enable
(
b
.
DEPTH_TEST
);
b
.
drawElements
(
b
.
TRIANGLES
,
6
,
b
.
UNSIGNED_SHORT
,
0
);
b
.
activeTexture
(
b
.
TEXTURE0
);
b
.
bindTexture
(
b
.
TEXTURE_2D
,
k
);
b
.
copyTexImage2D
(
b
.
TEXTURE_2D
,
0
,
b
.
RGBA
,
N
.
x
-
8
,
N
.
y
-
8
,
16
,
16
,
0
);
b
.
uniform1i
(
I
.
renderType
,
1
);
b
.
disable
(
b
.
DEPTH_TEST
);
b
.
activeTexture
(
b
.
TEXTURE1
);
b
.
bindTexture
(
b
.
TEXTURE_2D
,
i
);
b
.
drawElements
(
b
.
TRIANGLES
,
6
,
b
.
UNSIGNED_SHORT
,
0
);
$
.
positionScreen
.
copy
(
M
);
$
.
customUpdateCallback
?
$
.
customUpdateCallback
(
$
):
$
.
updateLensFlares
();
b
.
uniform1i
(
I
.
renderType
,
2
);
b
.
enable
(
b
.
BLEND
);
for
(
ua
=
0
,
ka
=
$
.
lensFlares
.
length
;
ua
<
ka
;
ua
++
)
if
(
Z
=
$
.
lensFlares
[
ua
],
0.001
<
Z
.
opacity
&&
0.001
<
Z
.
scale
)
M
.
x
=
Z
.
x
,
M
.
y
=
Z
.
y
,
M
.
z
=
Z
.
z
,
H
=
Z
.
size
*
Z
.
scale
/
z
,
A
.
x
=
H
*
K
,
A
.
y
=
H
,
b
.
uniform3f
(
I
.
screenPosition
,
M
.
x
,
M
.
y
,
M
.
z
),
b
.
uniform2f
(
I
.
scale
,
A
.
x
,
A
.
y
),
b
.
uniform1f
(
I
.
rotation
,
Z
.
rotation
),
b
.
uniform1f
(
I
.
opacity
,
Z
.
opacity
),
b
.
uniform3f
(
I
.
color
,
i
);
b
.
drawElements
(
b
.
TRIANGLES
,
6
,
b
.
UNSIGNED_SHORT
,
0
);
$
.
positionScreen
.
copy
(
M
);
$
.
customUpdateCallback
?
$
.
customUpdateCallback
(
$
):
$
.
updateLensFlares
();
b
.
uniform1i
(
I
.
renderType
,
2
);
b
.
enable
(
b
.
BLEND
);
for
(
ua
=
0
,
ka
=
$
.
lensFlares
.
length
;
ua
<
ka
;
ua
++
)
if
(
Z
=
$
.
lensFlares
[
ua
],
0.001
0
<
Z
.
opacity
&&
0.0010
<
Z
.
scale
)
M
.
x
=
Z
.
x
,
M
.
y
=
Z
.
y
,
M
.
z
=
Z
.
z
,
H
=
Z
.
size
*
Z
.
scale
/
z
,
A
.
x
=
H
*
K
,
A
.
y
=
H
,
b
.
uniform3f
(
I
.
screenPosition
,
M
.
x
,
M
.
y
,
M
.
z
),
b
.
uniform2f
(
I
.
scale
,
A
.
x
,
A
.
y
),
b
.
uniform1f
(
I
.
rotation
,
Z
.
rotation
),
b
.
uniform1f
(
I
.
opacity
,
Z
.
opacity
),
b
.
uniform3f
(
I
.
color
,
Z
.
color
.
r
,
Z
.
color
.
g
,
Z
.
color
.
b
),
c
.
setBlending
(
Z
.
blending
),
c
.
setTexture
(
Z
.
texture
,
1
),
b
.
drawElements
(
b
.
TRIANGLES
,
6
,
b
.
UNSIGNED_SHORT
,
0
)}
b
.
enable
(
b
.
CULL_FACE
);
b
.
enable
(
b
.
DEPTH_TEST
);
b
.
depthMask
(
!
0
)}}};
THREE
.
ShadowMapPlugin
=
function
(){
var
a
,
b
,
c
,
d
,
e
=
new
THREE
.
Frustum
,
f
=
new
THREE
.
Matrix4
;
this
.
init
=
function
(
e
){
a
=
e
.
context
;
b
=
e
;
var
e
=
THREE
.
ShaderLib
.
depthRGBA
,
f
=
THREE
.
UniformsUtils
.
clone
(
e
.
uniforms
);
c
=
new
THREE
.
ShaderMaterial
({
fragmentShader
:
e
.
fragmentShader
,
vertexShader
:
e
.
vertexShader
,
uniforms
:
f
});
d
=
new
THREE
.
ShaderMaterial
({
fragmentShader
:
e
.
fragmentShader
,
vertexShader
:
e
.
vertexShader
,
uniforms
:
f
,
morphTargets
:
!
0
});
c
.
_shadowPass
=!
0
;
d
.
_shadowPass
=!
0
};
this
.
render
=
function
(
a
,
c
){
b
.
shadowMapEnabled
&&
b
.
shadowMapAutoUpdate
&&
this
.
update
(
a
,
c
)};
this
.
update
=
function
(
h
){
var
i
,
k
,
l
,
j
,
n
,
p
,
o
,
m
,
r
,
t
=
h
.
lights
;
a
.
clearColor
(
1
,
1
,
1
,
1
);
a
.
disable
(
a
.
BLEND
);
b
.
shadowMapCullFrontFaces
&&
a
.
cullFace
(
a
.
FRONT
);
b
.
setDepthTest
(
!
0
);
for
(
i
=
0
,
k
=
t
.
length
;
i
<
k
;
i
++
)
if
(
m
=
t
[
i
],
m
.
castShadow
){
if
(
!
m
.
shadowMap
)
m
.
shadowMap
=
new
THREE
.
WebGLRenderTarget
(
m
.
shadowMapWidth
,
m
.
shadowMapHeight
,{
minFilter
:
THREE
.
LinearFilter
,
magFilter
:
THREE
.
LinearFilter
,
format
:
THREE
.
RGBAFormat
}),
m
.
shadowMapSize
=
new
THREE
.
Vector2
(
m
.
shadowMapWidth
,
m
.
shadowMapHeight
),
m
.
shadowMatrix
=
new
THREE
.
Matrix4
;
...
...
docs/api/cameras/OrthographicCamera.rst
浏览文件 @
7fd996a8
...
...
@@ -56,7 +56,7 @@ OrthographicCamera - Camera with orthographic projection
.. function:: OrthographicCamera.updateProjectionMatrix()
Update
d
camera's projection matrix. Must be called after change of parameters.
Update
s
camera's projection matrix. Must be called after change of parameters.
.. ...............................................................................
...
...
docs/api/cameras/PerspectiveCamera.rst
浏览文件 @
7fd996a8
...
...
@@ -57,7 +57,7 @@ PerspectiveCamera - Camera with perspective projection
.. function:: PerspectiveCamera.updateProjectionMatrix()
Update
d
camera's projection matrix. Must be called after change of parameters.
Update
s
camera's projection matrix. Must be called after change of parameters.
.. function:: PerspectiveCamera.setLens ( focalLength, frameSize )
...
...
docs/api/core/Color.rst
浏览文件 @
7fd996a8
...
...
@@ -9,6 +9,8 @@ Color - Represents a color
Represents a color
See also :class:`ColorUtils`
:param integer hex: Hex value to intialize the color
...
...
@@ -18,97 +20,112 @@ Color - Represents a color
.. attribute:: Color.r
Red channel (float between 0 and 1)
Red channel (float between 0 and 1)
(default ``1``)
.. attribute:: Color.g
Green channel (float between 0 and 1)
Green channel (float between 0 and 1)
(default ``1``)
.. attribute:: Color.b
Blue channel (float between 0 and 1)
Blue channel (float between 0 and 1)
(default ``1``)
.. ...............................................................................
.. rubric:: Methods
.. ...............................................................................
.. function:: Color.convertGammaToLinear()
Converts this color from gamma color to linear color
.. function:: Color.clone()
.. function:: Color.convertLinearToGamma()
Clones this color
Converts this color from linear color to gamma color
:returns: New instance identical to this color
:rtype: :class:`Color`
.. function:: Color.copy(
color
)
.. function:: Color.copy(
color
)
Copies
the given color
into this color
Copies
given ``color``
into this color
:param Color color: Color to copy
:returns: This color
:rtype: :class:`Color`
.. function:: Color.copyGammaToLinear(
color
)
.. function:: Color.copyGammaToLinear(
color
)
C
reates a gamma color from a linear color
C
opies given ``color`` into this color, making conversion from gamma to linear color space
:param Color color: Color to copy
:returns:
Linear
color
:rtype:
Color
:returns:
This
color
:rtype:
:class:`Color`
.. function:: Color.copyLinearToGamma(color)
C
reates a linear color from a gamma color
C
opies given ``color`` into this color, making conversion from linear to gamma color space
:param Color color: Color to copy
:returns: Gamma color
:rtype: Color
:returns: This color
:rtype: :class:`Color`
.. function:: Color.convertGammaToLinear()
Converts this color from gamma to linear color space
:returns: This color
:rtype: :class:`Color`
.. function:: Color.convertLinearToGamma()
.. function:: Color.setRGB(r, g, b)
Converts this color from linear to gamma color space
Sets the RGB value of this color
:returns: This color
:rtype: :class:`Color`
.. function:: Color.setRGB( r, g, b )
Sets this color from RGB values
:param float r: Red channel value (between 0 and 1)
:param float g: Green channel value (between 0 and 1)
:param float b: Blue channel value (between 0 and 1)
:returns: This color
:rtype: :class:`Color`
.. function:: Color.setHSV( h, s, v )
.. function:: Color.setHSV(h, s, v)
Sets this color from HSV values.
Sets the HSV value of this color. Based on MochiKit implementation by
Bob Ippolito.
Based on MochiKit implementation by Bob Ippolito.
:param float h: Hue channel (between 0 and 1)
:param float s: Saturation channel (between 0 and 1)
:param float v: Value channel (between 0 and 1)
:returns: This color
:rtype: :class:`Color`
.. function:: Color.setHex(
hex
)
.. function:: Color.setHex(
hex
)
Sets th
e value of th
is color from a hex value
Sets this color from a hex value
:param integer hex: Value of the color in hex
:param integer hex: Value of the color in hex (between ``0x000000`` and ``0xffffff``)
:returns: This color
:rtype: :class:`Color`
.. function:: Color.getHex()
Gets the value of this color in hex
:returns:
The c
olor value in hex
:returns:
C
olor value in hex
:rtype: integer
.. function:: Color.getContextStyle()
Returns the value of this color in CSS context style.
Example: ``rgb(
r,g,b
)``
Example: ``rgb(
r, g, b
)``
:returns:
A
CSS-formatted color value
:returns: CSS-formatted color value
:rtype: string
.. function:: Color.clone()
Clones this color
:returns: New instance identical to this color
:rtype: Color
.. ...............................................................................
.. rubric:: Example
...
...
@@ -117,8 +134,11 @@ Color - Represents a color
::
var colors = [];
for ( i = 0; i < 5000; i ++ ) {
x = 2000 * Math.random() - 1000;
colors[ i ] = new THREE.Color( 0xffffff );
colors[ i ].setHSV( (x+1000)/2000, 1.0, 1.0 );
colors[ i ].setHSV( ( x + 1000 ) / 2000, 1.0, 1.0 );
}
docs/api/core/Geometry.rst
浏览文件 @
7fd996a8
...
...
@@ -133,27 +133,27 @@ Geometry - Base class for geometries
.. function:: Geometry.applyMatrix( matrix )
Bake matrix transform directly into vertex coordinates
Bake
s
matrix transform directly into vertex coordinates
:param Matrix4 matrix: matrix transform
.. function:: Geometry.computeCentroids()
Compute centroids for all faces
Compute
s
centroids for all faces
.. function:: Geometry.computeFaceNormals()
Compute face normals
Compute
s
face normals
.. function:: Geometry.computeVertexNormals()
Compute vertex normals by averaging face normals.
Compute
s
vertex normals by averaging face normals.
Face normals must be existing / computed beforehand.
.. function:: Geometry.computeTangents()
Compute vertex tangents
Compute
s
vertex tangents
Based on http://www.terathon.com/code/tangent.html
...
...
@@ -161,11 +161,11 @@ Geometry - Base class for geometries
.. function:: Geometry.computeBoundingBox()
Compute bounding box of the geometry, updating :attr:`Geometry.boundingBox` attribute.
Compute
s
bounding box of the geometry, updating :attr:`Geometry.boundingBox` attribute.
.. function:: Geometry.computeBoundingSphere()
Compute bounding sphere of the geometry, updating :attr:`Geometry.boundingSphere` attribute.
Compute
s
bounding sphere of the geometry, updating :attr:`Geometry.boundingSphere` attribute.
.. function:: Geometry.mergeVertices()
...
...
docs/api/core/Math.rst
浏览文件 @
7fd996a8
...
...
@@ -44,17 +44,17 @@ Math - Math utility functions
:returns: Random float from <0, 1> with 16 bits of randomness
:rtype: float
.. function:: Math.randInt(
low, high
)
.. function:: Math.randInt(
low, high
)
:returns: Random integer from *low* to *high* interval
:rtype: integer
.. function:: Math.randFloat(
low, high
)
.. function:: Math.randFloat(
low, high
)
:returns: Random float from *low* to *high* interval
:rtype: float
.. function:: Math.randFloatSpread(
range
)
.. function:: Math.randFloatSpread(
range
)
:returns: Random float from -range/2 to range/2 interval
:rtype: float
docs/api/core/Object3D.rst
浏览文件 @
7fd996a8
...
...
@@ -175,50 +175,50 @@ Object3D - Base class for scene graph objects
.. function:: Object3D.translate ( distance, axis )
Translate object along arbitrary axis by distance
Translate
s
object along arbitrary axis by distance
:param float distance: distance
:param Vector3 axis: translation direction
.. function:: Object3D.translateX ( distance )
Translate object along X-axis by distance
Translate
s
object along X-axis by distance
:param float distance: distance
.. function:: Object3D.translateY ( distance )
Translate object along Y-axis by distance
Translate
s
object along Y-axis by distance
:param float distance: distance
.. function:: Object3D.translateZ ( distance )
Translate object along Z-axis by distance
Translate
s
object along Z-axis by distance
:param float distance: distance
.. function:: Object3D.lookAt ( vector )
Rotate object to face point in space
Rotate
s
object to face point in space
:param Vector3 vector: vector
.. function:: Object3D.add ( object )
Add child object to this object
Add
s
child object to this object
:param Object3D object: child
.. function:: Object3D.remove ( object )
Remove child object from this object
Remove
s
child object from this object
:param Object3D object: child
.. function:: Object3D.getChildByName ( name, doRecurse )
Get
first child with name matching the argument, search whole subgraph recursively if flag is set
.
Get
s first child with name matching the argument (searches whole subgraph recursively if flag is set)
.
:param string name: child name
:param boolean doRecurse: recurse flag
...
...
@@ -227,11 +227,11 @@ Object3D - Base class for scene graph objects
.. function:: Object3D.updateMatrix ( )
Update local transform
Update
s
local transform
.. function:: Object3D.updateMatrixWorld ( force )
Update global transform of the object and its children
Update
s
global transform of the object and its children
.. ...............................................................................
...
...
docs/api/core/Vector2.rst
浏览文件 @
7fd996a8
Vector2 - 2D vector
-------------------
.. ...............................................................................
.. rubric:: Constructor
.. ...............................................................................
.. class:: Vector2()
.. class:: Vector2(
x, y
)
2D vector
:param float x: x-coordinate
:param float y: y-coordinate
.. ...............................................................................
.. rubric:: Attributes
.. ...............................................................................
.. attribute:: Vector2.x
.. attribute:: Vector2.y
.. ...............................................................................
.. rubric:: Methods
.. ...............................................................................
.. function:: Vector2.clone( )
Clones this vector
:returns: New instance identical to this vector
:rtype: :class:`Vector2`
.. function:: Vector2.set( x, y )
Sets value of this vector
:param float x: x-coordinate
:param float y: y-coordinate
:returns: This vector
:rtype: :class:`Vector2`
.. function:: Vector2.copy( v )
Copies value of ``v`` to this vector
:param Vector2 v: source vector
:returns: This vector
:rtype: :class:`Vector2`
.. function:: Vector2.add( v1, v2 )
Sets this vector to ``v1 + v2``
:param Vector2 v1: source vector 1
:param Vector2 v2: source vector 2
:returns: This vector
:rtype: :class:`Vector2`
.. function:: Vector2.addSelf( v )
Adds ``v`` to this vector
:param Vector2 v: source vector
:returns: This vector
:rtype: :class:`Vector2`
.. function:: Vector2.sub( v1, v2 )
Sets this vector to ``v1 - v2``
:param Vector2 v1: source vector 1
:param Vector2 v2: source vector 2
.. function:: Vector2.subSelf( v )
Subtracts ``v`` from this vector
:param Vector2 v: source vector
:returns: This vector
:rtype: :class:`Vector2`
.. function:: Vector2.multiplyScalar( s )
Multiplies this vector by scalar ``s``
:param float s: scalar
:returns: This vector
:rtype: :class:`Vector2`
.. function:: Vector2.divideScalar( s )
Divides this vector by scalar ``s``
Set vector to ``( 0, 0 )`` if ``s == 0``
:param float s: scalar
:returns: This vector
:rtype: :class:`Vector2`
.. function:: Vector2.negate( )
Inverts this vector
:returns: This vector
:rtype: :class:`Vector2`
.. function:: Vector2.dot( v )
Computes dot product of this vector and ``v``
:returns: dot product
:rtype: float
.. function:: Vector2.lengthSq( )
Computes squared length of this vector
:returns: squared length
:rtype: float
.. function:: Vector2.length( )
Computes length of this vector
:returns: length
:rtype: float
.. function:: Vector2.normalize( )
Normalizes this vector
:returns: This vector
:rtype: :class:`Vector2`
.. function:: Vector2.distanceTo( v )
Computes distance of this vector to ``v``
:returns: squared distance
:rtype: float
.. function:: Vector2.distanceToSquared( v )
Computes squared distance of this vector to ``v``
:returns: squared distance
:rtype: float
.. function:: Vector2.setLength( l )
Normalizes this vector and multiplies it by ``l``
:returns: This vector
:rtype: :class:`Vector2`
.. function:: Vector2.equals( v )
Checks for strict equality of this vector and ``v``
:returns: true if this vector equals ``v``
:rtype: boolean
.. function:: Vector2.isZero( )
Checks if length of this vector is within small epsilon (``0.0001``)
:returns: true if this vector is zero
:rtype: boolean
.. ...............................................................................
.. rubric:: Example
.. ...............................................................................
::
.. rubric:: Method
var a = new THREE.Vector2( 0, 1 );
var b = new THREE.Vector2( 1, 0 );
.. rubric:: Example(s)
\ No newline at end of file
var d = a.distanceTo( b );
docs/api/core/Vector3.rst
浏览文件 @
7fd996a8
Vector3 - 3D vector
-------------------
.. ...............................................................................
.. rubric:: Constructor
.. ...............................................................................
.. class:: Vector3()
3D vector
:param float x: x-coordinate
:param float y: y-coordinate
:param float z: z-coordinate
.. ...............................................................................
.. rubric:: Attributes
.. ...............................................................................
.. attribute:: Vector3.x
.. attribute:: Vector3.y
.. attribute:: Vector3.z
.. ...............................................................................
.. rubric:: Methods
.. ...............................................................................
.. function:: Vector3.clone( )
Clones this vector
:returns: New instance identical to this vector
:rtype: :class:`Vector3`
.. function:: Vector3.set( x, y, z )
Sets value of this vector
:param float x: x-coordinate
:param float y: y-coordinate
:param float z: z-coordinate
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.setX( x )
Sets x-value of this vector
:param float x: x-coordinate
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.setY( y )
Sets y-value of this vector
:param float y: y-coordinate
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.setZ( z )
Sets z-value of this vector
:param float z: z-coordinate
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.copy( v )
Copies value of ``v`` to this vector
:param Vector3 v: source vector
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.add( v1, v2 )
Sets this vector to ``v1 + v2``
:param Vector3 v1: source vector 1
:param Vector3 v2: source vector 2
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.addSelf( v )
Adds ``v`` to this vector
:param Vector3 v: source vector
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.sub( v1, v2 )
Sets this vector to ``v1 - v2``
:param Vector3 v1: source vector 1
:param Vector3 v2: source vector 2
.. function:: Vector3.subSelf( v )
Subtracts ``v`` from this vector
:param Vector3 v: source vector
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.multiplyScalar( s )
Multiplies this vector by scalar ``s``
:param float s: scalar
:returns: This vector
:rtype: :class:`Vector2`
.. function:: Vector3.divideScalar( s )
Divides this vector by scalar ``s``
Set vector to ``( 0, 0, 0 )`` if ``s == 0``
:param float s: scalar
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.negate( )
Inverts this vector
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.dot( v )
Computes dot product of this vector and ``v``
:param Vector3 v: vector
:returns: dot product
:rtype: float
.. function:: Vector3.lengthSq( )
Computes squared length of this vector
:returns: squared length
:rtype: float
.. function:: Vector3.length( )
Computes length of this vector
:returns: length
:rtype: float
.. function:: Vector3.lengthManhattan( )
Computes Manhattan length of this vector
http://en.wikipedia.org/wiki/Taxicab_geometry
:returns: length
:rtype: float
.. function:: Vector3.normalize( )
Normalizes this vector
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.distanceTo( v )
Computes distance of this vector to ``v``
:param Vector3 v: vector
:returns: squared distance
:rtype: float
.. function:: Vector3.distanceToSquared( v )
Computes squared distance of this vector to ``v``
:param Vector3 v: vector
:returns: squared distance
:rtype: float
.. function:: Vector3.setLength( l )
Normalizes this vector and multiplies it by ``l``
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.cross( a, b )
Sets this vector to cross product of ``a`` and ``b``
:param Vector3 a: vector
:param Vector3 b: vector
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.crossSelf( v )
Sets this vector to cross product of itself and ``v``
:param Vector3 v: vector
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.setPositionFromMatrix( m )
Sets this vector extracting position from matrix transform
:param Matrix4 m: matrix
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.setRotationFromMatrix( m )
Sets this vector extracting Euler angles rotation from matrix transform
:param Matrix4 m: matrix
:returns: This vector
:rtype: :class:`Vector3`
.. function:: Vector3.equals( v )
Checks for strict equality of this vector and ``v``
:param Vector3 v: vector
:returns: true if this vector equals ``v``
:rtype: boolean
.. function:: Vector3.isZero( )
Checks if length of this vector is within small epsilon (``0.0001``)
:returns: true if this vector is zero
:rtype: boolean
.. ...............................................................................
.. rubric:: Example
.. ...............................................................................
::
.. rubric:: Method
var a = new THREE.Vector3( 1, 0, 0 );
var b = new THREE.Vector3( 0, 1, 0 );
.. rubric:: Example(s)
\ No newline at end of file
var c = new THREE.Vector3();
c.cross( a, b );
src/core/Vector2.js
浏览文件 @
7fd996a8
...
...
@@ -158,6 +158,12 @@ THREE.Vector2.prototype = {
return
(
(
v
.
x
===
this
.
x
)
&&
(
v
.
y
===
this
.
y
)
);
},
isZero
:
function
()
{
return
(
this
.
lengthSq
()
<
0.0001
/* almostZero */
);
}
};
src/core/Vector3.js
浏览文件 @
7fd996a8
...
...
@@ -207,10 +207,7 @@ THREE.Vector3.prototype = {
lengthManhattan
:
function
()
{
// correct version
// return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );
return
this
.
x
+
this
.
y
+
this
.
z
;
return
Math
.
abs
(
this
.
x
)
+
Math
.
abs
(
this
.
y
)
+
Math
.
abs
(
this
.
z
);
},
...
...
@@ -269,6 +266,8 @@ THREE.Vector3.prototype = {
this
.
y
=
m
.
n24
;
this
.
z
=
m
.
n34
;
return
this
;
},
setRotationFromMatrix
:
function
(
m
)
{
...
...
@@ -289,6 +288,14 @@ THREE.Vector3.prototype = {
}
return
this
;
},
equals
:
function
(
v
)
{
return
(
(
v
.
x
===
this
.
x
)
&&
(
v
.
y
===
this
.
y
)
&&
(
v
.
z
===
this
.
z
)
);
},
isZero
:
function
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录