Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
车家大少爷
three.js
提交
bb86a3a4
T
three.js
项目概览
车家大少爷
/
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,发现更多精彩内容 >>
提交
bb86a3a4
编写于
8月 16, 2013
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Updated builds.
上级
c57ac022
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
10 addition
and
10 deletion
+10
-10
build/three.js
build/three.js
+5
-5
build/three.min.js
build/three.min.js
+5
-5
未找到文件。
build/three.js
浏览文件 @
bb86a3a4
...
...
@@ -32873,7 +32873,7 @@ THREE.PlaneGeometry = function ( width, height, widthSegments, heightSegments )
face.vertexNormals.push( normal.clone(), normal.clone(), normal.clone() );
this.faces.push( face );
this.faceVertexUvs[ 0 ].push( [ uvb
, uvc, uvd
] );
this.faceVertexUvs[ 0 ].push( [ uvb
.clone(), uvc, uvd.clone()
] );
}
...
...
@@ -33041,7 +33041,7 @@ THREE.SphereGeometry = function ( radius, widthSegments, heightSegments, phiStar
this.faceVertexUvs[ 0 ].push( [ uv1, uv2, uv4 ] );
this.faces.push( new THREE.Face3( v2, v3, v4, [ n2, n3, n4 ] ) );
this.faceVertexUvs[ 0 ].push( [ uv2
, uv3, uv4
] );
this.faceVertexUvs[ 0 ].push( [ uv2
.clone(), uv3, uv4.clone()
] );
}
...
...
@@ -33276,7 +33276,7 @@ THREE.TorusKnotGeometry = function ( radius, tube, radialSegments, tubularSegmen
this.faceVertexUvs[ 0 ].push( [ uva, uvb, uvd ] );
this.faces.push( new THREE.Face3( b, c, d ) );
this.faceVertexUvs[ 0 ].push( [ uvb
, uvc, uvd
] );
this.faceVertexUvs[ 0 ].push( [ uvb
.clone(), uvc, uvd.clone()
] );
}
}
...
...
@@ -33420,7 +33420,7 @@ THREE.TubeGeometry = function( path, segments, radius, radialSegments, closed )
this.faceVertexUvs[ 0 ].push( [ uva, uvb, uvd ] );
this.faces.push( new THREE.Face3( b, c, d ) );
this.faceVertexUvs[ 0 ].push( [ uvb
, uvc, uvd
] );
this.faceVertexUvs[ 0 ].push( [ uvb
.clone(), uvc, uvd.clone()
] );
}
}
...
...
@@ -33930,7 +33930,7 @@ THREE.ParametricGeometry = function ( func, slices, stacks ) {
uvs.push( [ uva, uvb, uvd ] );
faces.push( new THREE.Face3( b, c, d ) );
uvs.push( [ uvb
, uvc, uvd
] );
uvs.push( [ uvb
.clone(), uvc, uvd.clone()
] );
}
...
...
build/three.min.js
浏览文件 @
bb86a3a4
...
...
@@ -620,25 +620,25 @@ THREE.ExtrudeGeometry.__v5=new THREE.Vector2;THREE.ExtrudeGeometry.__v6=new THRE
THREE
.
ShapeGeometry
.
prototype
.
addShape
=
function
(
a
,
b
){
void
0
===
b
&&
(
b
=
{});
var
c
=
b
.
material
,
d
=
void
0
===
b
.
UVGenerator
?
THREE
.
ExtrudeGeometry
.
WorldUVGenerator
:
b
.
UVGenerator
,
e
,
f
,
h
,
g
=
this
.
vertices
.
length
;
e
=
a
.
extractPoints
(
void
0
!==
b
.
curveSegments
?
b
.
curveSegments
:
12
);
var
i
=
e
.
shape
,
k
=
e
.
holes
;
if
(
!
THREE
.
Shape
.
Utils
.
isClockWise
(
i
)){
i
=
i
.
reverse
();
e
=
0
;
for
(
f
=
k
.
length
;
e
<
f
;
e
++
)
h
=
k
[
e
],
THREE
.
Shape
.
Utils
.
isClockWise
(
h
)
&&
(
k
[
e
]
=
h
.
reverse
())}
var
m
=
THREE
.
Shape
.
Utils
.
triangulateShape
(
i
,
k
);
e
=
0
;
for
(
f
=
k
.
length
;
e
<
f
;
e
++
)
h
=
k
[
e
],
i
=
i
.
concat
(
h
);
k
=
i
.
length
;
f
=
m
.
length
;
for
(
e
=
0
;
e
<
k
;
e
++
)
h
=
i
[
e
],
this
.
vertices
.
push
(
new
THREE
.
Vector3
(
h
.
x
,
h
.
y
,
0
));
for
(
e
=
0
;
e
<
f
;
e
++
)
k
=
m
[
e
],
i
=
k
[
0
]
+
g
,
h
=
k
[
1
]
+
g
,
k
=
k
[
2
]
+
g
,
this
.
faces
.
push
(
new
THREE
.
Face3
(
i
,
h
,
k
,
null
,
null
,
c
)),
this
.
faceVertexUvs
[
0
].
push
(
d
.
generateBottomUV
(
this
,
a
,
b
,
i
,
h
,
k
))};
THREE
.
LatheGeometry
=
function
(
a
,
b
,
c
,
d
){
THREE
.
Geometry
.
call
(
this
);
for
(
var
b
=
b
||
12
,
c
=
c
||
0
,
d
=
d
||
2
*
Math
.
PI
,
e
=
1
/
(
a
.
length
-
1
),
f
=
1
/
b
,
h
=
0
,
g
=
b
;
h
<=
g
;
h
++
)
for
(
var
i
=
c
+
h
*
f
*
d
,
k
=
Math
.
cos
(
i
),
m
=
Math
.
sin
(
i
),
i
=
0
,
l
=
a
.
length
;
i
<
l
;
i
++
){
var
n
=
a
[
i
],
t
=
new
THREE
.
Vector3
;
t
.
x
=
k
*
n
.
x
-
m
*
n
.
y
;
t
.
y
=
m
*
n
.
x
+
k
*
n
.
y
;
t
.
z
=
n
.
z
;
this
.
vertices
.
push
(
t
)}
c
=
a
.
length
;
h
=
0
;
for
(
g
=
b
;
h
<
g
;
h
++
){
i
=
0
;
for
(
l
=
a
.
length
-
1
;
i
<
l
;
i
++
){
var
b
=
m
=
i
+
c
*
h
,
d
=
m
+
c
,
k
=
m
+
1
+
c
,
m
=
m
+
1
,
n
=
h
*
f
,
t
=
i
*
e
,
q
=
n
+
f
,
p
=
t
+
e
;
this
.
faces
.
push
(
new
THREE
.
Face3
(
b
,
d
,
m
));
this
.
faceVertexUvs
[
0
].
push
([
new
THREE
.
Vector2
(
n
,
t
),
new
THREE
.
Vector2
(
q
,
t
),
new
THREE
.
Vector2
(
n
,
p
)]);
this
.
faces
.
push
(
new
THREE
.
Face3
(
d
,
k
,
m
));
this
.
faceVertexUvs
[
0
].
push
([
new
THREE
.
Vector2
(
q
,
t
),
new
THREE
.
Vector2
(
q
,
p
),
new
THREE
.
Vector2
(
n
,
p
)])}}
this
.
mergeVertices
();
this
.
computeCentroids
();
this
.
computeFaceNormals
();
this
.
computeVertexNormals
()};
THREE
.
LatheGeometry
.
prototype
=
Object
.
create
(
THREE
.
Geometry
.
prototype
);
THREE
.
PlaneGeometry
=
function
(
a
,
b
,
c
,
d
){
THREE
.
Geometry
.
call
(
this
);
this
.
width
=
a
;
this
.
height
=
b
;
this
.
widthSegments
=
c
||
1
;
this
.
heightSegments
=
d
||
1
;
for
(
var
e
=
a
/
2
,
f
=
b
/
2
,
c
=
this
.
widthSegments
,
d
=
this
.
heightSegments
,
h
=
c
+
1
,
g
=
d
+
1
,
i
=
this
.
width
/
c
,
k
=
this
.
height
/
d
,
m
=
new
THREE
.
Vector3
(
0
,
0
,
1
),
a
=
0
;
a
<
g
;
a
++
)
for
(
b
=
0
;
b
<
h
;
b
++
)
this
.
vertices
.
push
(
new
THREE
.
Vector3
(
b
*
i
-
e
,
-
(
a
*
k
-
f
),
0
));
for
(
a
=
0
;
a
<
d
;
a
++
)
for
(
b
=
0
;
b
<
c
;
b
++
){
var
l
=
b
+
h
*
a
,
e
=
b
+
h
*
(
a
+
1
),
f
=
b
+
1
+
h
*
(
a
+
1
),
g
=
b
+
1
+
h
*
a
,
i
=
new
THREE
.
Vector2
(
b
/
c
,
1
-
a
/
d
),
k
=
new
THREE
.
Vector2
(
b
/
c
,
1
-
(
a
+
1
)
/
d),n=new THREE.Vector2((b+1)/c,1-(a+1)/d),t=new THREE.Vector2((b+1)/c,1-a/d),l=new THREE.Face3(l,e,g);l.normal.copy(m);l.vertexNormals.push(m.clone(),m.clone(),m.clone());this.faces.push(l);this.faceVertexUvs[0].push([i,k,t]);l=new THREE.Face3(e,f,g);l.normal.copy(m);l.vertexNormals.push(m.clone(),m.clone(),m.clone());this.faces.push(l);this.faceVertexUvs[0].push([k
,n,t
])}this.computeCentroids()};THREE.PlaneGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.RingGeometry=function(a,b,c,d,e,f){THREE.Geometry.call(this);for(var a=a||0,b=b||50,e=void 0!==e?e:0,f=void 0!==f?f:2*Math.PI,c=void 0!==c?Math.max(3,c):8,d=void 0!==d?Math.max(3,d):8,h=[],g=a,i=(b-a)/d,a=0;a<=d;a++){for(b=0;b<=c;b++){var k=new THREE.Vector3,m=e+b/c*f;k.x=g*Math.cos(m);k.y=g*Math.sin(m);this.vertices.push(k);h.push(new THREE.Vector2((k.x/g+1)/2,-(k.y/g+1)/2+1))}g+=i}e=new THREE.Vector3(0,0,1);for(a=0;a<d;a++){f=a*c;for(b=0;b<=c;b++){var m=b+f,i=m+a,k=m+c+a,l=m+c+1+a;this.faces.push(new THREE.Face3(i,
d
),
n
=
new
THREE
.
Vector2
((
b
+
1
)
/
c
,
1
-
(
a
+
1
)
/
d
),
t
=
new
THREE
.
Vector2
((
b
+
1
)
/
c
,
1
-
a
/
d
),
l
=
new
THREE
.
Face3
(
l
,
e
,
g
);
l
.
normal
.
copy
(
m
);
l
.
vertexNormals
.
push
(
m
.
clone
(),
m
.
clone
(),
m
.
clone
());
this
.
faces
.
push
(
l
);
this
.
faceVertexUvs
[
0
].
push
([
i
,
k
,
t
]);
l
=
new
THREE
.
Face3
(
e
,
f
,
g
);
l
.
normal
.
copy
(
m
);
l
.
vertexNormals
.
push
(
m
.
clone
(),
m
.
clone
(),
m
.
clone
());
this
.
faces
.
push
(
l
);
this
.
faceVertexUvs
[
0
].
push
([
k
.
clone
(),
n
,
t
.
clone
()
])}
this
.
computeCentroids
()};
THREE
.
PlaneGeometry
.
prototype
=
Object
.
create
(
THREE
.
Geometry
.
prototype
);
THREE
.
RingGeometry
=
function
(
a
,
b
,
c
,
d
,
e
,
f
){
THREE
.
Geometry
.
call
(
this
);
for
(
var
a
=
a
||
0
,
b
=
b
||
50
,
e
=
void
0
!==
e
?
e
:
0
,
f
=
void
0
!==
f
?
f
:
2
*
Math
.
PI
,
c
=
void
0
!==
c
?
Math
.
max
(
3
,
c
):
8
,
d
=
void
0
!==
d
?
Math
.
max
(
3
,
d
):
8
,
h
=
[],
g
=
a
,
i
=
(
b
-
a
)
/
d
,
a
=
0
;
a
<=
d
;
a
++
){
for
(
b
=
0
;
b
<=
c
;
b
++
){
var
k
=
new
THREE
.
Vector3
,
m
=
e
+
b
/
c
*
f
;
k
.
x
=
g
*
Math
.
cos
(
m
);
k
.
y
=
g
*
Math
.
sin
(
m
);
this
.
vertices
.
push
(
k
);
h
.
push
(
new
THREE
.
Vector2
((
k
.
x
/
g
+
1
)
/
2
,
-
(
k
.
y
/
g
+
1
)
/
2
+
1
))}
g
+=
i
}
e
=
new
THREE
.
Vector3
(
0
,
0
,
1
);
for
(
a
=
0
;
a
<
d
;
a
++
){
f
=
a
*
c
;
for
(
b
=
0
;
b
<=
c
;
b
++
){
var
m
=
b
+
f
,
i
=
m
+
a
,
k
=
m
+
c
+
a
,
l
=
m
+
c
+
1
+
a
;
this
.
faces
.
push
(
new
THREE
.
Face3
(
i
,
k
,
l
,[
e
,
e
,
e
]));
this
.
faceVertexUvs
[
0
].
push
([
h
[
i
],
h
[
k
],
h
[
l
]]);
i
=
m
+
a
;
k
=
m
+
c
+
1
+
a
;
l
=
m
+
1
+
a
;
this
.
faces
.
push
(
new
THREE
.
Face3
(
i
,
k
,
l
,[
e
,
e
,
e
]));
this
.
faceVertexUvs
[
0
].
push
([
h
[
i
],
h
[
k
],
h
[
l
]])}}
this
.
computeCentroids
();
this
.
computeFaceNormals
();
this
.
boundingSphere
=
new
THREE
.
Sphere
(
new
THREE
.
Vector3
,
g
)};
THREE
.
RingGeometry
.
prototype
=
Object
.
create
(
THREE
.
Geometry
.
prototype
);
THREE
.
SphereGeometry
=
function
(
a
,
b
,
c
,
d
,
e
,
f
,
h
){
THREE
.
Geometry
.
call
(
this
);
this
.
radius
=
a
=
a
||
50
;
this
.
widthSegments
=
b
=
Math
.
max
(
3
,
Math
.
floor
(
b
)
||
8
);
this
.
heightSegments
=
c
=
Math
.
max
(
2
,
Math
.
floor
(
c
)
||
6
);
this
.
phiStart
=
d
=
void
0
!==
d
?
d
:
0
;
this
.
phiLength
=
e
=
void
0
!==
e
?
e
:
2
*
Math
.
PI
;
this
.
thetaStart
=
f
=
void
0
!==
f
?
f
:
0
;
this
.
thetaLength
=
h
=
void
0
!==
h
?
h
:
Math
.
PI
;
var
g
,
i
,
k
=
[],
m
=
[];
for
(
i
=
0
;
i
<=
c
;
i
++
){
var
l
=
[],
n
=
[];
for
(
g
=
0
;
g
<=
b
;
g
++
){
var
t
=
g
/
b
,
q
=
i
/
c
,
p
=
new
THREE
.
Vector3
;
p
.
x
=-
a
*
Math
.
cos
(
d
+
t
*
e
)
*
Math
.
sin
(
f
+
q
*
h
);
p
.
y
=
a
*
Math
.
cos
(
f
+
q
*
h
);
p
.
z
=
a
*
Math
.
sin
(
d
+
t
*
e
)
*
Math
.
sin
(
f
+
q
*
h
);
this
.
vertices
.
push
(
p
);
l
.
push
(
this
.
vertices
.
length
-
1
);
n
.
push
(
new
THREE
.
Vector2
(
t
,
1
-
q
))}
k
.
push
(
l
);
m
.
push
(
n
)}
for
(
i
=
0
;
i
<
this
.
heightSegments
;
i
++
)
for
(
g
=
0
;
g
<
this
.
widthSegments
;
g
++
){
var
b
=
k
[
i
][
g
+
1
],
c
=
k
[
i
][
g
],
d
=
k
[
i
+
1
][
g
],
e
=
k
[
i
+
1
][
g
+
1
],
f
=
this
.
vertices
[
b
].
clone
().
normalize
(),
h
=
this
.
vertices
[
c
].
clone
().
normalize
(),
l
=
this
.
vertices
[
d
].
clone
().
normalize
(),
n
=
this
.
vertices
[
e
].
clone
().
normalize
(),
t
=
m
[
i
][
g
+
1
].
clone
(),
q
=
m
[
i
][
g
].
clone
(),
p
=
m
[
i
+
1
][
g
].
clone
(),
r
=
m
[
i
+
1
][
g
+
1
].
clone
();
Math
.
abs
(
this
.
vertices
[
b
].
y
)
===
this.radius?(this.faces.push(new THREE.Face3(b,d,e,[f,l,n])),this.faceVertexUvs[0].push([t,p,r])):Math.abs(this.vertices[d].y)===this.radius?(this.faces.push(new THREE.Face3(b,c,d,[f,h,l])),this.faceVertexUvs[0].push([t,q,p])):(this.faces.push(new THREE.Face3(b,c,e,[f,h,n])),this.faceVertexUvs[0].push([t,q,r]),this.faces.push(new THREE.Face3(c,d,e,[h,l,n])),this.faceVertexUvs[0].push([q
,p,r
]))}this.computeCentroids();this.computeFaceNormals();this.boundingSphere=new THREE.Sphere(new THREE.Vector3,
this
.
radius
?(
this
.
faces
.
push
(
new
THREE
.
Face3
(
b
,
d
,
e
,[
f
,
l
,
n
])),
this
.
faceVertexUvs
[
0
].
push
([
t
,
p
,
r
])):
Math
.
abs
(
this
.
vertices
[
d
].
y
)
===
this
.
radius
?(
this
.
faces
.
push
(
new
THREE
.
Face3
(
b
,
c
,
d
,[
f
,
h
,
l
])),
this
.
faceVertexUvs
[
0
].
push
([
t
,
q
,
p
])):(
this
.
faces
.
push
(
new
THREE
.
Face3
(
b
,
c
,
e
,[
f
,
h
,
n
])),
this
.
faceVertexUvs
[
0
].
push
([
t
,
q
,
r
]),
this
.
faces
.
push
(
new
THREE
.
Face3
(
c
,
d
,
e
,[
h
,
l
,
n
])),
this
.
faceVertexUvs
[
0
].
push
([
q
.
clone
(),
p
,
r
.
clone
()
]))}
this
.
computeCentroids
();
this
.
computeFaceNormals
();
this
.
boundingSphere
=
new
THREE
.
Sphere
(
new
THREE
.
Vector3
,
a
)};
THREE
.
SphereGeometry
.
prototype
=
Object
.
create
(
THREE
.
Geometry
.
prototype
);
THREE
.
TextGeometry
=
function
(
a
,
b
){
var
b
=
b
||
{},
c
=
THREE
.
FontUtils
.
generateShapes
(
a
,
b
);
b
.
amount
=
void
0
!==
b
.
height
?
b
.
height
:
50
;
void
0
===
b
.
bevelThickness
&&
(
b
.
bevelThickness
=
10
);
void
0
===
b
.
bevelSize
&&
(
b
.
bevelSize
=
8
);
void
0
===
b
.
bevelEnabled
&&
(
b
.
bevelEnabled
=!
1
);
THREE
.
ExtrudeGeometry
.
call
(
this
,
c
,
b
)};
THREE
.
TextGeometry
.
prototype
=
Object
.
create
(
THREE
.
ExtrudeGeometry
.
prototype
);
THREE
.
TorusGeometry
=
function
(
a
,
b
,
c
,
d
,
e
){
THREE
.
Geometry
.
call
(
this
);
this
.
radius
=
a
||
100
;
this
.
tube
=
b
||
40
;
this
.
radialSegments
=
c
||
8
;
this
.
tubularSegments
=
d
||
6
;
this
.
arc
=
e
||
2
*
Math
.
PI
;
e
=
new
THREE
.
Vector3
;
a
=
[];
b
=
[];
for
(
c
=
0
;
c
<=
this
.
radialSegments
;
c
++
)
for
(
d
=
0
;
d
<=
this
.
tubularSegments
;
d
++
){
var
f
=
d
/
this
.
tubularSegments
*
this
.
arc
,
h
=
2
*
c
/
this
.
radialSegments
*
Math
.
PI
;
e
.
x
=
this
.
radius
*
Math
.
cos
(
f
);
e
.
y
=
this
.
radius
*
Math
.
sin
(
f
);
var
g
=
new
THREE
.
Vector3
;
g
.
x
=
(
this
.
radius
+
this
.
tube
*
Math
.
cos
(
h
))
*
Math
.
cos
(
f
);
g
.
y
=
(
this
.
radius
+
this
.
tube
*
Math
.
cos
(
h
))
*
Math
.
sin
(
f
);
g
.
z
=
this
.
tube
*
Math
.
sin
(
h
);
this
.
vertices
.
push
(
g
);
a
.
push
(
new
THREE
.
Vector2
(
d
/
this
.
tubularSegments
,
c
/
this
.
radialSegments
));
b
.
push
(
g
.
clone
().
sub
(
e
).
normalize
())}
for
(
c
=
1
;
c
<=
this
.
radialSegments
;
c
++
)
for
(
d
=
1
;
d
<=
this
.
tubularSegments
;
d
++
){
var
e
=
(
this
.
tubularSegments
+
1
)
*
c
+
d
-
1
,
f
=
(
this
.
tubularSegments
+
1
)
*
(
c
-
1
)
+
d
-
1
,
h
=
(
this
.
tubularSegments
+
1
)
*
(
c
-
1
)
+
d
,
g
=
(
this
.
tubularSegments
+
1
)
*
c
+
d
,
i
=
new
THREE
.
Face3
(
e
,
f
,
g
,[
b
[
e
],
b
[
f
],
b
[
g
]]);
i
.
normal
.
add
(
b
[
e
]);
i
.
normal
.
add
(
b
[
f
]);
i
.
normal
.
add
(
b
[
g
]);
i
.
normal
.
normalize
();
this
.
faces
.
push
(
i
);
this
.
faceVertexUvs
[
0
].
push
([
a
[
e
].
clone
(),
a
[
f
].
clone
(),
a
[
g
].
clone
()]);
i
=
new
THREE
.
Face3
(
f
,
h
,
g
,[
b
[
f
],
b
[
h
],
b
[
g
]]);
i
.
normal
.
add
(
b
[
f
]);
i
.
normal
.
add
(
b
[
h
]);
i
.
normal
.
add
(
b
[
g
]);
i
.
normal
.
normalize
();
this
.
faces
.
push
(
i
);
this
.
faceVertexUvs
[
0
].
push
([
a
[
f
].
clone
(),
a
[
h
].
clone
(),
a
[
g
].
clone
()])}
this
.
computeCentroids
()};
THREE
.
TorusGeometry
.
prototype
=
Object
.
create
(
THREE
.
Geometry
.
prototype
);
THREE
.
TorusKnotGeometry
=
function
(
a
,
b
,
c
,
d
,
e
,
f
,
h
){
function
g
(
a
,
b
,
c
,
d
,
e
){
var
f
=
Math
.
cos
(
a
),
g
=
Math
.
sin
(
a
),
a
=
b
/
c
*
a
,
b
=
Math
.
cos
(
a
),
f
=
0.5
*
(
d
*
(
2
+
b
))
*
f
,
g
=
0.5
*
d
*
(
2
+
b
)
*
g
,
d
=
0.5
*
e
*
d
*
Math
.
sin
(
a
);
return
new
THREE
.
Vector3
(
f
,
g
,
d
)}
THREE
.
Geometry
.
call
(
this
);
this
.
radius
=
a
||
100
;
this
.
tube
=
b
||
40
;
this
.
radialSegments
=
c
||
64
;
this
.
tubularSegments
=
d
||
8
;
this
.
p
=
e
||
2
;
this
.
q
=
f
||
3
;
this
.
heightScale
=
h
||
1
;
this
.
grid
=
Array
(
this
.
radialSegments
);
c
=
new
THREE
.
Vector3
;
d
=
new
THREE
.
Vector3
;
e
=
new
THREE
.
Vector3
;
for
(
a
=
0
;
a
<
this
.
radialSegments
;
++
a
){
this
.
grid
[
a
]
=
Array
(
this
.
tubularSegments
);
b
=
2
*
(
a
/
this
.
radialSegments
)
*
this
.
p
*
Math
.
PI
;
f
=
g
(
b
,
this
.
q
,
this
.
p
,
this
.
radius
,
this
.
heightScale
);
b
=
g
(
b
+
0.01
,
this
.
q
,
this
.
p
,
this
.
radius
,
this
.
heightScale
);
c
.
subVectors
(
b
,
f
);
d
.
addVectors
(
b
,
f
);
e
.
crossVectors
(
c
,
d
);
d
.
crossVectors
(
e
,
c
);
e
.
normalize
();
d
.
normalize
();
for
(
b
=
0
;
b
<
this
.
tubularSegments
;
++
b
){
var
i
=
2
*
(
b
/
this
.
tubularSegments
)
*
Math
.
PI
,
h
=-
this
.
tube
*
Math
.
cos
(
i
),
i
=
this
.
tube
*
Math
.
sin
(
i
),
k
=
new
THREE
.
Vector3
;
k
.
x
=
f
.
x
+
h
*
d
.
x
+
i
*
e
.
x
;
k
.
y
=
f
.
y
+
h
*
d
.
y
+
i
*
e
.
y
;
k
.
z
=
f
.
z
+
h
*
d
.
z
+
i
*
e
.
z
;
this
.
grid
[
a
][
b
]
=
this
.
vertices
.
push
(
k
)
-
1
}}
for
(
a
=
0
;
a
<
this
.
radialSegments
;
++
a
)
for
(
b
=
0
;
b
<
this
.
tubularSegments
;
++
b
){
var
e
=
(
a
+
1
)
%
this
.
radialSegments
,
f
=
(
b
+
1
)
%
this
.
tubularSegments
,
c
=
this
.
grid
[
a
][
b
],
d
=
this
.
grid
[
e
][
b
],
e
=
this
.
grid
[
e
][
f
],
f
=
this
.
grid
[
a
][
f
],
h
=
new
THREE
.
Vector2
(
a
/
this
.
radialSegments
,
b
/
this
.
tubularSegments
),
i
=
new
THREE
.
Vector2
((
a
+
1
)
/
this
.
radialSegments
,
b
/
this
.
tubularSegments
),
k
=
new
THREE
.
Vector2
((
a
+
1
)
/
this
.
radialSegments
,(
b
+
1
)
/
this
.
tubularSegments
),
m
=
new
THREE
.
Vector2
(
a
/
this
.
radialSegments
,(
b
+
1
)
/
this
.
tubularSegments
);
this.faces.push(new THREE.Face3(c,d,f));this.faceVertexUvs[0].push([h,i,m]);this.faces.push(new THREE.Face3(d,e,f));this.faceVertexUvs[0].push([i
,k,m
])}this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};THREE.TorusKnotGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.TubeGeometry=function(a,b,c,d,e){THREE.Geometry.call(this);this.path=a;this.segments=b||64;this.radius=c||1;this.radialSegments=d||8;this.closed=e||!1;this.grid=[];var f,h,d=this.segments+1,g,i,k,e=new THREE.Vector3,m,l,b=new THREE.TubeGeometry.FrenetFrames(this.path,this.segments,this.closed);m=b.normals;l=b.binormals;this.tangents=b.tangents;this.normals=m;this.binormals=l;for(b=0;b<d;b++){this.grid[b]=[];c=b/(d-1);k=a.getPointAt(c);f=m[b];h=l[b];for(c=0;c<this.radialSegments;c++)g=2*(c/this.radialSegments)*
this
.
faces
.
push
(
new
THREE
.
Face3
(
c
,
d
,
f
));
this
.
faceVertexUvs
[
0
].
push
([
h
,
i
,
m
]);
this
.
faces
.
push
(
new
THREE
.
Face3
(
d
,
e
,
f
));
this
.
faceVertexUvs
[
0
].
push
([
i
.
clone
(),
k
,
m
.
clone
()
])}
this
.
computeCentroids
();
this
.
computeFaceNormals
();
this
.
computeVertexNormals
()};
THREE
.
TorusKnotGeometry
.
prototype
=
Object
.
create
(
THREE
.
Geometry
.
prototype
);
THREE
.
TubeGeometry
=
function
(
a
,
b
,
c
,
d
,
e
){
THREE
.
Geometry
.
call
(
this
);
this
.
path
=
a
;
this
.
segments
=
b
||
64
;
this
.
radius
=
c
||
1
;
this
.
radialSegments
=
d
||
8
;
this
.
closed
=
e
||!
1
;
this
.
grid
=
[];
var
f
,
h
,
d
=
this
.
segments
+
1
,
g
,
i
,
k
,
e
=
new
THREE
.
Vector3
,
m
,
l
,
b
=
new
THREE
.
TubeGeometry
.
FrenetFrames
(
this
.
path
,
this
.
segments
,
this
.
closed
);
m
=
b
.
normals
;
l
=
b
.
binormals
;
this
.
tangents
=
b
.
tangents
;
this
.
normals
=
m
;
this
.
binormals
=
l
;
for
(
b
=
0
;
b
<
d
;
b
++
){
this
.
grid
[
b
]
=
[];
c
=
b
/
(
d
-
1
);
k
=
a
.
getPointAt
(
c
);
f
=
m
[
b
];
h
=
l
[
b
];
for
(
c
=
0
;
c
<
this
.
radialSegments
;
c
++
)
g
=
2
*
(
c
/
this
.
radialSegments
)
*
Math
.
PI
,
i
=-
this
.
radius
*
Math
.
cos
(
g
),
g
=
this
.
radius
*
Math
.
sin
(
g
),
e
.
copy
(
k
),
e
.
x
+=
i
*
f
.
x
+
g
*
h
.
x
,
e
.
y
+=
i
*
f
.
y
+
g
*
h
.
y
,
e
.
z
+=
i
*
f
.
z
+
g
*
h
.
z
,
this
.
grid
[
b
][
c
]
=
this
.
vertices
.
push
(
new
THREE
.
Vector3
(
e
.
x
,
e
.
y
,
e
.
z
))
-
1
}
for
(
b
=
0
;
b
<
this
.
segments
;
b
++
)
for
(
c
=
0
;
c
<
this
.
radialSegments
;
c
++
)
e
=
this
.
closed
?(
b
+
1
)
%
this
.
segments
:
b
+
1
,
m
=
(
c
+
1
)
%
this
.
radialSegments
,
a
=
this
.
grid
[
b
][
c
],
d
=
this
.
grid
[
e
][
c
],
e
=
this
.
grid
[
e
][
m
],
m
=
this
.
grid
[
b
][
m
],
l
=
new
THREE
.
Vector2
(
b
/
this
.
segments
,
c
/
this
.
radialSegments
),
f
=
new
THREE
.
Vector2
((
b
+
1
)
/
this
.
segments
,
c
/
this
.
radialSegments
),
h=new THREE.Vector2((b+1)/this.segments,(c+1)/this.radialSegments),i=new THREE.Vector2(b/this.segments,(c+1)/this.radialSegments),this.faces.push(new THREE.Face3(a,d,m)),this.faceVertexUvs[0].push([l,f,i]),this.faces.push(new THREE.Face3(d,e,m)),this.faceVertexUvs[0].push([f
,h,i
]);this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};THREE.TubeGeometry.prototype=Object.create(THREE.Geometry.prototype);
h
=
new
THREE
.
Vector2
((
b
+
1
)
/
this
.
segments
,(
c
+
1
)
/
this
.
radialSegments
),
i
=
new
THREE
.
Vector2
(
b
/
this
.
segments
,(
c
+
1
)
/
this
.
radialSegments
),
this
.
faces
.
push
(
new
THREE
.
Face3
(
a
,
d
,
m
)),
this
.
faceVertexUvs
[
0
].
push
([
l
,
f
,
i
]),
this
.
faces
.
push
(
new
THREE
.
Face3
(
d
,
e
,
m
)),
this
.
faceVertexUvs
[
0
].
push
([
f
.
clone
(),
h
,
i
.
clone
()
]);
this
.
computeCentroids
();
this
.
computeFaceNormals
();
this
.
computeVertexNormals
()};
THREE
.
TubeGeometry
.
prototype
=
Object
.
create
(
THREE
.
Geometry
.
prototype
);
THREE
.
TubeGeometry
.
FrenetFrames
=
function
(
a
,
b
,
c
){
new
THREE
.
Vector3
;
var
d
=
new
THREE
.
Vector3
;
new
THREE
.
Vector3
;
var
e
=
[],
f
=
[],
h
=
[],
g
=
new
THREE
.
Vector3
,
i
=
new
THREE
.
Matrix4
,
b
=
b
+
1
,
k
,
m
,
l
;
this
.
tangents
=
e
;
this
.
normals
=
f
;
this
.
binormals
=
h
;
for
(
k
=
0
;
k
<
b
;
k
++
)
m
=
k
/
(
b
-
1
),
e
[
k
]
=
a
.
getTangentAt
(
m
),
e
[
k
].
normalize
();
f
[
0
]
=
new
THREE
.
Vector3
;
h
[
0
]
=
new
THREE
.
Vector3
;
a
=
Number
.
MAX_VALUE
;
k
=
Math
.
abs
(
e
[
0
].
x
);
m
=
Math
.
abs
(
e
[
0
].
y
);
l
=
Math
.
abs
(
e
[
0
].
z
);
k
<=
a
&&
(
a
=
k
,
d
.
set
(
1
,
0
,
0
));
m
<=
a
&&
(
a
=
m
,
d
.
set
(
0
,
1
,
0
));
l
<=
a
&&
d
.
set
(
0
,
0
,
1
);
g
.
crossVectors
(
e
[
0
],
d
).
normalize
();
f
[
0
].
crossVectors
(
e
[
0
],
g
);
h
[
0
].
crossVectors
(
e
[
0
],
f
[
0
]);
for
(
k
=
1
;
k
<
b
;
k
++
)
f
[
k
]
=
f
[
k
-
1
].
clone
(),
h
[
k
]
=
h
[
k
-
1
].
clone
(),
g
.
crossVectors
(
e
[
k
-
1
],
e
[
k
]),
1
E
-
4
<
g
.
length
()
&&
(
g
.
normalize
(),
d
=
Math
.
acos
(
THREE
.
Math
.
clamp
(
e
[
k
-
1
].
dot
(
e
[
k
]),
-
1
,
1
)),
f
[
k
].
applyMatrix4
(
i
.
makeRotationAxis
(
g
,
d
))),
h
[
k
].
crossVectors
(
e
[
k
],
f
[
k
]);
if
(
c
){
d
=
Math
.
acos
(
THREE
.
Math
.
clamp
(
f
[
0
].
dot
(
f
[
b
-
1
]),
-
1
,
1
));
d
/=
b
-
1
;
0
<
e
[
0
].
dot
(
g
.
crossVectors
(
f
[
0
],
f
[
b
-
1
]))
&&
(
d
=-
d
);
for
(
k
=
1
;
k
<
b
;
k
++
)
f
[
k
].
applyMatrix4
(
i
.
makeRotationAxis
(
e
[
k
],
d
*
k
)),
h
[
k
].
crossVectors
(
e
[
k
],
f
[
k
])}};
THREE
.
PolyhedronGeometry
=
function
(
a
,
b
,
c
,
d
){
function
e
(
a
){
var
b
=
a
.
normalize
().
clone
();
b
.
index
=
g
.
vertices
.
push
(
b
)
-
1
;
var
c
=
Math
.
atan2
(
a
.
z
,
-
a
.
x
)
/
2
/
Math
.
PI
+
0.5
,
a
=
Math
.
atan2
(
-
a
.
y
,
Math
.
sqrt
(
a
.
x
*
a
.
x
+
a
.
z
*
a
.
z
))
/
Math
.
PI
+
0.5
;
b
.
uv
=
new
THREE
.
Vector2
(
c
,
1
-
a
);
return
b
}
function
f
(
a
,
b
,
c
){
var
d
=
new
THREE
.
Face3
(
a
.
index
,
b
.
index
,
c
.
index
,[
a
.
clone
(),
b
.
clone
(),
c
.
clone
()]);
d
.
centroid
.
add
(
a
).
add
(
b
).
add
(
c
).
divideScalar
(
3
);
g
.
faces
.
push
(
d
);
d
=
Math
.
atan2
(
d
.
centroid
.
z
,
-
d
.
centroid
.
x
);
g
.
faceVertexUvs
[
0
].
push
([
h
(
a
.
uv
,
a
,
d
),
h
(
b
.
uv
,
b
,
d
),
h
(
c
.
uv
,
c
,
d
)])}
function
h
(
a
,
b
,
c
){
0
>
c
&&
1
===
a
.
x
&&
(
a
=
new
THREE
.
Vector2
(
a
.
x
-
1
,
a
.
y
));
0
===
b
.
x
&&
0
===
b
.
z
&&
(
a
=
new
THREE
.
Vector2
(
c
/
2
/
Math
.
PI
+
0.5
,
a
.
y
));
return
a
.
clone
()}
THREE
.
Geometry
.
call
(
this
);
for
(
var
c
=
c
||
1
,
d
=
d
||
0
,
g
=
this
,
i
=
0
,
k
=
a
.
length
;
i
<
k
;
i
++
)
e
(
new
THREE
.
Vector3
(
a
[
i
][
0
],
a
[
i
][
1
],
a
[
i
][
2
]));
for
(
var
m
=
this
.
vertices
,
a
=
[],
i
=
0
,
k
=
b
.
length
;
i
<
k
;
i
++
){
var
l
=
m
[
b
[
i
][
0
]],
n
=
m
[
b
[
i
][
1
]],
t
=
m
[
b
[
i
][
2
]];
a
[
i
]
=
new
THREE
.
Face3
(
l
.
index
,
n
.
index
,
t
.
index
,[
l
.
clone
(),
n
.
clone
(),
t
.
clone
()])}
i
=
0
;
for
(
k
=
a
.
length
;
i
<
k
;
i
++
){
n
=
a
[
i
];
m
=
d
;
b
=
Math
.
pow
(
2
,
m
);
Math
.
pow
(
4
,
m
);
for
(
var
m
=
e
(
g
.
vertices
[
n
.
a
]),
l
=
e
(
g
.
vertices
[
n
.
b
]),
q
=
e
(
g
.
vertices
[
n
.
c
]),
n
=
[],
t
=
0
;
t
<=
b
;
t
++
){
n
[
t
]
=
[];
for
(
var
p
=
e
(
m
.
clone
().
lerp
(
q
,
t
/
b
)),
r
=
e
(
l
.
clone
().
lerp
(
q
,
t
/
b
)),
s
=
b
-
t
,
u
=
0
;
u
<=
s
;
u
++
)
n
[
t
][
u
]
=
0
==
u
&&
t
==
b
?
p
:
e
(
p
.
clone
().
lerp
(
r
,
u
/
s
))}
for
(
t
=
0
;
t
<
b
;
t
++
)
for
(
u
=
0
;
u
<
2
*
(
b
-
t
)
-
1
;
u
++
)
m
=
Math
.
floor
(
u
/
2
),
0
==
u
%
2
?
f
(
n
[
t
][
m
+
1
],
n
[
t
+
1
][
m
],
n
[
t
][
m
]):
f
(
n
[
t
][
m
+
1
],
n
[
t
+
1
][
m
+
1
],
n
[
t
+
1
][
m
])}
i
=
0
;
for
(
k
=
this
.
faceVertexUvs
[
0
].
length
;
i
<
k
;
i
++
)
d
=
this
.
faceVertexUvs
[
0
][
i
],
a
=
d
[
0
].
x
,
b
=
d
[
1
].
x
,
m
=
d
[
2
].
x
,
l
=
Math
.
max
(
a
,
Math
.
max
(
b
,
m
)),
n
=
Math
.
min
(
a
,
Math
.
min
(
b
,
m
)),
0.9
<
l
&&
0.1
>
n
&&
(
0.2
>
a
&&
(
d
[
0
].
x
+=
1
),
0.2
>
b
&&
(
d
[
1
].
x
+=
1
),
0.2
>
m
&&
(
d
[
2
].
x
+=
1
));
i
=
0
;
for
(
k
=
this
.
vertices
.
length
;
i
<
k
;
i
++
)
this
.
vertices
[
i
].
multiplyScalar
(
c
);
this
.
mergeVertices
();
this
.
computeCentroids
();
this
.
computeFaceNormals
();
this
.
boundingSphere
=
new
THREE
.
Sphere
(
new
THREE
.
Vector3
,
c
)};
THREE
.
PolyhedronGeometry
.
prototype
=
Object
.
create
(
THREE
.
Geometry
.
prototype
);
THREE
.
IcosahedronGeometry
=
function
(
a
,
b
){
this
.
radius
=
a
;
this
.
detail
=
b
;
var
c
=
(
1
+
Math
.
sqrt
(
5
))
/
2
;
THREE
.
PolyhedronGeometry
.
call
(
this
,[[
-
1
,
c
,
0
],[
1
,
c
,
0
],[
-
1
,
-
c
,
0
],[
1
,
-
c
,
0
],[
0
,
-
1
,
c
],[
0
,
1
,
c
],[
0
,
-
1
,
-
c
],[
0
,
1
,
-
c
],[
c
,
0
,
-
1
],[
c
,
0
,
1
],[
-
c
,
0
,
-
1
],[
-
c
,
0
,
1
]],[[
0
,
11
,
5
],[
0
,
5
,
1
],[
0
,
1
,
7
],[
0
,
7
,
10
],[
0
,
10
,
11
],[
1
,
5
,
9
],[
5
,
11
,
4
],[
11
,
10
,
2
],[
10
,
7
,
6
],[
7
,
1
,
8
],[
3
,
9
,
4
],[
3
,
4
,
2
],[
3
,
2
,
6
],[
3
,
6
,
8
],[
3
,
8
,
9
],[
4
,
9
,
5
],[
2
,
4
,
11
],[
6
,
2
,
10
],[
8
,
6
,
7
],[
9
,
8
,
1
]],
a
,
b
)};
THREE
.
IcosahedronGeometry
.
prototype
=
Object
.
create
(
THREE
.
Geometry
.
prototype
);
THREE
.
OctahedronGeometry
=
function
(
a
,
b
){
THREE
.
PolyhedronGeometry
.
call
(
this
,[[
1
,
0
,
0
],[
-
1
,
0
,
0
],[
0
,
1
,
0
],[
0
,
-
1
,
0
],[
0
,
0
,
1
],[
0
,
0
,
-
1
]],[[
0
,
2
,
4
],[
0
,
4
,
3
],[
0
,
3
,
5
],[
0
,
5
,
2
],[
1
,
2
,
5
],[
1
,
5
,
3
],[
1
,
3
,
4
],[
1
,
4
,
2
]],
a
,
b
)};
THREE
.
OctahedronGeometry
.
prototype
=
Object
.
create
(
THREE
.
Geometry
.
prototype
);
THREE
.
TetrahedronGeometry
=
function
(
a
,
b
){
THREE
.
PolyhedronGeometry
.
call
(
this
,[[
1
,
1
,
1
],[
-
1
,
-
1
,
1
],[
-
1
,
1
,
-
1
],[
1
,
-
1
,
-
1
]],[[
2
,
1
,
0
],[
0
,
3
,
2
],[
1
,
3
,
0
],[
2
,
3
,
1
]],
a
,
b
)};
THREE
.
TetrahedronGeometry
.
prototype
=
Object
.
create
(
THREE
.
Geometry
.
prototype
);
THREE
.
ParametricGeometry
=
function
(
a
,
b
,
c
){
THREE
.
Geometry
.
call
(
this
);
var
d
=
this
.
vertices
,
e
=
this
.
faces
,
f
=
this
.
faceVertexUvs
[
0
],
h
,
g
,
i
,
k
,
m
=
b
+
1
;
for
(
h
=
0
;
h
<=
c
;
h
++
){
k
=
h
/
c
;
for
(
g
=
0
;
g
<=
b
;
g
++
)
i
=
g
/
b
,
i
=
a
(
i
,
k
),
d
.
push
(
i
)}
var
l
,
n
,
t
,
q
;
for
(
h
=
0
;
h
<
c
;
h
++
)
for
(
g
=
0
;
g
<
b
;
g
++
)
a
=
h
*
m
+
g
,
d
=
h
*
m
+
g
+
1
,
k
=
(
h
+
1
)
*
m
+
g
+
1
,
i
=
(
h
+
1
)
*
m
+
g
,
l
=
new
THREE
.
Vector2
(
g
/
b
,
h
/
c
),
n
=
new
THREE
.
Vector2
((
g
+
1
)
/
b
,
h
/
c
),
t
=
new
THREE
.
Vector2
((
g
+
1
)
/
b
,(
h
+
1
)
/
c
),
q
=
new
THREE
.
Vector2
(
g
/
b
,(
h
+
1
)
/
c
),
e
.
push
(
new
THREE
.
Face3
(
a
,
d
,
i
)),
f
.
push
([
l
,
n
,
q
]),
e
.
push
(
new
THREE
.
Face3
(
d
,
k
,
i
)),
f.push([n
,t,q
]);this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};THREE.ParametricGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.AxisHelper=function(a){var a=a||1,b=new THREE.Geometry;b.vertices.push(new THREE.Vector3,new THREE.Vector3(a,0,0),new THREE.Vector3,new THREE.Vector3(0,a,0),new THREE.Vector3,new THREE.Vector3(0,0,a));b.colors.push(new THREE.Color(16711680),new THREE.Color(16755200),new THREE.Color(65280),new THREE.Color(11206400),new THREE.Color(255),new THREE.Color(43775));a=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors});THREE.Line.call(this,b,a,THREE.LinePieces)};
f
.
push
([
n
.
clone
(),
t
,
q
.
clone
()
]);
this
.
computeCentroids
();
this
.
computeFaceNormals
();
this
.
computeVertexNormals
()};
THREE
.
ParametricGeometry
.
prototype
=
Object
.
create
(
THREE
.
Geometry
.
prototype
);
THREE
.
AxisHelper
=
function
(
a
){
var
a
=
a
||
1
,
b
=
new
THREE
.
Geometry
;
b
.
vertices
.
push
(
new
THREE
.
Vector3
,
new
THREE
.
Vector3
(
a
,
0
,
0
),
new
THREE
.
Vector3
,
new
THREE
.
Vector3
(
0
,
a
,
0
),
new
THREE
.
Vector3
,
new
THREE
.
Vector3
(
0
,
0
,
a
));
b
.
colors
.
push
(
new
THREE
.
Color
(
16711680
),
new
THREE
.
Color
(
16755200
),
new
THREE
.
Color
(
65280
),
new
THREE
.
Color
(
11206400
),
new
THREE
.
Color
(
255
),
new
THREE
.
Color
(
43775
));
a
=
new
THREE
.
LineBasicMaterial
({
vertexColors
:
THREE
.
VertexColors
});
THREE
.
Line
.
call
(
this
,
b
,
a
,
THREE
.
LinePieces
)};
THREE
.
AxisHelper
.
prototype
=
Object
.
create
(
THREE
.
Line
.
prototype
);
THREE
.
ArrowHelper
=
function
(
a
,
b
,
c
,
d
){
THREE
.
Object3D
.
call
(
this
);
void
0
===
d
&&
(
d
=
16776960
);
void
0
===
c
&&
(
c
=
1
);
this
.
position
=
b
;
b
=
new
THREE
.
Geometry
;
b
.
vertices
.
push
(
new
THREE
.
Vector3
(
0
,
0
,
0
));
b
.
vertices
.
push
(
new
THREE
.
Vector3
(
0
,
1
,
0
));
this
.
line
=
new
THREE
.
Line
(
b
,
new
THREE
.
LineBasicMaterial
({
color
:
d
}));
this
.
line
.
matrixAutoUpdate
=!
1
;
this
.
add
(
this
.
line
);
b
=
new
THREE
.
CylinderGeometry
(
0
,
0.05
,
0.25
,
5
,
1
);
b
.
applyMatrix
((
new
THREE
.
Matrix4
).
makeTranslation
(
0
,
0.875
,
0
));
this
.
cone
=
new
THREE
.
Mesh
(
b
,
new
THREE
.
MeshBasicMaterial
({
color
:
d
}));
this
.
cone
.
matrixAutoUpdate
=!
1
;
this
.
add
(
this
.
cone
);
this
.
setDirection
(
a
);
this
.
setLength
(
c
)};
THREE
.
ArrowHelper
.
prototype
=
Object
.
create
(
THREE
.
Object3D
.
prototype
);
THREE
.
ArrowHelper
.
prototype
.
setDirection
=
function
(){
var
a
=
new
THREE
.
Vector3
,
b
;
return
function
(
c
){
0.99999
<
c
.
y
?
this
.
quaternion
.
set
(
0
,
0
,
0
,
1
):
-
0.99999
>
c
.
y
?
this
.
quaternion
.
set
(
1
,
0
,
0
,
0
):(
a
.
set
(
c
.
z
,
0
,
-
c
.
x
).
normalize
(),
b
=
Math
.
acos
(
c
.
y
),
this
.
quaternion
.
setFromAxisAngle
(
a
,
b
))}}();
THREE
.
ArrowHelper
.
prototype
.
setLength
=
function
(
a
){
this
.
scale
.
set
(
a
,
a
,
a
)};
THREE
.
ArrowHelper
.
prototype
.
setColor
=
function
(
a
){
this
.
line
.
material
.
color
.
setHex
(
a
);
this
.
cone
.
material
.
color
.
setHex
(
a
)};
THREE
.
BoxHelper
=
function
(
a
){
var
b
=
[
new
THREE
.
Vector3
(
1
,
1
,
1
),
new
THREE
.
Vector3
(
-
1
,
1
,
1
),
new
THREE
.
Vector3
(
-
1
,
-
1
,
1
),
new
THREE
.
Vector3
(
1
,
-
1
,
1
),
new
THREE
.
Vector3
(
1
,
1
,
-
1
),
new
THREE
.
Vector3
(
-
1
,
1
,
-
1
),
new
THREE
.
Vector3
(
-
1
,
-
1
,
-
1
),
new
THREE
.
Vector3
(
1
,
-
1
,
-
1
)];
this
.
vertices
=
b
;
var
c
=
new
THREE
.
Geometry
;
c
.
vertices
.
push
(
b
[
0
],
b
[
1
],
b
[
1
],
b
[
2
],
b
[
2
],
b
[
3
],
b
[
3
],
b
[
0
],
b
[
4
],
b
[
5
],
b
[
5
],
b
[
6
],
b
[
6
],
b
[
7
],
b
[
7
],
b
[
4
],
b
[
0
],
b
[
4
],
b
[
1
],
b
[
5
],
b
[
2
],
b
[
6
],
b
[
3
],
b
[
7
]);
THREE
.
Line
.
call
(
this
,
c
,
new
THREE
.
LineBasicMaterial
({
color
:
16776960
}),
THREE
.
LinePieces
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录