Discuss Scratch

kokkun1
Scratcher
20 posts

100%penについて話し合う所

tomato-2nd wrote:

penで3角形の塗りつぶしの方法を探しているのですがどなたかわかりますか?3角形の中心を求めたいのですがよくわからないです
私の作ったこのprojectが参考になると思います。
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/764644121/

scratchの存在する三角形塗りつぶし機の中でも以下のものはかなり速い部類だと思います
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/24828481/
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/887673108/
下のものは三角形の形をしたコスチュームを画像効果で歪ませて使うものなので100%penではないです。
tomato-2nd
Scratcher
5 posts

100%penについて話し合う所

kokkun1 wrote:

tomato-2nd wrote:

penで3角形の塗りつぶしの方法を探しているのですがどなたかわかりますか?3角形の中心を求めたいのですがよくわからないです
私の作ったこのprojectが参考になると思います。
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/764644121/

scratchの存在する三角形塗りつぶし機の中でも以下のものはかなり速い部類だと思います
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/24828481/
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/887673108/
下のものは三角形の形をしたコスチュームを画像効果で歪ませて使うものなので100%penではないです。
ありがとうございます!
cocoa1484
Scratcher
48 posts

100%penについて話し合う所

 

tomato-2nd wrote:

kokkun1 wrote:

tomato-2nd wrote:

penで3角形の塗りつぶしの方法を探しているのですがどなたかわかりますか?3角形の中心を求めたいのですがよくわからないです

私の作ったこのprojectが参考になると思います。
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/764644121/

scratchの存在する三角形塗りつぶし機の中でも以下のものはかなり速い部類だと思います
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/24828481/
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/887673108/
下のものは三角形の形をしたコスチュームを画像効果で歪ませて使うものなので100%penではないです。
ありがとうございます!

四角、五角、六角形はどうでしょうか

Last edited by cocoa1484 (Feb. 21, 2024 06:08:05)

abee
Scratcher
1000+ posts

100%penについて話し合う所

それらの多角形はすべて三角形に分解できます。
yamarsukunn
Scratcher
29 posts

100%penについて話し合う所

cocoa1484 wrote:

tomato-2nd wrote:

kokkun1 wrote:

tomato-2nd wrote:

penで3角形の塗りつぶしの方法を探しているのですがどなたかわかりますか?3角形の中心を求めたいのですがよくわからないです

私の作ったこのprojectが参考になると思います。
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/764644121/

scratchの存在する三角形塗りつぶし機の中でも以下のものはかなり速い部類だと思います
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/24828481/
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/887673108/
下のものは三角形の形をしたコスチュームを画像効果で歪ませて使うものなので100%penではないです。
ありがとうございます!

四角、五角、六角形はどうでしょうか
三角形と同じように角を塗りつぶしていく方法はどうでしょうか。
oligami
Scratcher
100+ posts

100%penについて話し合う所

#466

yamarsukunn wrote:

cocoa1484 wrote:

tomato-2nd wrote:

kokkun1 wrote:

tomato-2nd wrote:

penで3角形の塗りつぶしの方法を探しているのですがどなたかわかりますか?3角形の中心を求めたいのですがよくわからないです

私の作ったこのprojectが参考になると思います。
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/764644121/

scratchの存在する三角形塗りつぶし機の中でも以下のものはかなり速い部類だと思います
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/24828481/
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/887673108/
下のものは三角形の形をしたコスチュームを画像効果で歪ませて使うものなので100%penではないです。
ありがとうございます!

四角、五角、六角形はどうでしょうか
三角形と同じように角を塗りつぶしていく方法はどうでしょうか。

四角形までなら条件分岐を増やせば、残りの部分も高効率で塗りつぶせるでしょうが、五角形を超えてくると効率の良いアルゴリズムを見つけたとしても、計算量の関係で生半可なアルゴリズムなら分割してから塗った方が早いと思います
cocoa1484
Scratcher
48 posts

100%penについて話し合う所

