www.pudn.com > geometric.rar > closetraceazi.m, change:2004-08-13,size:3322b


function ind = closetraceazi(xxx,yyy,xw,yw,rd,azi)   % function ind = closetraceazi(xxx,yyy,xw,yw,rd,azi)  % %  finds closest trace (point) in line to given well location (xw,yw) %  (as long as the trace is within a radius rd) %  the distance MUST be defined along the azimuth azi, given in degrees %  line defined by points xxx(i),yyy(i) %  returns index of closest trace  %  returns null if no trace is close enough % %  T. N. BISHOP,  DECEMBER 1993,  CPTC CANADA %   see also seis2well, linewelltie % % NOTE: It is illegal for you to use this software for a purpose other % than non-profit education or research UNLESS you are employed by a CREWES % Project sponsor. By using this software, you are agreeing to the terms % detailed in this software's Matlab source file.   % BEGIN TERMS OF USE LICENSE % % This SOFTWARE is maintained by the CREWES Project at the Department % of Geology and Geophysics of the University of Calgary, Calgary, % Alberta, Canada.  The copyright and ownership is jointly held by  % its author (identified above) and the CREWES Project.  The CREWES  % project may be contacted via email at:  crewesinfo@crewes.org %  % The term 'SOFTWARE' refers to the Matlab source code, translations to % any other computer language, or object code % % Terms of use of this SOFTWARE % % 1) Use of this SOFTWARE by any for-profit commercial organization is %    expressly forbidden unless said organization is a CREWES Project %    Sponsor. % % 2) A CREWES Project sponsor may use this SOFTWARE under the terms of the  %    CREWES Project Sponsorship agreement. % % 3) A student or employee of a non-profit educational institution may  %    use this SOFTWARE subject to the following terms and conditions: %    - this SOFTWARE is for teaching or research purposes only. %    - this SOFTWARE may be distributed to other students or researchers  %      provided that these license terms are included. %    - reselling the SOFTWARE, or including it or any portion of it, in any %      software that will be resold is expressly forbidden. %    - transfering the SOFTWARE in any form to a commercial firm or any  %      other for-profit organization is expressly forbidden. % % END TERMS OF USE LICENSE      ind = [];      dclose= closeline(xxx,yyy,xw,yw);      if dclose <= rd       mm = tan(2*pi*azi/360.);       bb = yw - mm*xw;       dmin = inf;       m = diff(yyy)./diff(xxx);       b = yyy(2:length(yyy)) - m.*xxx(2:length(xxx));       xc = (bb - b)./(m - mm);       yc = m.*xc + b;       for i = 1:(length(xxx)-1)          i1 = i + 1;         if ~isempty(between(xxx(i),xxx(i1),xc(i),2))            if ~isempty(between(yyy(i),yyy(i1),yc(i),2))  %   find closest trace (point in xxx,yyy) to point             if abs(xc(i)-xxx(i)) < abs(xc(i)-xxx(i1))  	      ind = i;             else 	      ind = i1;  	    end             d=sqrt( (xxx(ind)-xw).^2 + (yyy(ind)-yw).^2 );             if(d < dmin)               dmin = d;       	      indmin = ind; 	    end           end         end       end %      plot(xxx(indmin),yyy(indmin),'c*')  plot closest trace point       if dmin <= rd   %min.dist of all points is less than radius         ind = indmin;       else      %min.dist along azimuth not less than radius         ind = [];       end     else       ind = [];   %not close enough to even check     end