ねじれ / Twirl,Swirl,Spiral





2階調だとジャギーが目立ちますね(^^;
ソース見直したら、ここはまだオーバーサンプリングしてなかった。
くやしいので直そう。>>>修正済


アルゴリズム




全てのピクセルを一定の角度で回転させると通常の画像回転ですが、
中心に近いピクセルほど回転角を大きく、
外側へ行くほど回転角を小さくすることでこういった変形ができます。
円周上、またその外の領域では回転角を0にします。

 for Y := 0 to Bitmap.height - 1 do
 for X := 0 to Bitmap.width  - 1 do begin

  //円周からの距離を求める
  R  := Radius - SQRT(Power(X-CX,2)+Power(Y-CY,2));

  if (R<0) then R := 0;         //R<0 円周の外側
  Degree  := (R/Radius) * Deg;  //Deg=入力された角度
  Rad     := DegToRad(Degree);  //ラジアンに変換

  SrcX := Round(Cos(Rad)*(X-CX)-Sin(Rad)*(Y-CY)+CX);
  SrcY := Round(Sin(Rad)*(X-CX)+Cos(Rad)*(Y-CY)+CX);

  Dst[Y,X] := Src[SrcX,SrcY];

 end;


最終更新:2006年12月16日 09:52