Home Overview FAQ Documentation Download Mailing List Geomview For Windows? Support Users Development Bug Reporting Contributing Contact Us Sponsors
|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Update REQ 5322]: geomview usage stategy
> i dont think i can use this stradegy as i dont know ahead of time which > objects can be grouped, and in principle every atom may need to be > displayed individually at some point. Here's the kind of thing I mean in a little more detail. I'd been assuming you loaded each atom into a "handle" the first time it was needed, with maybe (hdefine geometry atom1138 { INST transform ... geom < blob.oogl }) and then made it and all its hundreds or thousands of cohorts visible with something like (geometry ice { LIST { : atom15 } { : atom23 } ... { : atom1138 } }) Is that how you do it? Since you say you don't believe the update-scanning argument, maybe you're just using one "(geometry ...)" command per atom, as in (geometry atom15 < blob.oogl) (xform-set atom15 ...) (geometry atom1138 < blob.oogl) (xform-set atom1138 ...) In that case, you're right; the limiting factor is probably the X/Motif code for maintaining a list of items in the browser. It seems to spend a great deal of time there even if the panel is turned off, and I wouldn't be surprised if the time to add an entry is proportional to the number of entries in the list. At the other extreme -- which I'd guessed you had taken, at first -- you could have just a single object in the browser, a LIST containing all the visible atoms, and update it at each step to mention everything which should be visible. Anyway, one kludgy approach which might help would be to define a batch of handles, one per atom, using "(hdefine geometry atomname { ... })". These will form a library of geometric data, invisible until you attach them to something in geomview's object browser with (geometry ...) commands. Now, suppose you want to not-too-inefficiently make some subset of the N atoms visible. Suppose you apportion K ~ sqrt(N) atoms to each of M ~ sqrt(N) geomview-browser objects, with atoms 1..K being displayed (if ever) as part of clump1, K+1..2K in clump2, ..., atoms N-K+1..N in clumpM. The clumps have no particular graphical significance, they're just a way to induce geomview to order the data structures more efficiently. Given this, you could write something like the following almost-C code: printf("(progn "); /* Begin group of commands to be executed together */ for(clump = 1; clump <= M; clump++) { printf("(geometry clump%d { LIST ", clump); for(atom = (clump-1)*K+1; atom <= clump*K; atom++) { if(this atom visible) printf("{ : atom%d }", atom); } printf("})\n"); } printf(")\n"); /* end of group */ You could likely optimize this further, not re-defining clumps whose visibility hasn't changed since the previous display update. I know this is awkward, but it's the best we can offer out of the box. I should also say I haven't tried this -- I only suspect it might help.
|
||
Home | Overview | FAQ | Documentation | Support | Download | Mailing List Windows? | Development | Bug Reporting | Contributing | Contact Us | Sponsors |
|||
site hosted by |