0

ポイント x、y の配列と、指定されたポイントでのそれぞれの角度があります。それらの点に接線をプロットしたいのですが、どうすればよいかわかりません。

http://postimg.org/image/s2y1pqqaj/

コマンド ウィンドウに示すように、1 列目には x ポイント、2 列目には y ポイント、3 列目にはそれぞれの接線角度が含まれます。図 1 は、x 点と y 点の間のプロットです。3列目でわかるように、すべてのポイントでの勾配、つまり接線角度を知っています。しかし、これらのポイントで接線を描画するためにそれを実装する方法を理解できません。接線 'y = mx + b' の方程式も、m - 勾配、b は y 切片です。ありがとうございます。

ここにコードがあります

% Fill in parr a list of points and tangents to be used for display.
% @param parr (x,y) Array of points.
% @param tan Array of tangents.
% @param lengthStep Distance between points.

 function [x y tan] = GetPointListForDisplay(m_Length,r1,r2,count)

   global nn ca ce length; 

   GetLength = m_Length;
   length = GetLength;   

   ca = GetCurvatureAtDeltaLength(0.0);     
   ce = GetCurvatureAtDeltaLength(length);

   %if ((abs(ca) < 1.0/10000.0) && (abs(ce) < 1.0/10000.0))
   %end

   radius = 1.0 ./ max(abs(ca), abs(ce));

   %if (radius < 0.1)
   %end

   nn = 3 + (180.0 * length/(2*pi*radius));  % Using modified formula of arc here

   lengthStep = length/nn; 
   currLen = -lengthStep;

   while (1) 

       currLen = currLen + lengthStep;
       if (currLen > m_Length)

           currLen = m_Length; 
       end

       [x,y] = GetPointAtDeltaLength(currLen);
       [tan] = GetTangentGridBearingAtDeltaLength(currLen); 

       z(count,1) = x;
       z(count,2)= y;
       z(count,3)= tan;

       figure(1);

       %plot(z(count,1).*sin(z(count,3)),z(count,2).*cos(z(count,3)),'b*');
       %plot(z(1,count).*cos(z(3,count)),z(2,count).*sin(z(3,count)),'b*');
       plot(z(count,1),z(count,2),'b*');
       %plot(z(1,count),z(2,count),'b*');
       hold on;

       %pause(0.1);

       count=count+1;
       axis equal;     

       if (currLen >= m_Length)
          z(count,1)= tan
          break;
       end

   end

 end 

よろしく、

マリナル

4

1 に答える 1

2
ii = index of the point where you want to get the tangent
x1 = left bound of your tangent
x2 = right bound of your tangent
xT = z(ii,1)  %argument where you want to get the tangent
yT = z(ii,2)  %corresponding y
mT = tan(z(ii,3))   % corresponding slope

接線が 1 つだけ必要な場合は、次のようにプロットします。

plot( [x1,xT,x2] , [yT-mT*(xT-x1), yT, yT+mT*(x2-xT)] )

iiそれ以外の場合は、反復変数として使用して、より多くの接線にループを使用してください。

方程式の文字列は次のようになります

eq = strcat('y = ',num2str(mT),'*x + ',num2str(yT-mT*xT)) 
于 2013-09-18T13:10:36.887 に答える