|
Posted by GrahamH on January 26, 2005, 7:09 pm
Please log in for more thread options If you maintain a tree data structure where all flow line segments passing
through a grid cell are held in a list for that cell you can access
neighbouring flow line segments efficiently. If you have an index from x,y,z
to the cell, easy enough, then as you follow a line you can recover all
nearby segments of all other flow lines. If you also store prev and next
pointers for every flow line segment you can follow any flow line from any
segment. You may need to vectorise the motion paths to minimise the number
of segments. A BSpline approach might work, or maybe just straight line
segments.
Graham
> Thanks ... I've been looking into a grid approach, voxel-style, I
> suppose that may be the best approach. Will need to spend a lot of
> time looking at the neighboring grids, so was hoping to simplify the
> problem & keep the lines intact. Well, we shall see ...
> Thanks!
> Carolyn
>
> GrahamH wrote:
>> >
>>
>> You might look at motion histograms. Divide the space into cubic
> cells and
>> for each maintain an array of velocity vectors (speed,direction_xy,
> maybe
>> vertical). This could be a lot of data. You would need to represent
> the
>> velocity in a compact form, maybe 4 bits speed, 4 bits direction so
> only 256
>> bytes per cell. Such a data structure can record the statistics of
> multiple
>> streams in close proximity, or crossing the same space. You could
> then
>> analyse the data to identify busiest channels, crossing points etc.
>>
>> Depending on the number of streams you need to analyse it might be
> more
>> efficient to work with the individual vector paths organised in a
> tree to
>> group segments spatially. Look at kd-tree, bsptree, voxel rendering
> etc.
>>
>> Graham
>
|