27 


28 
Allow ".ddro" file extensions in addition to ".diderot" 
Allow ".ddro" file extensions in addition to ".diderot" 
29 


30 
Be able to output values of type tensor[2,2] and tensor[3,3] 
Be able to output values of type tensor[2,2] and tensor[3,3]; 
31 
(currently only scalars & vectors) 
(currently only scalars & vectors). Want to add some regression tests 
32 

based on this and currently can't 
33 


34 
[GLK:1] Add a clamp function, which takes three arguments; either 
[GLK:1] Add a clamp function, which takes three arguments; either 
35 
three scalars: 
three scalars: 
60 
to index into complete list 
to index into complete list 
61 


62 
[GLK:6] Use of Teem's "hest" commandline parser for getting 
[GLK:6] Use of Teem's "hest" commandline parser for getting 
63 
any input variables that are not defined in the source file 
any "input" variables that are not defined in the source file. 
64 


65 
[GLK:7] ability to declare a field so that probe positions are 
[GLK:7] ability to declare a field so that probe positions are 
66 
*always* "inside"; with various ways of mapping the known image values 
*always* "inside"; with various ways of mapping the known image values 
205 
field#2(3)[] F = bspln3 ⊛ img; 
field#2(3)[] F = bspln3 ⊛ img; 
206 
or, as a tensor product of kernels, one for each axis, e.g. 
or, as a tensor product of kernels, one for each axis, e.g. 
207 
field#0(3)[] F = (bspln3 ⊗ bspln3 ⊗ tent) ⊛ img; 
field#0(3)[] F = (bspln3 ⊗ bspln3 ⊗ tent) ⊛ img; 
208 
This is especially important for things like timevarying data, or 
This is especially important for things like timevarying fields 
209 
other multidimensional fields where one axis of the domain is very 
and the use of scalespace in field visualization: one axis of the 
210 
different from the rest, and hence must be treated separately when 
must be convolved with a different kernel during probing. 
211 
it comes to convolution. What is very unclear is how, in such cases, 
What is very unclear is how, in such cases, we should notate the 
212 
we should notate the gradient, when we only want to differentiate with 
gradient, when we only want to differentiate with respect to some 
213 
respect to some subset of the axes. One ambitious idea would be: 
subset of the axes. One ambitious idea would be: 
214 
field#0(3)[] Ft = (bspln3 ⊗ bspln3 ⊗ tent) ⊛ img; // 2D timevarying field 
field#0(3)[] Ft = (bspln3 ⊗ bspln3 ⊗ tent) ⊛ img; // 2D timevarying field 
215 
field#0(2)[] F = lambda([x,y], Ft([x,y,42.0])) // restriction to time=42.0 
field#0(2)[] F = lambda([x,y], Ft([x,y,42.0])) // restriction to time=42.0 
216 
vec2 grad = ∇F([x,y]); // 2D gradient 
vec2 grad = ∇F([x,y]); // 2D gradient 
217 


218 

Tensors of order 3 (e.g. gradients of diffusion tensor fields, or 
219 

hessians of vector fields) and order 4 (e.g. Hessians of diffusion 
220 

tensor fields). 
221 


222 
representation of tensor symmetry 
representation of tensor symmetry 
223 
(have to identify the group of index permutations that are symmetries) 
(have to identify the group of index permutations that are symmetries) 
224 


226 


227 
outer works on all tensors 
outer works on all tensors 
228 


229 

Help for debugging Diderot programs: need to be able to uniquely 
230 

identify strands, and for particular strands that are known to behave 
231 

badly, do something like printf or other logging of their computations 
232 

and updates. 
233 


234 

Permit writing dimensionally general code: Have some statement of the 
235 

dimension of the world "W" (or have it be learned from one particular 
236 

field of interest), and then able to write "vec" instead of 
237 

"vec2/vec3", and perhaps "tensor[W,W]" instead of 
238 

"tensor[2,2]/tensor[3,3]" 
239 


240 

Traits: all things things that have boilerplate code (especially 
241 

volume rendering) should be expressed in terms of the unique 
242 

computational core. Different kinds of streamline/tractography 
243 

computation will be another example, as well as particle systems. 
244 


245 
Einstein summation notation 
Einstein summation notation 
246 


247 
"tensor comprehension" (like list comprehension) 
"tensor comprehension" (like list comprehension) 
248 


249 

Fields coming from different sources of data: 
250 

* triangular or tetrahedral meshes over 2D or 3D domains (of the 
251 

source produced by finiteelement codes; these will come with their 
252 

own specialized kinds of reconstruction kernels, called "basis 
253 

functions" in this context) 
254 

* Large point clouds, with some radial basis function around each point, 
255 

which will be tuned by parameters of the point (at least one parameter 
256 

giving some notion of radius) 
257 


258 
====================== 
====================== 
259 
BUGS ================= 
BUGS ================= 
260 
====================== 
====================== 