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

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

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

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

Q&A

解決済

1回答

1056閲覧

Processing 直線に沿って四角形を動かす

_jii_

総合スコア3

Processing

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

0グッド

0クリップ

投稿2022/01/03 09:02

Processingでシェイプアニメーションを制作しています。

直線の終点:(e_x,e_y)
直線の始点:(s_x,s_y)
四角形の中心点(x,y)
四角形の動くスピードを10px位として、

直線に沿った四角形のシェイプアニメーション的なのを作りたいです。
Rect(x+z、y+z);
z=z+10;
とすると斜め45度に10ずつ(厳密にいうと10×√3ですが)動くことは理解しています。

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

該当のソースコード

Processing

試したこと

傾きを
float slope_x,slope_y;と定義して
始点と終点の差が0~200くらいをとりえるので、map関数を使うために新たに
float ms_x,ms_y;(mapslope略してms)を定義し

slope_x = e_x-s_x;
slope_y = e_y-s_y;

ms_x = map(slope_x,0,200,1,3);
ms_y = map(slope_y,0,200,1,3);

とし
Rect(x+zms_x,y+zms_y);
z=z+10;

このように組んでみたりしたのですが、増加する値が大きすぎて、すぐ飛んで行ってしまいます。
明らかにこれではうまくいかないのはわかっているのですが、
どう組めばいいかわかりません。
宜しくお願い致します。

補足情報(FW/ツールのバージョンなど)

Processing 3.5.4

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

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

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

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

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

guest

回答1

0

ベストアンサー

mapとかなんで出てくるかしら...難しく考えてごちゃごちゃになっていませんか?

始点(s_x,s_y)終点(e_x,e_y)とすれば方向ベクトル(e_x-s_x,e_y-s_y)
距離は √((e_x-s_x)^2+(e_y-s_y)^2)、これはProcessingでdistという関数が用意されているのでdist(s_x,s_y,e_x,e_y)で求まります。
なので、方向ベクトルの単位ベクトル(長さ1のベクトル)は( (e_x-s_x)/d, e_y-s_y/d)

だけど、Processingで単位ベクトルを求める機能が用意されているからそれを使えば
PVector v;
v=(new PVector(e_x-s_x,e_y-s_y)).normalize();

四角形の座標を中心指定なら
rectMode(CENTER);
としておいて、

あとは、方向の単位ベクトルに距離を掛けて始点に足せばいいのだから
float t; //ちょっとzは違う気がする。媒介変数的なのでtにする
としておいて
rect(s_x+v.x*t, s_y+v.y*t,50,50);
t+=10;
を繰り返せばいいんじゃないですか?

10px/frameだと、200pxは20frame、Processingのデフォルトが60frame/secで1秒足らずで結構速いけど...

投稿2022/01/03 10:39

thkana

総合スコア7652

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

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

_jii_

2022/01/04 02:53

初心者に丁寧な説明ありがとうございますm(__)m できるようになりました!本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問