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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
田中太郎
記事: 24
登録日時: 12年前

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

#1

投稿記事 by 田中太郎 » 8年前

画像を読み込み、ランダムに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);
}

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

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

#2

投稿記事 by h2so5 » 8年前

17行目のあとでrotate(0);で角度を戻してください。

田中太郎
記事: 24
登録日時: 12年前

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

#3

投稿記事 by 田中太郎 » 8年前

返答ありがとうございます
ですが、rotate(0);を記入しても動作は変わりませんでした
確かdraw関数は実行されるときに座標系がリセットされたと思います
他にも方法があればよろしくお願いします!

ISLe()

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

#4

投稿記事 by ISLe() » 8年前

15行目と16行目のあいだにpushMatrix()
17行目と18行目のあいだにpopMatrix()
でどうでしょう。

田中太郎
記事: 24
登録日時: 12年前

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

#5

投稿記事 by 田中太郎 » 8年前

返答ありがとうございます
ですが、こちらも結果に変化はありませんでした

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

ISLe()

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

#6

投稿記事 by ISLe() » 8年前

ああ、すみません。勘違いしてました。

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

これでたぶん。

田中太郎
記事: 24
登録日時: 12年前

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

#7

投稿記事 by 田中太郎 » 8年前

ありがとうございます!
求めていた動作が得られました!

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

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

閉鎖

“C言語何でも質問掲示板” へ戻る