Changeset 1151


Ignore:
Timestamp:
Nov 25, 2013 2:01:08 PM (8 years ago)
Author:
vondreele
Message:

fix ring & arc masks

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIimage.py

    r1149 r1151  
    279279    return ring,(delt > 90),sumI/len(ring)
    280280   
    281 def makeIdealRing(ellipse,azm=None):
    282     'Needs a doc string'
    283     cent,phi,radii = ellipse
    284     cphi = cosd(phi)
    285     sphi = sind(phi)
    286     if azm:
    287         aR = azm[0]-90,azm[1]-90,azm[1]-azm[0]
    288         if azm[1]-azm[0] > 180:
    289             aR[2] /= 2
    290     else:
    291         aR = 0,362,181
    292        
    293     a = np.linspace(aR[0],aR[1],aR[2])
    294     slr = radii[0]**2/radii[1]
    295     rat2 = (radii[0]/radii[1])**2
    296     if radii[0] > 0.:       #ellipse
    297         ecc = np.sqrt(max(1.-rat2,0.))
    298     else:                   #hyperbola
    299         ecc = np.sqrt(1.+rat2)
    300     rad = slr/(1.+ecc*npcosd(a))
    301     xy = np.array([rad*npsind(a)+cent[0],rad*npcosd(a)+cent[1]])
    302     return xy
    303                    
    304 def calcDist(radii,tth):
    305     'Needs a doc string'
    306     stth = sind(tth)
    307     ctth = cosd(tth)
    308     ttth = tand(tth)
    309     return math.sqrt(radii[0]**4/(ttth**2*((radii[0]*ctth)**2+(radii[1]*stth)**2)))
    310    
    311 def calcZdisCosB(radius,tth,radii):
    312     'Needs a doc string'
    313     cosB = sinb = radii[0]**2/(radius*radii[1])
    314     if cosB > 1.:
    315         return 0.,1.
    316     else:
    317         cosb = math.sqrt(1.-sinb**2)
    318         ttth = tand(tth)
    319         zdis = radii[1]*ttth*cosb/sinb
    320         return zdis,cosB
    321        
    322281def GetEllipse2(tth,dxy,dist,cent,tilt,phi):
    323282    '''uses Dandelin spheres to find ellipse or hyperbola parameters from detector geometry
  • trunk/GSASIIplot.py

    r1148 r1151  
    21132113    from matplotlib.patches import Ellipse,Arc,Circle,Polygon
    21142114    import numpy.ma as ma
    2115     Dsp = lambda tth,wave: wave/(2.*sind(tth/2.))
     2115    Dsp = lambda tth,wave: wave/(2.*npsind(tth/2.))
    21162116    global Data,Masks
    21172117    colors=['b','g','r','c','m','k']
     
    24942494                xyI = []
    24952495                for azm in Azm:
    2496                     xyI.append(G2img.GetDetectorXY(dspI,azm,Data))
     2496                    xyI.append(G2img.GetDetectorXY(dspI,azm,Data))      #what about hyperbola?
    24972497                xyI = np.array(xyI)
    24982498                arcxI,arcyI = xyI.T
     
    25012501                xyO = []
    25022502                for azm in Azm:
    2503                     xyO.append(G2img.GetDetectorXY(dspO,azm,Data))
     2503                    xyO.append(G2img.GetDetectorXY(dspO,azm,Data))      #what about hyperbola?
    25042504                xyO = np.array(xyO)
    25052505                arcxO,arcyO = xyO.T
     
    25192519                Plot.plot(xring,yring,'r+',picker=3)
    25202520            if Data['setRings']:
    2521     #            rings = np.concatenate((Data['rings']),axis=0)
    25222521                N = 0
    25232522                for ring in Data['rings']:
     
    25252524                    Plot.plot(xring,yring,'+',color=colors[N%6])
    25262525                    N += 1           
    2527             for ellipse in Data['ellipses']:
    2528 #                print 'plot:',ellipse
     2526            for ellipse in Data['ellipses']:      #what about hyperbola?
    25292527                cent,phi,[width,height],col = ellipse
    2530                 Plot.add_artist(Ellipse([cent[0],cent[1]],2*width,2*height,phi,ec=col,fc='none'))
    2531                 Plot.text(cent[0],cent[1],'+',color=col,ha='center',va='center')
     2528                if width > 0:       #ellipses
     2529                    Plot.add_artist(Ellipse([cent[0],cent[1]],2*width,2*height,phi,ec=col,fc='none'))
     2530                    Plot.text(cent[0],cent[1],'+',color=col,ha='center',va='center')
    25322531        if G2frame.PatternTree.GetItemText(G2frame.PickId) in 'Stress/Strain':
    25332532            print 'plot stress/strain stuff'
     
    25552554                tth,thick = ring
    25562555                wave = Data['wavelength']
    2557                 x1,y1 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth+thick/2.,wave),Data))),2)
    2558                 x2,y2 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth-thick/2.,wave),Data))),2)
     2556                xy1 = []
     2557                xy2 = []
     2558                Azm = np.linspace(0,362,181)
     2559                for azm in Azm:
     2560                    xy1.append(G2img.GetDetectorXY(Dsp(tth+thick/2.,wave),azm,Data))      #what about hyperbola
     2561                    xy2.append(G2img.GetDetectorXY(Dsp(tth-thick/2.,wave),azm,Data))      #what about hyperbola
     2562                x1,y1 = np.array(xy1).T
     2563                x2,y2 = np.array(xy2).T
    25592564                G2frame.ringList.append([Plot.plot(x1,y1,'r',picker=3),iring,'o'])           
    25602565                G2frame.ringList.append([Plot.plot(x2,y2,'r',picker=3),iring,'i'])
     
    25642569                tth,azm,thick = arc           
    25652570                wave = Data['wavelength']
    2566                 x1,y1 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth+thick/2.,wave),Data),azm)),2)
    2567                 x2,y2 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(max(0.01,tth-thick/2.),wave),Data),azm)),2)
     2571                xy1 = []
     2572                xy2 = []
     2573                aR = azm[0],azm[1],azm[1]-azm[0]
     2574                if azm[1]-azm[0] > 180:
     2575                    aR[2] /= 2
     2576                Azm = np.linspace(aR[0],aR[1],aR[2])
     2577                for azm in Azm:
     2578                    xy1.append(G2img.GetDetectorXY(Dsp(tth+thick/2.,wave),azm,Data))      #what about hyperbola
     2579                    xy2.append(G2img.GetDetectorXY(Dsp(tth-thick/2.,wave),azm,Data))      #what about hyperbola
     2580                x1,y1 = np.array(xy1).T
     2581                x2,y2 = np.array(xy2).T
    25682582                G2frame.arcList.append([Plot.plot(x1,y1,'r',picker=3),iarc,'o'])           
    25692583                G2frame.arcList.append([Plot.plot(x2,y2,'r',picker=3),iarc,'i'])
Note: See TracChangeset for help on using the changeset viewer.