The IDL procedure <tt>slicelines</tt>



next up previous contents
Next: The IDL procedures Up: 3D Redshift Space Visualization Previous: The IDL procedure

The IDL procedure slicelines

pro slicelines, file_out, z_low, z_high, a_low, a_high, d_low, d_high

; Bo Milvang-Jensen, May 21, 1994.

    if n_params() eq (0) then begin
      print
      print, 'Procedure slicelines'  
      print
      print, 'Usage:'
      print, 'slicelines, file_out, z_low, z_high, a_low, a_high, d_low, d_high'
      print
      print, 'Description:'
      print, 'This procedure makes a binary file suitable for the Explorer'
      print, 'module Line2Geo'
      print
      print, 'file_out: output file name'
      print, 'z_low   : minimum redshift value'
      print, 'z_high  : maximum redshift value'
      print, 'a_low   : minimum alpha    value'
      print, 'a_high  : maximum alpha    value'
      print, 'd_low   : mimimum delta    value'
      print, 'd_high  : maximum delta    value'
      print
      return
    end

    a = fltarr(8,3)

    a(0,0) = z_low  ; redshift - point 1
    a(0,1) = a_low  ; alpha   
    a(0,2) = d_low  ; delta
    a(1,0) = z_high ;            point 2
    a(1,1) = a_low
    a(1,2) = d_low

    a(2,0) = z_low  ;            point 3
    a(2,1) = a_high
    a(2,2) = d_low
    a(3,0) = z_high ;            point 4
    a(3,1) = a_high
    a(3,2) = d_low

    a(4,0) = z_low  ;            point 5
    a(4,1) = a_low 
    a(4,2) = d_high
    a(5,0) = z_high ;            point 6
    a(5,1) = a_low 
    a(5,2) = d_high

    a(6,0) = z_low  ;            point 7
    a(6,1) = a_high
    a(6,2) = d_high
    a(7,0) = z_high ;            point 8
    a(7,1) = a_high
    a(7,2) = d_high

    a(*,1) = (a(*,1)/180)*!pi ; conversion to radians
    a(*,2) = (a(*,2)/180)*!pi ; conversion to radians

    a = new_pol_to_cart(a) ; convert to cartesian coordiantes


    arcl = 6.0

    nal = fix((d_high-d_low)/arcl)

    al = fltarr(2*(2+nal),3) ; arcs with alpha = constant

    for i=0, nal+1 do begin  ; alpha = a_low
      al(i,0) = z_high
      al(i,1) = a_low
      al(i,2) = d_low + (1.0*i/(nal+1)) * (d_high-d_low)
    endfor

    for i=0, nal+1 do begin  ; alpha = a_high
      al(i+nal+2,0) = z_high
      al(i+nal+2,1) = a_high
      al(i+nal+2,2) = d_low + (1.0*i/(nal+1)) * (d_high-d_low)
    endfor

    al(*,1) = (al(*,1)/180)*!pi ; conversion to radians
    al(*,2) = (al(*,2)/180)*!pi ; conversion to radians

    al = new_pol_to_cart(al) ; convert to cartesian coordiantes


    nde = fix((a_high-a_low)/arcl)

    de = fltarr(2*(2+nde),3) ; arcs with delta = constant

    for i=0, nde+1 do begin  ; delta = d_low
      de(i,0) = z_high
      de(i,1) = a_low + (1.0*i/(nde+1)) * (a_high-a_low)
      de(i,2) = d_low
    endfor

    for i=0, nde+1 do begin  ; delta = d_high
      de(i+nde+2,0) = z_high
      de(i+nde+2,1) = a_low + (1.0*i/(nde+1)) * (a_high-a_low)
      de(i+nde+2,2) = d_high
    endfor

    de(*,1) = (de(*,1)/180)*!pi ; conversion to radians
    de(*,2) = (de(*,2)/180)*!pi ; conversion to radians

    de = new_pol_to_cart(de) ; convert to cartesian coordiantes


    openw, lun, file_out, /get_lun
    for i=0, 3 do begin
      writeu, lun, 2L
      writeu, lun, a(2*i+0,*) ; points 1, 3, 5 and 7
      writeu, lun, a(2*i+1,*) ; points 2, 4, 6 and 8
      writeu, lun, 0.50     ; R
      writeu, lun, 0.50     ; G
      writeu, lun, 0.50     ; B
    endfor

    for i=0, 1 do begin
      writeu, lun, 1L*(nal+2)
      for j=0, nal+1 do begin
        writeu, lun, al(i*(nal+2)+j,*)
      endfor
      writeu, lun, 0.50     ; R
      writeu, lun, 0.50     ; G
      writeu, lun, 0.50     ; B
    endfor

    for i=0, 1 do begin
      writeu, lun, 1L*(nde+2)
      for j=0, nde+1 do begin
        writeu, lun, de(i*(nde+2)+j,*)
      endfor
      writeu, lun, 0.50     ; R
      writeu, lun, 0.50     ; G
      writeu, lun, 0.50     ; B
    endfor

    writeu, lun, -1L
    close, lun
    free_lun, lun

end



Bo Milvang-Jensen
Wed Jan 18 05:44:35 MET 1995