@@ -162,6 +162,7 @@ Object.keys(ColorMixPreset).forEach((key) => {
162
162
optionElem . label = 'Default' ;
163
163
optionElem . value = '' ;
164
164
presetSelectElem . appendChild ( optionElem ) ;
165
+ presetSelectElem . value = optionElem . value ;
165
166
}
166
167
167
168
const setColorMixPreset = ( presetKey ) => {
@@ -172,8 +173,8 @@ const setColorMixPreset = (presetKey) => {
172
173
173
174
volumeSelectElem . addEventListener ( 'change' , ( ) => {
174
175
const { comp, data } = volumeOptions [ volumeSelectElem . value ] ;
175
- setColorMixPreset ( '' ) ;
176
176
if ( comp === 1 ) {
177
+ setColorMixPreset ( '' ) ;
177
178
presetSelectElem . style . display = 'none' ;
178
179
} else {
179
180
presetSelectElem . style . display = 'block' ;
@@ -200,21 +201,29 @@ reader.setUrl(`${__BASE_PATH__}/data/volume/LIDC2.vti`).then(() => {
200
201
const baseComp = 1 ;
201
202
const baseData = array . getData ( ) ;
202
203
const newComp = 2 ;
203
- const newData = new Float32Array ( newComp * baseData . length ) ;
204
+ const cubeData = new Float32Array ( newComp * baseData . length ) ;
205
+ const sphereData = new Float32Array ( newComp * baseData . length ) ;
204
206
const dims = imageData . getDimensions ( ) ;
205
207
for ( let z = 0 ; z < dims [ 2 ] ; ++ z ) {
206
208
for ( let y = 0 ; y < dims [ 1 ] ; ++ y ) {
207
209
for ( let x = 0 ; x < dims [ 0 ] ; ++ x ) {
208
210
const iTuple = x + dims [ 0 ] * ( y + dims [ 1 ] * z ) ;
209
- newData [ iTuple * newComp + 0 ] = baseData [ iTuple ] ;
210
- const isInMask =
211
+ const isInCube =
211
212
x >= 0.3 * dims [ 0 ] &&
212
213
x <= 0.7 * dims [ 0 ] &&
213
214
y >= 0.3 * dims [ 1 ] &&
214
215
y <= 0.7 * dims [ 1 ] &&
215
216
z >= 0.3 * dims [ 2 ] &&
216
217
z <= 0.7 * dims [ 2 ] ;
217
- newData [ iTuple * newComp + 1 ] = isInMask ? 1 : 0 ;
218
+ cubeData [ iTuple * newComp + 0 ] = baseData [ iTuple ] ;
219
+ cubeData [ iTuple * newComp + 1 ] = isInCube ? 1 : 0 ;
220
+ const isInSphere =
221
+ ( x / dims [ 0 ] - 0.5 ) ** 2 +
222
+ ( y / dims [ 1 ] - 0.5 ) ** 2 +
223
+ ( z / dims [ 2 ] - 0.5 ) ** 2 <
224
+ 0.2 ** 2 ;
225
+ sphereData [ iTuple * newComp + 0 ] = baseData [ iTuple ] ;
226
+ sphereData [ iTuple * newComp + 1 ] = isInSphere ? 1 : 0 ;
218
227
}
219
228
}
220
229
}
@@ -223,9 +232,13 @@ reader.setUrl(`${__BASE_PATH__}/data/volume/LIDC2.vti`).then(() => {
223
232
comp : baseComp ,
224
233
data : baseData ,
225
234
} ;
226
- volumeOptions [ 'Labelmap volume' ] = {
235
+ volumeOptions [ 'Sphere labelmap volume' ] = {
227
236
comp : newComp ,
228
- data : newData ,
237
+ data : sphereData ,
238
+ } ;
239
+ volumeOptions [ 'Cube labelmap volume' ] = {
240
+ comp : newComp ,
241
+ data : cubeData ,
229
242
} ;
230
243
231
244
Object . keys ( volumeOptions ) . forEach ( ( key ) => {
0 commit comments