| 273 | [[CollapsibleStart(More complicated movie tracking a particle)]] |
| 274 | I first had to use some linux-fu to get the particle's xy location that I wanted to track into xloc.dat. I then used {{{d=f.readline}}} to read each line and {{{c=d.split}}} to parse the line. I then used {{{c[3]}}} and {{{c[5]}}} as the x and y position of the particle which I then used to set the window coords etc... Here is the [sinkzoom.gif movie] |
| 275 | {{{ |
| 276 | movie_name="sinkzoom" |
| 277 | framestart_mesh=130 |
| 278 | framestart_zoom=160 |
| 279 | frameend_zoom=190 |
| 280 | frameadd_v=220 |
| 281 | frameend=300 |
| 282 | zoom_factor=12 |
| 283 | zf=zoom_factor**(1.0/(frameend_zoom-framestart_zoom)) |
| 284 | print zf |
| 285 | f=open('xloc.dat') |
| 286 | SaveWindowAtts = SaveWindowAttributes() |
| 287 | SaveWindowAtts.fileName = movie_name |
| 288 | SaveWindowAtts.family = 0 |
| 289 | for i in range(0,framestart_mesh): |
| 290 | f.readline() |
| 291 | SetTimeSliderState(i) |
| 292 | SaveWindowAtts.fileName = movie_name + "%(frame)04d" % {'frame':i} |
| 293 | SetSaveWindowAttributes(SaveWindowAtts) |
| 294 | SaveWindow() |
| 295 | ClearCache("localhost") |
| 296 | a=GetView2D() |
| 297 | b=GetView2D() |
| 298 | AddPlot("Mesh","Mesh") |
| 299 | DrawPlots() |
| 300 | for i in range(framestart_mesh, framestart_zoom): |
| 301 | f.readline() |
| 302 | SetTimeSliderState(i) |
| 303 | SaveWindowAtts.fileName = movie_name + "%(frame)04d" % {'frame':i} |
| 304 | SetSaveWindowAttributes(SaveWindowAtts) |
| 305 | SaveWindow() |
| 306 | ClearCache("localhost") |
| 307 | for i in range(framestart_zoom, frameend_zoom): |
| 308 | d=f.readline() |
| 309 | c=d.split() |
| 310 | x=float(c[3]) |
| 311 | y=float(c[5]) |
| 312 | print x,y |
| 313 | viewsizex=(b.windowCoords[1]-b.windowCoords[0])/(zf**(i-framestart_zoom+1)) |
| 314 | viewsizey=(b.windowCoords[3]-b.windowCoords[2])/(zf**(i-framestart_zoom+1)) |
| 315 | xlower = max(b.windowCoords[0], x-viewsizex/2) |
| 316 | ylower = max(b.windowCoords[2], y-viewsizey/2) |
| 317 | xupper = min(b.windowCoords[1], xlower+viewsizex) |
| 318 | yupper=min(b.windowCoords[3], ylower+viewsizey) |
| 319 | xlower=xupper-viewsizex |
| 320 | ylower=yupper-viewsizey |
| 321 | a.windowCoords=(xlower,xupper,ylower,yupper) |
| 322 | SetView2D(a) |
| 323 | SetTimeSliderState(i) |
| 324 | SaveWindowAtts.fileName = movie_name + "%(frame)04d" % {'frame':i} |
| 325 | SetSaveWindowAttributes(SaveWindowAtts) |
| 326 | SaveWindow() |
| 327 | ClearCache("localhost") |
| 328 | SetActivePlots(2) |
| 329 | HideActivePlots() |
| 330 | for i in range (frameend_zoom,frameadd_v): |
| 331 | d=f.readline() |
| 332 | c=d.split() |
| 333 | x=float(c[3]) |
| 334 | y=float(c[5]) |
| 335 | print x,y |
| 336 | viewsizex=(b.windowCoords[1]-b.windowCoords[0])/zoom_factor |
| 337 | viewsizey=(b.windowCoords[3]-b.windowCoords[2])/zoom_factor |
| 338 | xlower = max(b.windowCoords[0], x-viewsizex/2) |
| 339 | ylower = max(b.windowCoords[2], y-viewsizey/2) |
| 340 | xupper = min(b.windowCoords[1], xlower+viewsizex) |
| 341 | yupper=min(b.windowCoords[3], ylower+viewsizey) |
| 342 | xlower=xupper-viewsizex |
| 343 | ylower=yupper-viewsizey |
| 344 | a.windowCoords=(xlower,xupper,ylower,yupper) |
| 345 | SetView2D(a) |
| 346 | SetTimeSliderState(i) |
| 347 | SaveWindowAtts.fileName = movie_name + "%(frame)04d" % {'frame':i} |
| 348 | SetSaveWindowAttributes(SaveWindowAtts) |
| 349 | SaveWindow() |
| 350 | ClearCache("localhost") |
| 351 | AddPlot("Vector","v") |
| 352 | DrawPlots() |
| 353 | for i in range (frameadd_v,frameend): |
| 354 | d=f.readline() |
| 355 | c=d.split() |
| 356 | x=float(c[3]) |
| 357 | y=float(c[5]) |
| 358 | print x,y |
| 359 | viewsizex=(b.windowCoords[1]-b.windowCoords[0])/zoom_factor |
| 360 | viewsizey=(b.windowCoords[3]-b.windowCoords[2])/zoom_factor |
| 361 | xlower = max(b.windowCoords[0], x-viewsizex/2) |
| 362 | ylower = max(b.windowCoords[2], y-viewsizey/2) |
| 363 | xupper = min(b.windowCoords[1], xlower+viewsizex) |
| 364 | yupper=min(b.windowCoords[3], ylower+viewsizey) |
| 365 | xlower=xupper-viewsizex |
| 366 | ylower=yupper-viewsizey |
| 367 | a.windowCoords=(xlower,xupper,ylower,yupper) |
| 368 | SetView2D(a) |
| 369 | SetTimeSliderState(i) |
| 370 | SaveWindowAtts.fileName = movie_name + "%(frame)04d" % {'frame':i} |
| 371 | SetSaveWindowAttributes(SaveWindowAtts) |
| 372 | SaveWindow() |
| 373 | ClearCache("localhost") |
| 374 | f.close() |
| 375 | |
| 376 | |
| 377 | }}} |
| 378 | [[CollapsibleEnd]] |