Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
f92b7df7
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,发现更多精彩内容 >>
提交
f92b7df7
编写于
5月 25, 2013
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Simplified PDBLoader.
上级
6bcd6606
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
124 addition
and
134 deletion
+124
-134
examples/js/loaders/PDBLoader.js
examples/js/loaders/PDBLoader.js
+124
-134
未找到文件。
examples/js/loaders/PDBLoader.js
浏览文件 @
f92b7df7
...
...
@@ -2,235 +2,225 @@
* @author alteredq / http://alteredqualia.com/
*/
THREE
.
PDBLoader
=
function
(
showStatus
)
{
THREE
.
PDBLoader
=
function
(
)
{};
THREE
.
Loader
.
call
(
this
,
showStatus
);
THREE
.
PDBLoader
.
prototype
=
{
};
constructor
:
THREE
.
OBJLoader
,
THREE
.
PDBLoader
.
prototype
=
new
THREE
.
Loader
();
THREE
.
PDBLoader
.
prototype
.
constructor
=
THREE
.
PDBLoader
;
THREE
.
PDBLoader
.
prototype
.
supr
=
THREE
.
Loader
.
prototype
;
load
:
function
(
url
,
callback
)
{
THREE
.
PDBLoader
.
prototype
.
load
=
function
(
url
,
callback
)
{
var
worker
,
scope
=
this
;
var
worker
,
scope
=
this
;
this
.
loadAjaxPDB
(
this
,
url
,
callback
)
;
this
.
onLoadStart
();
this
.
loadAjaxPDB
(
this
,
url
,
callback
);
},
};
loadAjaxPDB
:
function
(
context
,
url
,
callback
,
callbackProgress
)
{
THREE
.
PDBLoader
.
prototype
.
loadAjaxPDB
=
function
(
context
,
url
,
callback
,
callbackProgress
)
{
var
xhr
=
new
XMLHttpRequest
();
var
xhr
=
new
XMLHttpRequest
()
;
var
length
=
0
;
var
length
=
0
;
xhr
.
onreadystatechange
=
function
()
{
xhr
.
onreadystatechange
=
function
(
)
{
if
(
xhr
.
readyState
===
xhr
.
DONE
)
{
if
(
xhr
.
readyState
===
xhr
.
DONE
)
{
if
(
xhr
.
status
===
200
||
xhr
.
status
===
0
)
{
if
(
xhr
.
status
===
200
||
xhr
.
status
===
0
)
{
if
(
xhr
.
responseText
)
{
if
(
xhr
.
responseText
)
{
var
json
=
context
.
parsePDB
(
xhr
.
responseText
);
context
.
createModel
(
json
,
callback
);
var
json
=
context
.
parsePDB
(
xhr
.
responseText
);
context
.
createModel
(
json
,
callback
);
}
else
{
}
else
{
console
.
warn
(
"
THREE.PDBLoader: [
"
+
url
+
"
] seems to be unreachable or file there is empty
"
);
console
.
warn
(
"
THREE.PDBLoader: [
"
+
url
+
"
] seems to be unreachable or file there is empty
"
);
}
}
// in context of more complex asset initialization
// do not block on single failed file
// maybe should go even one more level up
}
else
{
context
.
onLoadComplete
(
);
console
.
error
(
"
THREE.PDBLoader: Couldn't load [
"
+
url
+
"
] [
"
+
xhr
.
status
+
"
]
"
);
}
else
{
}
console
.
error
(
"
THREE.PDBLoader: Couldn't load [
"
+
url
+
"
] [
"
+
xhr
.
status
+
"
]
"
);
}
else
if
(
xhr
.
readyState
===
xhr
.
LOADING
)
{
}
if
(
callbackProgress
)
{
}
else
if
(
xhr
.
readyState
===
xhr
.
LOADING
)
{
if
(
length
===
0
)
{
if
(
callbackProgress
)
{
length
=
xhr
.
getResponseHeader
(
"
Content-Length
"
);
if
(
length
===
0
)
{
}
length
=
xhr
.
getResponseHeader
(
"
Content-Length
"
);
callbackProgress
(
{
total
:
length
,
loaded
:
xhr
.
responseText
.
length
}
);
}
callbackProgress
(
{
total
:
length
,
loaded
:
xhr
.
responseText
.
length
}
);
}
else
if
(
xhr
.
readyState
===
xhr
.
HEADERS_RECEIVED
)
{
}
length
=
xhr
.
getResponseHeader
(
"
Content-Length
"
);
}
else
if
(
xhr
.
readyState
===
xhr
.
HEADERS_RECEIVED
)
{
}
length
=
xhr
.
getResponseHeader
(
"
Content-Length
"
)
;
}
;
}
xhr
.
open
(
"
GET
"
,
url
,
true
);
if
(
xhr
.
overrideMimeType
)
xhr
.
overrideMimeType
(
"
text/plain; charset=x-user-defined
"
);
xhr
.
setRequestHeader
(
"
Content-Type
"
,
"
text/plain
"
);
xhr
.
send
(
null
);
}
;
}
,
xhr
.
open
(
"
GET
"
,
url
,
true
);
if
(
xhr
.
overrideMimeType
)
xhr
.
overrideMimeType
(
"
text/plain; charset=x-user-defined
"
);
xhr
.
setRequestHeader
(
"
Content-Type
"
,
"
text/plain
"
);
xhr
.
send
(
null
);
// Based on CanvasMol PDB parser
};
parsePDB
:
function
(
text
)
{
// Based on CanvasMol PDB parser
function
trim
(
text
)
{
THREE
.
PDBLoader
.
prototype
.
parsePDB
=
function
(
text
)
{
return
text
.
replace
(
/^
\s\s
*/
,
''
).
replace
(
/
\s\s
*$/
,
''
);
function
trim
(
text
)
{
}
return
text
.
replace
(
/^
\s\s
*/
,
''
).
replace
(
/
\s\s
*$/
,
''
);
function
capitalize
(
text
)
{
}
return
text
.
charAt
(
0
).
toUpperCase
()
+
text
.
substr
(
1
).
toLowerCase
();
function
capitalize
(
text
)
{
}
return
text
.
charAt
(
0
).
toUpperCase
()
+
text
.
substr
(
1
).
toLowerCase
();
function
hash
(
s
,
e
)
{
}
return
"
s
"
+
Math
.
min
(
s
,
e
)
+
"
e
"
+
Math
.
max
(
s
,
e
);
function
hash
(
s
,
e
)
{
}
return
"
s
"
+
Math
.
min
(
s
,
e
)
+
"
e
"
+
Math
.
max
(
s
,
e
);
function
parseBond
(
start
,
length
)
{
}
var
eatom
=
parseInt
(
lines
[
i
].
substr
(
start
,
length
)
);
function
parseBond
(
start
,
length
)
{
if
(
eatom
)
{
var
eatom
=
parseInt
(
lines
[
i
].
substr
(
start
,
length
)
);
var
h
=
hash
(
satom
,
eatom
);
if
(
eatom
)
{
if
(
bhash
[
h
]
==
undefined
)
{
var
h
=
hash
(
satom
,
eatom
);
bonds
.
push
(
[
satom
-
1
,
eatom
-
1
,
1
]
);
bhash
[
h
]
=
bonds
.
length
-
1
;
if
(
bhash
[
h
]
==
undefined
)
{
}
else
{
bonds
.
push
(
[
satom
-
1
,
eatom
-
1
,
1
]
);
bhash
[
h
]
=
bonds
.
length
-
1
;
// doesn't really work as almost all PDBs
// have just normal bonds appearing multiple
// times instead of being double/triple bonds
//bonds[bhash[h]][2] += 1;
}
else
{
}
// doesn't really work as almost all PDBs
// have just normal bonds appearing multiple
// times instead of being double/triple bonds
//bonds[bhash[h]][2] += 1;
}
}
}
}
var
CPK
=
{
"
h
"
:[
255
,
255
,
255
],
"
he
"
:[
217
,
255
,
255
],
"
li
"
:[
204
,
128
,
255
],
"
be
"
:[
194
,
255
,
0
],
"
b
"
:[
255
,
181
,
181
],
"
c
"
:[
144
,
144
,
144
],
"
n
"
:[
48
,
80
,
248
],
"
o
"
:[
255
,
13
,
13
],
"
f
"
:[
144
,
224
,
80
],
"
ne
"
:[
179
,
227
,
245
],
"
na
"
:[
171
,
92
,
242
],
"
mg
"
:[
138
,
255
,
0
],
"
al
"
:[
191
,
166
,
166
],
"
si
"
:[
240
,
200
,
160
],
"
p
"
:[
255
,
128
,
0
],
"
s
"
:[
255
,
255
,
48
],
"
cl
"
:[
31
,
240
,
31
],
"
ar
"
:[
128
,
209
,
227
],
"
k
"
:[
143
,
64
,
212
],
"
ca
"
:[
61
,
255
,
0
],
"
sc
"
:[
230
,
230
,
230
],
"
ti
"
:[
191
,
194
,
199
],
"
v
"
:[
166
,
166
,
171
],
"
cr
"
:[
138
,
153
,
199
],
"
mn
"
:[
156
,
122
,
199
],
"
fe
"
:[
224
,
102
,
51
],
"
co
"
:[
240
,
144
,
160
],
"
ni
"
:[
80
,
208
,
80
],
"
cu
"
:[
200
,
128
,
51
],
"
zn
"
:[
125
,
128
,
176
],
"
ga
"
:[
194
,
143
,
143
],
"
ge
"
:[
102
,
143
,
143
],
"
as
"
:[
189
,
128
,
227
],
"
se
"
:[
255
,
161
,
0
],
"
br
"
:[
166
,
41
,
41
],
"
kr
"
:[
92
,
184
,
209
],
"
rb
"
:[
112
,
46
,
176
],
"
sr
"
:[
0
,
255
,
0
],
"
y
"
:[
148
,
255
,
255
],
"
zr
"
:[
148
,
224
,
224
],
"
nb
"
:[
115
,
194
,
201
],
"
mo
"
:[
84
,
181
,
181
],
"
tc
"
:[
59
,
158
,
158
],
"
ru
"
:[
36
,
143
,
143
],
"
rh
"
:[
10
,
125
,
140
],
"
pd
"
:[
0
,
105
,
133
],
"
ag
"
:[
192
,
192
,
192
],
"
cd
"
:[
255
,
217
,
143
],
"
in
"
:[
166
,
117
,
115
],
"
sn
"
:[
102
,
128
,
128
],
"
sb
"
:[
158
,
99
,
181
],
"
te
"
:[
212
,
122
,
0
],
"
i
"
:[
148
,
0
,
148
],
"
xe
"
:[
66
,
158
,
176
],
"
cs
"
:[
87
,
23
,
143
],
"
ba
"
:[
0
,
201
,
0
],
"
la
"
:[
112
,
212
,
255
],
"
ce
"
:[
255
,
255
,
199
],
"
pr
"
:[
217
,
255
,
199
],
"
nd
"
:[
199
,
255
,
199
],
"
pm
"
:[
163
,
255
,
199
],
"
sm
"
:[
143
,
255
,
199
],
"
eu
"
:[
97
,
255
,
199
],
"
gd
"
:[
69
,
255
,
199
],
"
tb
"
:[
48
,
255
,
199
],
"
dy
"
:[
31
,
255
,
199
],
"
ho
"
:[
0
,
255
,
156
],
"
er
"
:[
0
,
230
,
117
],
"
tm
"
:[
0
,
212
,
82
],
"
yb
"
:[
0
,
191
,
56
],
"
lu
"
:[
0
,
171
,
36
],
"
hf
"
:[
77
,
194
,
255
],
"
ta
"
:[
77
,
166
,
255
],
"
w
"
:[
33
,
148
,
214
],
"
re
"
:[
38
,
125
,
171
],
"
os
"
:[
38
,
102
,
150
],
"
ir
"
:[
23
,
84
,
135
],
"
pt
"
:[
208
,
208
,
224
],
"
au
"
:[
255
,
209
,
35
],
"
hg
"
:[
184
,
184
,
208
],
"
tl
"
:[
166
,
84
,
77
],
"
pb
"
:[
87
,
89
,
97
],
"
bi
"
:[
158
,
79
,
181
],
"
po
"
:[
171
,
92
,
0
],
"
at
"
:[
117
,
79
,
69
],
"
rn
"
:[
66
,
130
,
150
],
"
fr
"
:[
66
,
0
,
102
],
"
ra
"
:[
0
,
125
,
0
],
"
ac
"
:[
112
,
171
,
250
],
"
th
"
:[
0
,
186
,
255
],
"
pa
"
:[
0
,
161
,
255
],
"
u
"
:[
0
,
143
,
255
],
"
np
"
:[
0
,
128
,
255
],
"
pu
"
:[
0
,
107
,
255
],
"
am
"
:[
84
,
92
,
242
],
"
cm
"
:[
120
,
92
,
227
],
"
bk
"
:[
138
,
79
,
227
],
"
cf
"
:[
161
,
54
,
212
],
"
es
"
:[
179
,
31
,
212
],
"
fm
"
:[
179
,
31
,
186
],
"
md
"
:[
179
,
13
,
166
],
"
no
"
:[
189
,
13
,
135
],
"
lr
"
:[
199
,
0
,
102
],
"
rf
"
:[
204
,
0
,
89
],
"
db
"
:[
209
,
0
,
79
],
"
sg
"
:[
217
,
0
,
69
],
"
bh
"
:[
224
,
0
,
56
],
"
hs
"
:[
230
,
0
,
46
],
"
mt
"
:[
235
,
0
,
38
],
"
ds
"
:[
235
,
0
,
38
],
"
rg
"
:[
235
,
0
,
38
],
"
cn
"
:[
235
,
0
,
38
],
"
uut
"
:[
235
,
0
,
38
],
"
uuq
"
:[
235
,
0
,
38
],
"
uup
"
:[
235
,
0
,
38
],
"
uuh
"
:[
235
,
0
,
38
],
"
uus
"
:[
235
,
0
,
38
],
"
uuo
"
:[
235
,
0
,
38
]};
}
var
CPK
=
{
"
h
"
:[
255
,
255
,
255
],
"
he
"
:[
217
,
255
,
255
],
"
li
"
:[
204
,
128
,
255
],
"
be
"
:[
194
,
255
,
0
],
"
b
"
:[
255
,
181
,
181
],
"
c
"
:[
144
,
144
,
144
],
"
n
"
:[
48
,
80
,
248
],
"
o
"
:[
255
,
13
,
13
],
"
f
"
:[
144
,
224
,
80
],
"
ne
"
:[
179
,
227
,
245
],
"
na
"
:[
171
,
92
,
242
],
"
mg
"
:[
138
,
255
,
0
],
"
al
"
:[
191
,
166
,
166
],
"
si
"
:[
240
,
200
,
160
],
"
p
"
:[
255
,
128
,
0
],
"
s
"
:[
255
,
255
,
48
],
"
cl
"
:[
31
,
240
,
31
],
"
ar
"
:[
128
,
209
,
227
],
"
k
"
:[
143
,
64
,
212
],
"
ca
"
:[
61
,
255
,
0
],
"
sc
"
:[
230
,
230
,
230
],
"
ti
"
:[
191
,
194
,
199
],
"
v
"
:[
166
,
166
,
171
],
"
cr
"
:[
138
,
153
,
199
],
"
mn
"
:[
156
,
122
,
199
],
"
fe
"
:[
224
,
102
,
51
],
"
co
"
:[
240
,
144
,
160
],
"
ni
"
:[
80
,
208
,
80
],
"
cu
"
:[
200
,
128
,
51
],
"
zn
"
:[
125
,
128
,
176
],
"
ga
"
:[
194
,
143
,
143
],
"
ge
"
:[
102
,
143
,
143
],
"
as
"
:[
189
,
128
,
227
],
"
se
"
:[
255
,
161
,
0
],
"
br
"
:[
166
,
41
,
41
],
"
kr
"
:[
92
,
184
,
209
],
"
rb
"
:[
112
,
46
,
176
],
"
sr
"
:[
0
,
255
,
0
],
"
y
"
:[
148
,
255
,
255
],
"
zr
"
:[
148
,
224
,
224
],
"
nb
"
:[
115
,
194
,
201
],
"
mo
"
:[
84
,
181
,
181
],
"
tc
"
:[
59
,
158
,
158
],
"
ru
"
:[
36
,
143
,
143
],
"
rh
"
:[
10
,
125
,
140
],
"
pd
"
:[
0
,
105
,
133
],
"
ag
"
:[
192
,
192
,
192
],
"
cd
"
:[
255
,
217
,
143
],
"
in
"
:[
166
,
117
,
115
],
"
sn
"
:[
102
,
128
,
128
],
"
sb
"
:[
158
,
99
,
181
],
"
te
"
:[
212
,
122
,
0
],
"
i
"
:[
148
,
0
,
148
],
"
xe
"
:[
66
,
158
,
176
],
"
cs
"
:[
87
,
23
,
143
],
"
ba
"
:[
0
,
201
,
0
],
"
la
"
:[
112
,
212
,
255
],
"
ce
"
:[
255
,
255
,
199
],
"
pr
"
:[
217
,
255
,
199
],
"
nd
"
:[
199
,
255
,
199
],
"
pm
"
:[
163
,
255
,
199
],
"
sm
"
:[
143
,
255
,
199
],
"
eu
"
:[
97
,
255
,
199
],
"
gd
"
:[
69
,
255
,
199
],
"
tb
"
:[
48
,
255
,
199
],
"
dy
"
:[
31
,
255
,
199
],
"
ho
"
:[
0
,
255
,
156
],
"
er
"
:[
0
,
230
,
117
],
"
tm
"
:[
0
,
212
,
82
],
"
yb
"
:[
0
,
191
,
56
],
"
lu
"
:[
0
,
171
,
36
],
"
hf
"
:[
77
,
194
,
255
],
"
ta
"
:[
77
,
166
,
255
],
"
w
"
:[
33
,
148
,
214
],
"
re
"
:[
38
,
125
,
171
],
"
os
"
:[
38
,
102
,
150
],
"
ir
"
:[
23
,
84
,
135
],
"
pt
"
:[
208
,
208
,
224
],
"
au
"
:[
255
,
209
,
35
],
"
hg
"
:[
184
,
184
,
208
],
"
tl
"
:[
166
,
84
,
77
],
"
pb
"
:[
87
,
89
,
97
],
"
bi
"
:[
158
,
79
,
181
],
"
po
"
:[
171
,
92
,
0
],
"
at
"
:[
117
,
79
,
69
],
"
rn
"
:[
66
,
130
,
150
],
"
fr
"
:[
66
,
0
,
102
],
"
ra
"
:[
0
,
125
,
0
],
"
ac
"
:[
112
,
171
,
250
],
"
th
"
:[
0
,
186
,
255
],
"
pa
"
:[
0
,
161
,
255
],
"
u
"
:[
0
,
143
,
255
],
"
np
"
:[
0
,
128
,
255
],
"
pu
"
:[
0
,
107
,
255
],
"
am
"
:[
84
,
92
,
242
],
"
cm
"
:[
120
,
92
,
227
],
"
bk
"
:[
138
,
79
,
227
],
"
cf
"
:[
161
,
54
,
212
],
"
es
"
:[
179
,
31
,
212
],
"
fm
"
:[
179
,
31
,
186
],
"
md
"
:[
179
,
13
,
166
],
"
no
"
:[
189
,
13
,
135
],
"
lr
"
:[
199
,
0
,
102
],
"
rf
"
:[
204
,
0
,
89
],
"
db
"
:[
209
,
0
,
79
],
"
sg
"
:[
217
,
0
,
69
],
"
bh
"
:[
224
,
0
,
56
],
"
hs
"
:[
230
,
0
,
46
],
"
mt
"
:[
235
,
0
,
38
],
"
ds
"
:[
235
,
0
,
38
],
"
rg
"
:[
235
,
0
,
38
],
"
cn
"
:[
235
,
0
,
38
],
"
uut
"
:[
235
,
0
,
38
],
"
uuq
"
:[
235
,
0
,
38
],
"
uup
"
:[
235
,
0
,
38
],
"
uuh
"
:[
235
,
0
,
38
],
"
uus
"
:[
235
,
0
,
38
],
"
uuo
"
:[
235
,
0
,
38
]};
var
atoms
=
[];
var
bonds
=
[];
var
histogram
=
{};
var
bhash
=
{};
var
atoms
=
[];
var
bonds
=
[];
var
histogram
=
{};
var
lines
=
text
.
split
(
"
\n
"
);
var
bhash
=
{}
;
var
x
,
y
,
z
,
e
;
var
lines
=
text
.
split
(
"
\n
"
);
for
(
var
i
=
0
,
il
=
lines
.
length
;
i
<
il
;
++
i
)
{
var
x
,
y
,
z
,
e
;
if
(
lines
[
i
].
substr
(
0
,
4
)
==
"
ATOM
"
||
lines
[
i
].
substr
(
0
,
6
)
==
"
HETATM
"
)
{
for
(
var
i
=
0
,
il
=
lines
.
length
;
i
<
il
;
++
i
)
{
x
=
parseFloat
(
lines
[
i
].
substr
(
30
,
7
)
);
y
=
parseFloat
(
lines
[
i
].
substr
(
38
,
7
)
);
z
=
parseFloat
(
lines
[
i
].
substr
(
46
,
7
)
);
if
(
lines
[
i
].
substr
(
0
,
4
)
==
"
ATOM
"
||
lines
[
i
].
substr
(
0
,
6
)
==
"
HETATM
"
)
{
e
=
trim
(
lines
[
i
].
substr
(
76
,
2
)
).
toLowerCase
();
x
=
parseFloat
(
lines
[
i
].
substr
(
30
,
7
)
);
y
=
parseFloat
(
lines
[
i
].
substr
(
38
,
7
)
);
z
=
parseFloat
(
lines
[
i
].
substr
(
46
,
7
)
);
if
(
e
==
""
)
e
=
trim
(
lines
[
i
].
substr
(
12
,
2
)).
toLowerCase
();
atoms
.
push
(
[
x
,
y
,
z
,
CPK
[
e
],
capitalize
(
e
)
]
);
e
=
trim
(
lines
[
i
].
substr
(
76
,
2
)
).
toLowerCase
();
if
(
histogram
[
e
]
==
undefined
)
histogram
[
e
]
=
1
;
else
histogram
[
e
]
+=
1
;
if
(
e
==
""
)
e
=
trim
(
lines
[
i
].
substr
(
12
,
2
)).
toLowerCase
();
atoms
.
push
(
[
x
,
y
,
z
,
CPK
[
e
],
capitalize
(
e
)
]
);
}
else
if
(
lines
[
i
].
substr
(
0
,
6
)
==
"
CONECT
"
)
{
if
(
histogram
[
e
]
==
undefined
)
histogram
[
e
]
=
1
;
else
histogram
[
e
]
+=
1
;
var
satom
=
parseInt
(
lines
[
i
].
substr
(
6
,
5
)
);
}
else
if
(
lines
[
i
].
substr
(
0
,
6
)
==
"
CONECT
"
)
{
parseBond
(
11
,
5
);
parseBond
(
16
,
5
);
parseBond
(
21
,
5
);
parseBond
(
26
,
5
);
var
satom
=
parseInt
(
lines
[
i
].
substr
(
6
,
5
)
);
}
parseBond
(
11
,
5
);
parseBond
(
16
,
5
);
parseBond
(
21
,
5
);
parseBond
(
26
,
5
);
}
}
return
{
"
ok
"
:
true
,
"
atoms
"
:
atoms
,
"
bonds
"
:
bonds
,
"
histogram
"
:
histogram
};
}
},
return
{
"
ok
"
:
true
,
"
atoms
"
:
atoms
,
"
bonds
"
:
bonds
,
"
histogram
"
:
histogram
};
createModel
:
function
(
json
,
callback
)
{
};
var
scope
=
this
,
geometryAtoms
=
new
THREE
.
Geometry
(),
geometryBonds
=
new
THREE
.
Geometry
();
THREE
.
PDBLoader
.
prototype
.
createModel
=
function
(
json
,
callback
)
{
geometryAtoms
.
elements
=
[];
var
scope
=
this
,
geometryAtoms
=
new
THREE
.
Geometry
(),
geometryBonds
=
new
THREE
.
Geometry
();
var
atoms
=
json
.
atoms
;
var
bonds
=
json
.
bonds
;
geometryAtoms
.
elements
=
[];
for
(
var
i
=
0
;
i
<
atoms
.
length
;
i
++
)
{
var
atoms
=
json
.
atoms
;
var
bonds
=
json
.
bonds
;
var
atom
=
atoms
[
i
];
for
(
var
i
=
0
;
i
<
atoms
.
length
;
i
++
)
{
var
x
=
atom
[
0
];
var
y
=
atom
[
1
];
var
z
=
atom
[
2
];
var
atom
=
atoms
[
i
];
var
position
=
new
THREE
.
Vector3
(
x
,
y
,
z
);
geometryAtoms
.
vertices
.
push
(
position
);
var
x
=
atom
[
0
];
var
y
=
atom
[
1
];
var
z
=
atom
[
2
];
var
r
=
atom
[
3
][
0
]
/
255
;
var
g
=
atom
[
3
][
1
]
/
255
;
var
b
=
atom
[
3
][
2
]
/
255
;
var
color
=
new
THREE
.
Color
();
color
.
setRGB
(
r
,
g
,
b
);
var
position
=
new
THREE
.
Vector3
(
x
,
y
,
z
);
geometryAtoms
.
vertices
.
push
(
position
);
geometryAtoms
.
colors
.
push
(
color
);
var
r
=
atom
[
3
][
0
]
/
255
;
var
g
=
atom
[
3
][
1
]
/
255
;
var
b
=
atom
[
3
][
2
]
/
255
;
var
color
=
new
THREE
.
Color
();
color
.
setRGB
(
r
,
g
,
b
);
geometryAtoms
.
elements
.
push
(
atom
[
4
]
);
geometryAtoms
.
colors
.
push
(
color
);
}
geometryAtoms
.
elements
.
push
(
atom
[
4
]
);
for
(
var
i
=
0
;
i
<
bonds
.
length
;
i
++
)
{
}
var
bond
=
bonds
[
i
];
for
(
var
i
=
0
;
i
<
bonds
.
length
;
i
++
)
{
var
start
=
bond
[
0
];
var
end
=
bond
[
1
];
var
bond
=
bonds
[
i
];
var
vertex1
=
geometryAtoms
.
vertices
[
start
];
var
vertex2
=
geometryAtoms
.
vertices
[
end
];
var
start
=
bond
[
0
]
;
var
end
=
bond
[
1
]
;
geometryBonds
.
vertices
.
push
(
vertex1
.
clone
()
)
;
geometryBonds
.
vertices
.
push
(
vertex2
.
clone
()
)
;
var
vertex1
=
geometryAtoms
.
vertices
[
start
];
var
vertex2
=
geometryAtoms
.
vertices
[
end
];
}
geometryBonds
.
vertices
.
push
(
vertex1
.
clone
()
);
geometryBonds
.
vertices
.
push
(
vertex2
.
clone
()
);
callback
(
geometryAtoms
,
geometryBonds
);
}
callback
(
geometryAtoms
,
geometryBonds
);
};
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录