| | 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]] |