2

「x-vector」、「y-vector」のポイントの座標を指定してポリゴンを計算する必要がありました(座標が時計回りに並べられ、砂時計のようなポリゴンが含まれていないことだけがわかっています)。私はこのコードを書いてみました:

function [areaofit] = Polygarea(xs,ys,cor,prevsum)
  if(length(xs)~=length(ys))
    disp('dimentions error!please try again');
  end
  if(nargin==2)
    cor=1;
    prevsum=0;
  end
  if(cor==length(xs)-1)
    areaofit=prevsum;
    figure(1);
    fill(xs,ys,'r');   
    title(['Area = ' num2str(areaofit)]);
  end
  if(cor~=length(xs)-1)
    mat=[xs(1) ys(1) 1;zeros(2,3)];
    for k=2:3
      mat(k,1)=xs(cor+k-1);
      mat(k,2)=ys(cor+k-1);
      mat(k,3)=1;
    end
    farea=prevsum+abs(det(mat))/2;
    Polygarea(xs,ys,cor+1,farea);
  end

この関数は任意の凸多角形で機能しますが、機能する凹多角形があります (「星」など)。私のソリューションで何を改善できますか? ありがとう

4

1 に答える 1