有一些折线图,横坐标纵坐标确定,怎么才能把曲线图的折点值读出来啊,紧急求救!!

解决方案 »

  1.   

    我考虑如下算法,楼主可以试试,假如x在[a,b]闭区间内可以构造如下函数:
    function FindZD(ZD:array of Integer):Integer;
    var
      x:Integer;
    begin
      Result:=0;
      for x:=a+1 to b-1 do
       if (F(x)-F(x-1))<>(F(x+1)-F(x)) then
       begin
         ZD[n]=x;//返回折点横坐标
         Inc(Result);
       end;
    end;
    而F(x)你可以如下定义(假定其值域为[y1,y2]):
    function F(x:Integer):Integer;
    begin
      Result:=y1;
      while Result<y2-1 do
      begin
        if Pixels[x,y] and Pixels[x,y+1] and Pixels[x,y+2]<>0 then
           Inc(Result,3)//连续3点相同则该三点不在曲线上
        else
        begin//其它情况说明连续3点有一点在曲线上
          if Pixels[x,y]=Pixels[x,y+1] then
             Result:=y+2
          else if Pixels[x,y]=Pixels[x,y+2] then
                  Result:=y+1
               else
                  Result:=y;
          Break;
        end;
      end; 
    end;