Ignore:
Timestamp:
Jun 25, 2014 6:58:27 AM (8 years ago)
Author:
srkline
Message:

Added method to RealSpace? modeling to allow drawing a single cylidner with given center and arbitrary orientation.

Updated the Simulation help file to note that the simulation will work with a real space structure as the "model" input. In this way, there is no limitation on what can be simulated through SASCALC.

Location:
sans/Dev/trunk/NCNR_User_Procedures
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Alpha/Tinker/FFT_FillMatrixShapes.ipf

    r942 r943  
    798798End 
    799799 
     800 
     801// takes XYZV values such as output from  Ken Rubinson's converter 
     802// where xyz may take negative values, and tries to put it into  
     803// mat, shifting XYZ as needed 
     804// 
     805// now the xyz center is passed in (for a single object) that is treated as the center of that object 
     806// 
     807Function XYZV_FillMat_Centered(xx,yy,zz,xc,yc,zc,rad,len,val,erase) 
     808        Wave xx,yy,zz 
     809        Variable xc,yc,zc,rad,len 
     810        Wave val 
     811        Variable erase 
     812         
     813        Variable x1,x2,y1,y2,z1,z2,ii,jj,kk,num,npt,minp,maxp 
     814         
     815        WAVE mat = root:mat 
     816        NVAR solventSLD = root:FFT_SolventSLD 
     817        NVAR FFT_T=root:FFT_T 
     818 
     819        if(erase) 
     820                mat = solventSLD 
     821        endif 
     822         
     823        num=numpnts(xx) 
     824         
     825        for(ii=0;ii<num;ii+=1) 
     826                mat[xx[ii]][yy[ii]][zz[ii]] = val[ii] 
     827        endfor 
     828         
     829        return(0) 
     830End 
     831 
     832 
     833 
     834 
     835///// replaced by XYZV_FillMat_Centered() after using Ken's routines, but may have some use in the future 
     836// 
    800837// takes XYZV values such as output from  Ken Rubinson's converter 
    801838// where xyz may take negative values, and tries to put it into  
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Alpha/Tinker/FFT_KR_Parser.ipf

    r941 r943  
    22 
    33 
    4  
    5  
    6  
     4Proc testAddRotCyl() 
     5 
     6        Variable ii,zval,rotx,roty,fill,rad 
     7         
     8        FFT_T=root:FFT_T 
     9         
     10        rotx=0 
     11        roty=90 
     12        zval = 0 
     13        rad=20 
     14        fill=20 
     15         
     16        ii=rad/FFT_T+1 
     17//      print ii 
     18        do 
     19                zval=ii 
     20                FFTDrawRotCylinder("mat",rad,200,64,64,zval,rotx,roty,fill) 
     21                ii+=(2*rad)/FFT_T 
     22                rotx += 12 
     23        while(ii<(127-(rad/FFT_T))) 
     24         
     25//      print ii 
     26End 
     27 
     28 
     29// draws a single cylinder with the specified center and rotation. does not clear the matrix 
     30// 
     31// x-rotation is done first, then the y-rotation 
     32// 
     33Proc FFTDrawRotCylinder(matStr,rad,len,xc,yc,zc,xrot,yrot,fill) 
     34        String matStr="mat" 
     35        Variable rad=25,len=300,xc=50,yc=50,zc=50,xrot=10,yrot=90,fill=10 
     36        Prompt matStr,"the wave"                //,popup,WaveList("*",";","") 
     37        Prompt rad,"enter real radius (A)" 
     38        Prompt len,"enter length (A)" 
     39        Prompt xc,"enter the X-center" 
     40        Prompt yc,"enter the Y-center" 
     41        Prompt zc,"enter the Z-center" 
     42        Prompt xrot,"x-rotation (degrees)" 
     43        Prompt yrot,"y-rotation (degrees)" 
     44        Prompt fill,"fill SLD value"     
     45         
     46        Make/O/D/N=1 xx,yy,zz,rri,hti,rotx,roty,sld 
     47         
     48        xx[0] = xc 
     49        yy[0] = yc 
     50        zz[0] = zc 
     51        rri[0] = rad 
     52        hti[0] = len 
     53        rotx[0] = xrot 
     54        roty[0] = yrot 
     55        sld[0] = fill    
     56 
     57        Duplicate/O xx, sbp 
     58         
     59        // parse 
     60//      KR_MultiCylinder(xx,yy,zz,rri,hti,sbp,rotx,roty,sld) 
     61        KR_MultiCylinder_Units(xx,yy,zz,rri,hti,sbp,rotx,roty,sld) 
     62 
     63        XYZV_FillMat_Centered(xoutW,youtW,ZoutW,xc,yc,zc,rad,len,sldW,0)                        //last 1 will erase the matrix, 0 retains matrix 
     64 
     65        //force a redraw (re-coloring) of the gizmo window 
     66        FFTMakeGizmoButtonProc("") 
     67         
     68End 
     69 
     70 
     71// -- now this will put the cylinders properly at the specified centers, in the units of "mat" 
     72// 
    773/// seems to work - but what do I do about fractional positions? when converting to a matrix? 
    874// 
    9 // 
    10  
    11 Function KR_Load() 
     75// the wave "gg" has been dropped, since it's only used as a flag in an old file loader 
     76// 
     77// NOW - SBP is FORCED to the value of FFT_T - no matter what is in the file. 
     78// 
     79Function KR_MultiCylinder_Units(xx,yy,zz,rri,hti,sbp,rotx,roty,sld) 
     80        Wave xx,yy,zz,rri,hti,sbp,rotx,roty,sld 
     81 
    1282        Variable I, J, K, L, PT //integer indices loops, num cylinders, include or exclude sphere in circle 
    1383        Variable STH, SPH, CTH, CPH, FTR  //sine and cosines and deg-->rad conversion: x rotn theta & y rotn phi 
     
    1888        Variable PI2 
    1989        Variable ix,nptW 
    20  
    21  
    22         LoadWave /G /N   
    23         Print S_filename 
    24         Print S_wavenames 
    25          
    26         //Make / O /N=0 OutputPoints 
    27         //      wave out=OutputPoints 
    28         //      variable num=numpnts(out) 
    29          
    30         KillWaves/Z xx,yy,zz,rri,hti,sbp,rotx,roty,sld,gg 
    31          
    32         Rename wave0, xx 
    33         Rename wave1, yy 
    34         Rename wave2, zz 
    35         Rename wave3, RRI 
    36         Rename wave4, HTI 
    37         Rename wave5, SBP 
    38         Rename wave6, ROTX 
    39         Rename wave7, ROTY 
    40         Rename wave8, SLD 
    41         Rename wave9, GG 
    42          
    43         //print  NUM,xx,yy,zz,rri,hti,sbp,rotx,roty,sld,gg 
    44  
    45          
    46         wave gg = gg 
    47         variable nn =-1,npts,cyl 
    48         npts = numpnts(GG) 
    49          
    50         for (i=0;i<=npts;i+=1) 
    51                 if (gg[i]==2) 
    52                         cyl = i+1 
    53                         break 
    54                         print "gg[i],i=",gg,i 
    55                 endif 
    56         endfor 
    57         print"cyl=",cyl 
    58          
    59  
    60         wave xx=xx 
    61         wave yy=yy 
    62         wave zz=zz 
    63         wave rri=rri 
    64         wave hti=hti 
    65         wave sbp=sbp 
    66         wave rotx=rotx 
    67         wave roty=roty 
    68         wave sld=sld 
    69          
    70         // SBP = diameter of the spheres 
     90         
    7191        NVAR FFT_T = root:FFT_T 
    72         FFT_T = SBP[0] 
    73         // 
    74          
     92//      FFT_T = sbp[0] 
     93//      sbp[0] = FFT_T 
     94        sbp = FFT_T 
     95         
     96        variable npts,cyl 
     97        npts = numpnts(xx) 
     98        cyl = npts 
     99                 
    75100        Make/O/D/N=0 xoutW,youtW,zoutW,sbpW,sldW 
    76101         
    77102        PI2=pi*2 
    78103        FTR=PI2/360 
    79         // print "ftr=", ftr 
     104         
     105        nptW = 0 
     106         
     107        for(l=0;l<(cyl);L+=1)   //only change from run4 
     108        //for each cylinder of loop use index NUM 
     109        //calculate x & y rotation cos and sin 
     110                STH=SIN(Rotx[L]*FTR) 
     111                SPH=sin(roty[L]*FTR) 
     112                CTH=cos(rotx[L]*FTR) 
     113                CPH=cos(roty[L]*FTR) 
     114                //print "sth",sth 
     115                //print"L=",L 
     116                P5=SBP[L]/2  //set sphere centers' half-diameter displacement from grid (avoids glitches) 
     117                // print "p5 & sbp[L]",p5,sbp[L] 
     118         
     119                RR=(RRI[L]/SBP[L])//as an index, Igor truncates the number to an integer....does NOT round it 
     120                RR=RR+1 //rr is the loop limit for square around final circle 
     121                HH=(HTI[L]/(2*SBP[L]))  //as an index, Igor truncates the number to an integer....does NOT round it 
     122                for(k=-HH;k<HH;k+=1)  // should have +1 for HH to complete to k=HH????? 
     123                        for(i=-RR;i<RR;i+=1)  //should this have i<RR+1 or in above RR=RR+2???? 
     124                                for(j=-RR;j<RR;J+=1) 
     125                                        x0=sbp[L]*i+P5 
     126                                        y0=SBP[L]*j+P5 
     127                                        z0=SBP[L]*k+p5 
     128                                        if((((y0^2)/(RRI[L]^2))+((x0^2)/(RRI[L]^2)))<=1) 
     129                                                IX=-1 
     130                                        else 
     131                                                IX=0 
     132                                        endif  
     133                                        xmid=x0 
     134                                        ymid=y0*cth+z0*sth 
     135                                        zmid=-y0*sth+z0*cth 
     136                                        // end rotation about x begin rotn about y on rotated pts 
     137                                        // 
     138                                        xout=xmid*cph-zmid*sph 
     139                                        xout=xx[L]+xout/SBP[L] 
     140                                        yout=ymid 
     141                                        yout=yy[L]+yout/SBP[L] 
     142                                        zout=xmid*sph+zmid*cph 
     143                                        zout=zz[L]+zout/SBP[L] 
     144 
     145                                        // now print to wave file the point or not depending on whether ix<0 or not 
     146 
     147                                        if (ix<0) 
     148                                        //write to wave file 
     149                                                InsertPoints nptW,1,xoutW,youtW,zoutW,sbpW,sldW 
     150                                                xoutW[nptW] = xout 
     151                                                youtW[nptW] = yout 
     152                                                zoutW[nptW] = zout 
     153                                                sbpW[nptW] = sbp[L] 
     154                                                sldW[nptW] = sld[L] 
     155                                                 
     156                                                nptW +=1 
     157                                         
     158                                                //print  xout,yout,zout,sbp[L],sld[L] 
     159                                        //else 
     160                                                //continue 
     161                                        endif  //for write or not 
     162                                endfor  // for j 
     163                        endfor  //  for i 
     164                endfor  //for k  
     165        endfor // for L  
     166 
     167 
     168        // rescale to the sphere size 
     169//      xoutW /= FFT_T 
     170//      youtW /= FFT_T 
     171//      zoutW /= FFT_T 
     172 
     173        xoutW = trunc(xoutW) 
     174        youtW = trunc(youtW) 
     175        zoutW = trunc(zoutW) 
     176         
     177        return(0) // end do loop cycle for cylinders 
     178end 
     179 
     180 
     181 
     182 
     183 
     184/// 
     185/// -- replaced by KR_MultiCylinder_Units() 
     186/// 
     187/// seems to work - but what do I do about fractional positions? when converting to a matrix? 
     188// 
     189// the wave "gg" has been dropped, since it's only used as a flag in an old file loader 
     190// 
     191// NOW - SBP is FORCED to the value of FFT_T - no matter what is in the file. 
     192// 
     193Function KR_MultiCylinder(xx,yy,zz,rri,hti,sbp,rotx,roty,sld) 
     194        Wave xx,yy,zz,rri,hti,sbp,rotx,roty,sld 
     195 
     196        Variable I, J, K, L, PT //integer indices loops, num cylinders, include or exclude sphere in circle 
     197        Variable STH, SPH, CTH, CPH, FTR  //sine and cosines and deg-->rad conversion: x rotn theta & y rotn phi 
     198        Variable  XMID, YMID, ZMID, XOUT, YOUT, ZOUT  //cartesian positions used in various calculations 
     199        Variable RR,HH  //RR is limit of loops, GG used as end of read param files--exit=2, NUM of cylinder 
     200        Variable  P5  //spheres half diameter shift from grid points (avoids zeros) 
     201        Variable X0, Y0,Z0 
     202        Variable PI2 
     203        Variable ix,nptW 
     204         
     205        NVAR FFT_T = root:FFT_T 
     206//      FFT_T = sbp[0] 
     207//      sbp[0] = FFT_T 
     208        sbp = FFT_T 
     209         
     210        variable npts,cyl 
     211        npts = numpnts(xx) 
     212        cyl = npts 
     213                 
     214        Make/O/D/N=0 xoutW,youtW,zoutW,sbpW,sldW 
     215         
     216        PI2=pi*2 
     217        FTR=PI2/360 
    80218         
    81219        nptW = 0 
     
    141279        endfor // for L  
    142280 
     281 
    143282        // rescale to the sphere size 
    144283        xoutW /= FFT_T 
     
    151290 
    152291 
    153 /// seems to work - but what do I do about fractional positions? when converting to a matrix? 
    154 // 
    155 // the wave "gg" has been dropped, since it's only used as a flag in an old file loader 
    156 // 
    157 // NOW - SBP is FORCED to the value of FFT_T - no matter what is in the file. 
    158 // 
    159 Function KR_MultiCylinder(xx,yy,zz,rri,hti,sbp,rotx,roty,sld) 
    160         Wave xx,yy,zz,rri,hti,sbp,rotx,roty,sld 
    161  
    162         Variable I, J, K, L, PT //integer indices loops, num cylinders, include or exclude sphere in circle 
    163         Variable STH, SPH, CTH, CPH, FTR  //sine and cosines and deg-->rad conversion: x rotn theta & y rotn phi 
    164         Variable  XMID, YMID, ZMID, XOUT, YOUT, ZOUT  //cartesian positions used in various calculations 
    165         Variable RR,HH  //RR is limit of loops, GG used as end of read param files--exit=2, NUM of cylinder 
    166         Variable  P5  //spheres half diameter shift from grid points (avoids zeros) 
    167         Variable X0, Y0,Z0 
    168         Variable PI2 
    169         Variable ix,nptW 
    170          
    171         NVAR FFT_T = root:FFT_T 
    172 //      FFT_T = sbp[0] 
    173 //      sbp[0] = FFT_T 
    174         sbp = FFT_T 
    175          
    176         variable npts,cyl 
    177         npts = numpnts(xx) 
    178         cyl = npts 
    179                  
    180         Make/O/D/N=0 xoutW,youtW,zoutW,sbpW,sldW 
    181          
    182         PI2=pi*2 
    183         FTR=PI2/360 
    184          
    185         nptW = 0 
    186          
    187         for(l=0;l<(cyl);L+=1)   //only change from run4 
    188         //for each cylinder of loop use index NUM 
    189         //calculate x & y rotation cos and sin 
    190                 STH=SIN(Rotx[L]*FTR) 
    191                 SPH=sin(roty[L]*FTR) 
    192                 CTH=cos(rotx[L]*FTR) 
    193                 CPH=cos(roty[L]*FTR) 
    194                 //print "sth",sth 
    195                 //print"L=",L 
    196                 P5=SBP[L]/2  //set sphere centers' half-diameter displacement from grid (avoids glitches) 
    197                 // print "p5 & sbp[L]",p5,sbp[L] 
    198          
    199                 RR=(RRI[L]/SBP[L])//as an index, Igor truncates the number to an integer....does NOT round it 
    200                 RR=RR+1 //rr is the loop limit for square around final circle 
    201                 HH=(HTI[L]/(2*SBP[L]))  //as an index, Igor truncates the number to an integer....does NOT round it 
    202                 for(k=-HH;k<HH;k+=1)  // should have +1 for HH to complete to k=HH????? 
    203                         for(i=-RR;i<RR;i+=1)  //should this have i<RR+1 or in above RR=RR+2???? 
    204                                 for(j=-RR;j<RR;J+=1) 
    205                                         x0=sbp*i+P5 
    206                                         y0=SBP*j+P5 
    207                                         z0=SBP*k+p5 
    208                                         if((((y0^2)/(RRI[L]^2))+((x0^2)/(RRI[L]^2)))<=1) 
    209                                                 IX=-1 
    210                                         else 
    211                                                 IX=0 
    212                                         endif  
    213                                         xmid=x0 
    214                                         ymid=y0*cth+z0*sth 
    215                                         zmid=-y0*sth+z0*cth 
    216                                         // end rotation about x begin rotn about y on rotated pts 
    217                                         // 
    218                                         xout=xmid*cph-zmid*sph 
    219                                         xout=xx[L]+xout 
    220                                         yout=ymid 
    221                                         yout=yy[L]+yout 
    222                                         zout=xmid*sph+zmid*cph 
    223                                         zout=zz[L]+zout 
    224  
    225                                         // now print to wave file the point or not depending on whether ix<0 or not 
    226  
    227                                         if (ix<0) 
    228                                         //write to wave file 
    229                                                 InsertPoints nptW,1,xoutW,youtW,zoutW,sbpW,sldW 
    230                                                 xoutW[nptW] = xout 
    231                                                 youtW[nptW] = yout 
    232                                                 zoutW[nptW] = zout 
    233                                                 sbpW[nptW] = sbp[L] 
    234                                                 sldW[nptW] = sld[L] 
    235                                                  
    236                                                 nptW +=1 
    237                                          
    238                                                 //print  xout,yout,zout,sbp[L],sld[L] 
    239                                         //else 
    240                                                 //continue 
    241                                         endif  //for write or not 
    242                                 endfor  // for j 
    243                         endfor  //  for i 
    244                 endfor  //for k  
    245         endfor // for L  
    246  
    247  
    248         // rescale to the sphere size 
    249         xoutW /= FFT_T 
    250         youtW /= FFT_T 
    251         zoutW /= FFT_T 
    252          
    253         return(0) // end do loop cycle for cylinders 
    254 end 
     292 
     293 
    255294 
    256295// triplet to display as a scatter plot in Gizmo 
     
    919958        Label left "test values" 
    920959end 
     960 
     961 
     962 
     963// 
     964///// seems to work - but what do I do about fractional positions? when converting to a matrix? 
     965//// 
     966//// 
     967// 
     968//Function KR_Load() 
     969//      Variable I, J, K, L, PT //integer indices loops, num cylinders, include or exclude sphere in circle 
     970//      Variable STH, SPH, CTH, CPH, FTR  //sine and cosines and deg-->rad conversion: x rotn theta & y rotn phi 
     971//      Variable  XMID, YMID, ZMID, XOUT, YOUT, ZOUT  //cartesian positions used in various calculations 
     972//      Variable RR,HH  //RR is limit of loops, GG used as end of read param files--exit=2, NUM of cylinder 
     973//      Variable  P5  //spheres half diameter shift from grid points (avoids zeros) 
     974//      Variable X0, Y0,Z0 
     975//      Variable PI2 
     976//      Variable ix,nptW 
     977// 
     978// 
     979//      LoadWave /G /N   
     980//      Print S_filename 
     981//      Print S_wavenames 
     982//       
     983//      //Make / O /N=0 OutputPoints 
     984//      //      wave out=OutputPoints 
     985//      //      variable num=numpnts(out) 
     986//       
     987//      KillWaves/Z xx,yy,zz,rri,hti,sbp,rotx,roty,sld,gg 
     988//       
     989//      Rename wave0, xx 
     990//      Rename wave1, yy 
     991//      Rename wave2, zz 
     992//      Rename wave3, RRI 
     993//      Rename wave4, HTI 
     994//      Rename wave5, SBP 
     995//      Rename wave6, ROTX 
     996//      Rename wave7, ROTY 
     997//      Rename wave8, SLD 
     998//      Rename wave9, GG 
     999//       
     1000//      //print  NUM,xx,yy,zz,rri,hti,sbp,rotx,roty,sld,gg 
     1001// 
     1002//       
     1003//      wave gg = gg 
     1004//      variable nn =-1,npts,cyl 
     1005//      npts = numpnts(GG) 
     1006//       
     1007//      for (i=0;i<=npts;i+=1) 
     1008//              if (gg[i]==2) 
     1009//                      cyl = i+1 
     1010//                      break 
     1011//                      print "gg[i],i=",gg,i 
     1012//              endif 
     1013//      endfor 
     1014//      print"cyl=",cyl 
     1015//       
     1016// 
     1017//      wave xx=xx 
     1018//      wave yy=yy 
     1019//      wave zz=zz 
     1020//      wave rri=rri 
     1021//      wave hti=hti 
     1022//      wave sbp=sbp 
     1023//      wave rotx=rotx 
     1024//      wave roty=roty 
     1025//      wave sld=sld 
     1026//       
     1027//      // SBP = diameter of the spheres 
     1028//      NVAR FFT_T = root:FFT_T 
     1029//      FFT_T = SBP[0] 
     1030//      // 
     1031//       
     1032//      Make/O/D/N=0 xoutW,youtW,zoutW,sbpW,sldW 
     1033//       
     1034//      PI2=pi*2 
     1035//      FTR=PI2/360 
     1036//      // print "ftr=", ftr 
     1037//       
     1038//      nptW = 0 
     1039//       
     1040//      for(l=0;l<(cyl);L+=1)   //only change from run4 
     1041//      //for each cylinder of loop use index NUM 
     1042//      //calculate x & y rotation cos and sin 
     1043//              STH=SIN(Rotx[L]*FTR) 
     1044//              SPH=sin(roty[L]*FTR) 
     1045//              CTH=cos(rotx[L]*FTR) 
     1046//              CPH=cos(roty[L]*FTR) 
     1047//              //print "sth",sth 
     1048//              //print"L=",L 
     1049//              P5=SBP[L]/2  //set sphere centers' half-diameter displacement from grid (avoids glitches) 
     1050//              // print "p5 & sbp[L]",p5,sbp[L] 
     1051//       
     1052//              RR=(RRI[L]/SBP[L])//as an index, Igor truncates the number to an integer....does NOT round it 
     1053//              RR=RR+1 //rr is the loop limit for square around final circle 
     1054//              HH=(HTI[L]/(2*SBP[L]))  //as an index, Igor truncates the number to an integer....does NOT round it 
     1055//              for(k=-HH;k<HH;k+=1)  // should have +1 for HH to complete to k=HH????? 
     1056//                      for(i=-RR;i<RR;i+=1)  //should this have i<RR+1 or in above RR=RR+2???? 
     1057//                              for(j=-RR;j<RR;J+=1) 
     1058//                                      x0=sbp*i+P5 
     1059//                                      y0=SBP*j+P5 
     1060//                                      z0=SBP*k+p5 
     1061//                                      if((((y0^2)/(RRI[L]^2))+((x0^2)/(RRI[L]^2)))<=1) 
     1062//                                              IX=-1 
     1063//                                      else 
     1064//                                              IX=0 
     1065//                                      endif  
     1066//                                      xmid=x0 
     1067//                                      ymid=y0*cth+z0*sth 
     1068//                                      zmid=-y0*sth+z0*cth 
     1069//                                      // end rotation about x begin rotn about y on rotated pts 
     1070//                                      // 
     1071//                                      xout=xmid*cph-zmid*sph 
     1072//                                      xout=xx[L]+xout 
     1073//                                      yout=ymid 
     1074//                                      yout=yy[L]+yout 
     1075//                                      zout=xmid*sph+zmid*cph 
     1076//                                      zout=zz[L]+zout 
     1077// 
     1078//                                      // now print to wave file the point or not depending on whether ix<0 or not 
     1079// 
     1080//                                      if (ix<0) 
     1081//                                      //write to wave file 
     1082//                                              InsertPoints nptW,1,xoutW,youtW,zoutW,sbpW,sldW 
     1083//                                              xoutW[nptW] = xout 
     1084//                                              youtW[nptW] = yout 
     1085//                                              zoutW[nptW] = zout 
     1086//                                              sbpW[nptW] = sbp[L] 
     1087//                                              sldW[nptW] = sld[L] 
     1088//                                               
     1089//                                              nptW +=1 
     1090//                                       
     1091//                                              //print  xout,yout,zout,sbp[L],sld[L] 
     1092//                                      //else 
     1093//                                              //continue 
     1094//                                      endif  //for write or not 
     1095//                              endfor  // for j 
     1096//                      endfor  //  for i 
     1097//              endfor  //for k  
     1098//      endfor // for L  
     1099// 
     1100//      // rescale to the sphere size 
     1101//      xoutW /= FFT_T 
     1102//      youtW /= FFT_T 
     1103//      zoutW /= FFT_T 
     1104//       
     1105//      return(0) // end do loop cycle for cylinders 
     1106//end 
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Alpha/Tinker/FFT_Panel.ipf

    r942 r943  
    8989        SetVariable FFTSetVar_6,limits={0,0,0},value= FFT_Qmin,noedit= 1,live= 1 
    9090        Button FFTButton_0,pos={15,79},size={90,20},proc=FFT_MakeMatrixButtonProc,title="Make Matrix" 
    91         Button FFTButton_1,pos={14,157},size={90,20},proc=FFTMakeGizmoButtonProc,title="Make Gizmo" 
    92         Button FFTButton_2,pos={14,187},size={100,20},proc=FFTDrawSphereButtonProc,title="Draw Sphere" 
     91 
    9392        Button FFTButton_3,pos={14,265},size={70,20},proc=DoTheFFT_ButtonProc,title="Do FFT" 
    9493        Button FFTButton_4,pos={180,264},size={130,20},proc=FFT_PlotResultsButtonProc,title="Plot FFT Results" 
    95         Button FFTButton_5,pos={13,218},size={120,20},proc=FFTDrawZCylinderButtonProc,title="Draw Cylinder" 
     94         
     95        Button FFTButton_1,pos={14,150},size={90,20},proc=FFTMakeGizmoButtonProc,title="Make Gizmo" 
     96        Button FFTButton_2,pos={14,175},size={100,20},proc=FFTDrawSphereButtonProc,title="Draw Sphere" 
     97        Button FFTButton_5,pos={14,200},size={130,20},proc=FFTDrawZCylinderButtonProc,title="Draw XYZ Cylinder" 
     98        Button FFTButton_20,pos={14,225},size={130,20},proc=FFTDrawRotCylinderButton,title="Draw Rot Cylinder" 
     99         
    96100//      Button FFTButton_6,pos={134,79},size={90,20},proc=FFTEraseMatrixButtonProc,title="Erase Matrix" 
    97101        Button FFTButton_6a,pos={140,79},size={50,20},proc=FFTSaveMatrixButtonProc,title="Save" 
     
    126130 
    127131EndMacro 
     132 
     133// Save a matrix wave, plus the N, T, and solvent values in the wave note for reloading 
     134Function FFTDrawRotCylinderButton(ba) : ButtonControl 
     135        STRUCT WMButtonAction &ba 
     136         
     137        String win = ba.win 
     138 
     139        switch (ba.eventCode) 
     140                case 2: 
     141                        // click code here 
     142                        Execute "FFTDrawRotCylinder()" 
     143                         
     144                        break 
     145        endswitch 
     146 
     147        return 0 
     148End 
    128149 
    129150// Save a matrix wave, plus the N, T, and solvent values in the wave note for reloading 
  • sans/Dev/trunk/NCNR_User_Procedures/Common/Packages/PlotManager/PlotUtilsMacro_v40.ipf

    r942 r943  
    13061306        list = RemoveFromList("FillSphere;FillSphere3;FillSphereRadius;FillSphereRadiusNoOverlap;FillXCylinder;FillXYCircle;FillXZCircle;FillYCylinder;",list,";") 
    13071307        list = RemoveFromList("FillYZCircle;FillZCylinder;PadMatrix;RandomFill3DMat;RandomPoints2D;SobolFill3DMat;SphereAtEachPoint;UnConnectedRodFill;XYZV_toByteVoxels;",list,";") 
    1308         list = RemoveFromList("MakeTriplet;SobolPoints2D;X_CylindersAtPoints;X_CylindersHexagonalGrid;X_CylindersSquareGrid;maxDistance_Threaded;KR_MultiCylinder;",list,";") 
     1308        list = RemoveFromList("MakeTriplet;SobolPoints2D;X_CylindersAtPoints;X_CylindersHexagonalGrid;X_CylindersSquareGrid;maxDistance_Threaded;KR_MultiCylinder;KR_MultiCylinder_Units;",list,";") 
    13091309        list = RemoveFromList("X_CoreShellCylinderHexGrid;FillPlaneHexagonal;FillPlaneSquareGrid;FillSphereRadiusPeriodic;",list,";") 
    13101310        list = RemoveFromList("Setup_Ur;M_energy;DoRotation;Copy_xyz_to_xyz3d;MultiCyl_Loop;",list,";") 
     
    13211321// from 2013 Simulation 
    13221322//      list = RemoveFromList("EC_Empirical;SmearedEC_Empirical;",list,";") 
    1323         list = RemoveFromList("SAS_XS_Sphere;",list,";") 
     1323        list = RemoveFromList("SAS_XS_Sphere;Generate_UofR;Setup_Ur_HS;",list,";") 
    13241324                 
    13251325        list = SortList(list) 
Note: See TracChangeset for help on using the changeset viewer.