質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

1回答

1093閲覧

一つの画像を左右に分割して右側の画像だけをマウスを使用して動かしたいです。

chanceman

総合スコア2

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

1グッド

0クリップ

投稿2020/05/28 17:47

前提・実現したいこと

一つの画像を左右に分割して右側の画像だけをマウスを使用して動かしたいです。
動きの内容として、X軸はマウスが一番左にあるとき画像は最大で、左側に動かせば小さくなる
Y軸は下に動かせば画像がそのまま下がる。平行移動のような感じです。

発生している問題・エラーメッセージ

scaleとmouseX,Yを使ってみたのですが何も起こりませんでした。

該当のソースコード

Processing3.5.3

PImage img;
PImage leftImg;
PImage rightImg;

void setup() {
size(1920, 1080, P3D);

img = loadImage("earth.jpg");

leftImg = img.get(0, 0, img.width, img.height);
rightImg = img.get(width/2, 0, img.width,height );
}

void draw() {
background(0);

image(leftImg, 0, 0);
image(rightImg, width/2, 0);

textureMode(IMAGE);
beginShape();
texture(img);
vertex(0, 0, 3, 0 ,0);
vertex(width/2, 0,3, img.width/2, 0);
vertex(width/2, height,3,img.width/2,img.height);
vertex(0, height,0, 3, img.height);
endShape();

scale(mouseX);
textureMode(IMAGE);
beginShape();
texture(img);
vertex(width/2,0,0, img.width/2, 0);
vertex(width, 0,0, img.width, 0);
vertex(width,height ,0,img.width ,img.height);
vertex(width/2,height ,0, img.width/2, img.height);
endShape();
}

TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

前回の回答で分割法を2つ入れてしまったため、混じってしまってますね。
vertexでやりましょうか。

Processing

1PImage img; 2 3void setup() { 4 size(1920, 1080, P3D); 5 img = loadImage("earth.jpg"); 6 textureMode(IMAGE); 7} 8 9void draw() { 10 background(0); 11 12 beginShape(); 13 texture(img); 14 vertex(0, 0, 3, 0, 0); 15 vertex(width / 2, 0, 3, img.width / 2, 0); 16 vertex(width / 2, height, 3, img.width / 2, img.height); 17 vertex(0, height, 3, 0, img.height); 18 endShape(); 19 20 //pushMatrix(); 21 // 0,0の位置をwidth/2,mouseY(X:画面中央 Y:mouseYの高さ)にずらす 22 translate(width / 2, mouseY); 23 24 // mouseXを1から0の間の値に変換する 25 // float sはmouseXがwidth(右端)の時に0で、mouseXが0(左端)の時に1になるように計算される 26 float s = norm(mouseX, width, 0); 27 // 消えないほうがいい場合はmap(0.1は1/10サイズ 0.01だと1/100サイズ) 28 //float s = map(mouseX, 0, width, 1, 0.1); 29 30 // スケールを変える(1が等倍 2だと2倍 0.5で半分) 31 scale(s); 32 33 beginShape(); 34 texture(img); 35 36 // すでにtranslateしているので0,0として考える 37 vertex(0, 0, 0, img.width / 2, 0); 38 vertex(width / 2, 0, 0, img.width, 0); 39 vertex(width / 2, height, 0, img.width, img.height); 40 vertex(0, height, 0, img.width / 2, img.height); 41 endShape(); 42 //popMatrix(); 43 44 // この後も描画があるならpushMatrix popMatrixをコメント解除 45}

norm() \ Language (API) \ Processing 3+
map() \ Language (API) \ Processing 3+
scale() \ Language (API) \ Processing 3+

投稿2020/05/28 21:35

編集2020/05/28 21:41
TN8001

総合スコア9862

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chanceman

2020/05/29 00:55

前回に続いて回答ありがとうございます! 今回も丁寧な回答、解説に助かっています。 回答者様のおかげでvertexなど大まかに理解出来ました。 特にscaleの部分の解説は自分の中でモヤモヤしていた部分なのでスッキリしました。 また、頼ってしまうことがあるかもしれませんがその時はよろしくお願いします、、、、(笑) あほみたいなこと言ってすいません。 本当にありがとうございます。
TN8001

2020/05/29 03:43

面白いものができるといいですね がんばってください^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問