ページ 11

processingにて対象の図形のみ回転させる方法

Posted: 2015年5月28日(木) 01:49
by 田中太郎
画像を読み込み、ランダムに1ピクセル取り出し、そのピクセルの色で傾いた楕円を描写して、元の画像を完成させるプログラムなのですが、以下のプログラムですと、完成形の画像自体が傾いてしまい求めているプログラムになりません
どのようにしたら楕円のみを傾けることができるのでしょうか?
分かる方いましたらよろしくお願いします!

コード:

PImage img;

void setup()
{
  size(512, 512);
  background(255);
  noStroke();
  img = loadImage("lena.jpg"); 
}

void draw()
{
  int i = int(random(img.width));
  int j = int(random(img.height));
  fill(img.get(i, j));
  rotate(PI / 6);
  ellipse(i, j, 10, 20);
}

Re: processingにて対象の図形のみ回転させる方法

Posted: 2015年5月28日(木) 07:57
by h2so5
17行目のあとでrotate(0);で角度を戻してください。

Re: processingにて対象の図形のみ回転させる方法

Posted: 2015年5月28日(木) 08:30
by 田中太郎
返答ありがとうございます
ですが、rotate(0);を記入しても動作は変わりませんでした
確かdraw関数は実行されるときに座標系がリセットされたと思います
他にも方法があればよろしくお願いします!

Re: processingにて対象の図形のみ回転させる方法

Posted: 2015年5月28日(木) 17:53
by ISLe()
15行目と16行目のあいだにpushMatrix()
17行目と18行目のあいだにpopMatrix()
でどうでしょう。

Re: processingにて対象の図形のみ回転させる方法

Posted: 2015年5月28日(木) 20:15
by 田中太郎
返答ありがとうございます
ですが、こちらも結果に変化はありませんでした

引き続きですが、こうしたらいいんじゃない?といったものがありましたら是非教えて下さい
お願いします

Re: processingにて対象の図形のみ回転させる方法

Posted: 2015年5月28日(木) 23:56
by ISLe()
ああ、すみません。勘違いしてました。

rotate(PI / 6);
ellipse(i, j, 10, 20);
 ↓
pushMatrix();
translate(i, j);
rotate(PI / 6);
ellipse(0, 0, 10, 20);
popMatrix();

これでたぶん。

Re: processingにて対象の図形のみ回転させる方法

Posted: 2015年5月29日(金) 13:25
by 田中太郎
ありがとうございます!
求めていた動作が得られました!

ずっと、回転した後の座標からどうすれば元の座標に戻せるかを考えていたので、座標(0, 0)に描写するというのがまったく思いつきませんでした

またお世話になると思いますが、そのときはよろしくお願いします
ありがとうございました