四角は簡単ですよね?
⚑ がクリックされたとき
x座標を (0) 、y座標を (0) にする
ペンの色を [#598019] にする
ペンを下ろす
(5) 回繰り返す
(5) 回繰り返す
x座標を (10) ずつ変える
end
y座標を (-1) ずつ変える
end

Last edited by cocoa1484 (April 27, 2024 12:46:01)

abee
Scratcher
1000+ posts

100%penについて話し合う所

その四角形を回転させてみてください。
hagaki
New Scratcher
3 posts

100%penについて話し合う所

絶えず消去と描画を行うためにペンの操作を行う定義を繰り返すとペンの操作にかなり時間がかかっているように感じます。
ペンの操作は「全部消す」1つだけでも重くなりました。
ターボにすれば解決したので重いだけだと思います。
速くする方法はあるのでしょうか。
教えていただきたいです。
yukiscratch44
Scratcher
12 posts

100%penについて話し合う所

hagaki wrote:

絶えず消去と描画を行うためにペンの操作を行う定義を繰り返すとペンの操作にかなり時間がかかっているように感じます。
ペンの操作は「全部消す」1つだけでも重くなりました。
ターボにすれば解決したので重いだけだと思います。
速くする方法はあるのでしょうか。
教えていただきたいです。
場合によりますが軽くするには、できるだけブロック数を少なくするか、無駄なくしたり、画面を再描画せずに実行すると早くなると思います。
TOMO1260
Scratcher
100+ posts

100%penについて話し合う所

hagaki wrote:

絶えず消去と描画を行うためにペンの操作を行う定義を繰り返すとペンの操作にかなり時間がかかっているように感じます。
ペンの操作は「全部消す」1つだけでも重くなりました。
ターボにすれば解決したので重いだけだと思います。
速くする方法はあるのでしょうか。
教えていただきたいです。
定義の設定で、再描画せずに実行にチェックを入れることで解消できます。
すでに入れている場合、動きや見た目などの画面に変かが起こるブロックなら同じことが起こります(30fps)。特に問題はありません。
urotaisemadako
Scratcher
4 posts

100%penについて話し合う所

凄い、僕はpenでそこまでは再現できないです、3Dの場合どうすれば良いでしょうか
KimiruHamiru
New Scratcher
500+ posts

100%penについて話し合う所

hagaki wrote:

絶えず消去と描画を行うためにペンの操作を行う定義を繰り返すとペンの操作にかなり時間がかかっているように感じます。
ペンの操作は「全部消す」1つだけでも重くなりました。
ターボにすれば解決したので重いだけだと思います。
速くする方法はあるのでしょうか。
直接の答えではないのですが、

@greenFlagがクリックされたとき
一瞬で描く // この定義を作るときに出る画面で「再描画せずに実行する」のスイッチをオンにする
定義 一瞬で描く
消す
ペンを下ろす
(1500)回繰り返す
[どこかの場所 v]へ行く
end
ペンを上げる
みたいな、すごく単純な「描画以外何もしないプログラム」を実際に書いてみて

「再描画せずに実行する」のスイッチをオンにする
というのが
・どういう効果なのか、はずすとどう変わるのか、
・「描画以外何もしない」場合に描画速度はどの程度出るのか、

を、体感・実験してみて、「工夫してもこれよりは軽くはならないはず」という数字の目安とかを確認してみると良いと思います。
もっと複雑なプログラムが「これより重い」なら、原因は
・「描画回数=このプログラムの1500に当たる数字、が大きすぎるようだ」とか
・「描画回数は1500以下だった。では、描画以外の処理が重いに違いない」とか
判断がしやすくなります。

あと、この書き方なら「一瞬で描く」を「ループで回す」(つまり「絶えず消去と描画を行う」)場合でも、重くならないはずです。

1500という数字は、環境に左右されてもっと大きかったり小さかったりすると思いますが、個人的な経験から言えば、
・「1500ぐらいまで」なら「重くなることはない」=「1500本の線なら1フレーム(0.033秒)以下で描き終わる」
・「省電力モード」とかすごく限定された環境でも500ぐらいまでなら重くならない
と思います。
yamato0915
Scratcher
60 posts

100%penについて話し合う所

自分の3Dのプロジェクトに面を塗りつぶす機能を作りたいです。

一旦面が目線から見えるかは置いておいて、3角形から、もうちょっと頂点の多い多角形を塗りつぶしたいです。
全部の頂点の座標はわかっています。
全くプログラムの見当がつかず困っています
3Dなので、消したり描いたりが重すぎない方が良いのですが、何かいい方法はありませんでしょうか…?
kokkun1
Scratcher
20 posts

100%penについて話し合う所

yamato0915 wrote:

自分の3Dのプロジェクトに面を塗りつぶす機能を作りたいです。

一旦面が目線から見えるかは置いておいて、3角形から、もうちょっと頂点の多い多角形を塗りつぶしたいです。
全部の頂点の座標はわかっています。
全くプログラムの見当がつかず困っています
3Dなので、消したり描いたりが重すぎない方が良いのですが、何かいい方法はありませんでしょうか…?

三角形をある程度高速に書く方法があれば、凸な多角形は適当にやれば三角形に分割できるので簡単にかけます。凸じゃなくても形がわかっているのならどのように分割するのか人間が指定してあげれば良いです。任意の多角形をかけるようにするのは自己交差とかまで含めて考えるとかなり複雑になります。
あなたのプロジェクトを見る限り凸多角形が書きたいようなので、つまり高速に三角形を描く方法があればあとは簡単、ということになります。

高速に三角形をpenで描く最も簡単な方法は(私が知る限り)三角形の内接円を使う方法です。
scratchのpenは円形の形になる仕様なので、
三角形の内接円をそれで塗りつぶした後、太さを半分にして周りを塗り、太さをもう半分にしてさらに余った周りの部分をぬり、さらに角にあまりが残るのでまた太さを半分にして塗り、というのを太さが一定の値(0.1とか)を下回るまで続けるようにする方法です。

自分の実装はこんな感じです:https://scratch-mit-edu.ezproxyberklee.flo.org/projects/764644121/
kokkun1
Scratcher
20 posts

100%penについて話し合う所

#476
追記:海外の方でスタンプと画像効果を組み合わせることで、高速かつテクスチャを貼れる三角形塗りつぶしエンジンを作っている人がいます。
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/887673108/
yamato0915
Scratcher
60 posts

100%penについて話し合う所

kokkun1 wrote:

#476
追記:海外の方でスタンプと画像効果を組み合わせることで、高速かつテクスチャを貼れる三角形塗りつぶしエンジンを作っている人がいます。
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/887673108/
色々な方法を教えていただきありがとうございます
海外の方のものだとテクスチャが貼れるんですね!
別のことにも使えそうですね
タメになりましたありがとうございました

追記:実装できました!凹多角形に対応すれば完了ですb

Last edited by yamato0915 (June 29, 2024 15:08:55)

jjhs3213
Scratcher
29 posts

100%penについて話し合う所

https://scratch-mit-edu.ezproxyberklee.flo.org/projects/1043438009/
のめり込んでいるポリゴンや重なりが循環しているポリゴンを除いて、完璧に三次元上の三角形をソートし、描画するアルゴリズムを開発しました。BSPとは違い、三角形をそのままソートするだけのアルゴリズムなので、動作があまり重くありません。ただ、まだZソートに比べると遅いです。アルゴリズムについてはメモとクレジットの欄を参照してください。
dengon-kun
Scratcher
15 posts

100%penについて話し合う所

100%penの四角を回す時には、
[あああ v] を [90] にする
ずっと
ペンを上げる
消す
((あああ) v) 度に向ける
x座標を (0) 、y座標を (0) にする
(50) 歩動かす
↻ (90) 度回す
ペンを下ろす
(50) 歩動かす
↻ (90) 度回す
(3) 回繰り返す
(100) 歩動かす
↻ (90) 度回す
end
(50) 歩動かす
[あああ v] を (1) ずつ変える
end
でいいんですか?
中を塗りつぶす方法はなんですか?
cocoa1484
Scratcher
48 posts

100%penについて話し合う所

dengon-kun wrote:

100%penの四角を回す時には、
[あああ v] を [90] にする
ずっと
ペンを上げる
消す
((あああ) v) 度に向ける
x座標を (0) 、y座標を (0) にする
(50) 歩動かす
↻ (90) 度回す
ペンを下ろす
(50) 歩動かす
↻ (90) 度回す
(3) 回繰り返す
(100) 歩動かす
↻ (90) 度回す
end
(50) 歩動かす
[あああ v] を (1) ずつ変える
end
でいいんですか?
中を塗りつぶす方法はなんですか?

https://scratch-mit-edu.ezproxyberklee.flo.org/projects/1051193619/
はどうでしょう

Last edited by cocoa1484 (July 31, 2024 03:56:16)

Powered by DjangoBB