Discuss Scratch

AInohogosya
Scratcher
1 post

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

penを使うことのメリットは?
jjhs3213
Scratcher
29 posts

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

ペンのメリット
1.自由に変形させれる図形
 任意の3点を結ぶ三角形の塗り潰しなどが可能。伸縮する腕の表現とかもできる。

2.たくさんの図形を表示させられる。
 クローンは300個までしか出せないという制約があるが、各オブジェクトのステータスをリストで管理し、ペンで描画、あるいはスタンプで描画することで、クローンの制約による問題を解決できる。

3.レイヤー管理が簡単
 スプライトやクローンではレイヤー管理が少し難しい。ペンを用いれば、描画順によってレイヤー管理をすることが可能。また、ペンで描いたものはスプライトの下に表示されるが、スタンプを用いることで、スプライトの上に描画できる。
sekai_seka
Scratcher
1 post

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

ペンで当たり判定をつけるにはどうしたらいいんですか?
jjhs3213
Scratcher
29 posts

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

円同士の当たり判定は、2つの円の中心同士の距離が、2つの円の半径を足したものよりも近ければtrue。線同士は、交わってるかどうかで判定できますが、線の太さを考慮した場合はもう少し複雑になります。この場合は線が交わっている、または線の両端の円の部分からもう一方の線に引いた垂線の距離が2つの線の太さの和/2よりも近かったり、2つの線の両端の距離が太さの和/2よりも近かったりで判定します。三角形は自分が作ったものがあります。
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/1045422699/
これは、各辺同士が交わっているかどうか、また、各頂点が相手の三角形内にあるかどうかで判定しています
takenokodomo
Scratcher
6 posts

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

ペンで三角形の塗りつぶしをしたいのですが、素早くぬりつぶす方法はないでしょうか?
jjhs3213
Scratcher
29 posts

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

tri fill とか、tri filler とか、fast tri filler とかで検索すると出てきます。
inoking
Scratcher
1000+ posts

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

#1 より:
よくある質問
Q. どのような作品が100%penになるのですか?
A. 100%penについての具体的な決まりはありません。そのため、作者が100%penだと思うのであれば100%penを名乗ることができます。
MinyTheMiner
Scratcher
5 posts

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

そういうことなら簡単に作れますよ。
プロジェクト
kokutetu0911
Scratcher
500+ posts

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

文字型とはどういう風に作るのですか?
ito-noizi
Scratcher
100+ posts

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

PTEについてですね。文字型というのがいまいちなにかわからないのですが、いわゆる文字データとして受け取ると、「手書きで書いて、それをプログラムで読み込む方法」があります。事実そうやって作られているPTEもあるのですが、正直何万文字も書くのは難しいです。
そのため、PythonやJavaScriptなどといったScratch外のプログラミング言語を使っていることが多いです。
kokkun1
Scratcher
20 posts

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

https://scratch-mit-edu.ezproxyberklee.flo.org/projects/1064030574/

このプログラムは三角形の塗りつぶしが低速なので代わりとして使うために作ったものです。
ただ、計算量が多く三角形を塗りつぶす場合よりも低速です。turbowarpなどを使わず、プログラムの工夫のみでより高速にしたいのですが、これ以上行える高速化はありますか?
oligami
Scratcher
100+ posts

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

#492

最初に、基本的に描画処理は重く、Web上のJSで行うには適していません。よって、ペンなどを用いることをお勧めしますが、好みの分野なのでお教えします。こういう、3Dレンダリングではなく、計算幾何学の分野に足を踏み入れると、また別の面白さがあります。

計算量を考えると分かりますが、あなたのプログラムではO(n^2)となっています。これは非常に非効率的です。計算量はO(n*log(n))か、O(n)に抑えなければ、爆発してしまいます。あなたが引用して使っている交線判定系のプログラムは数学の領域の考え方を用いています。簡単な応用であり、これは高校範囲であり、まずこの仕組みは最低限理解しておくべきだと思います。

話を戻して、計算幾何学の線分交差を求める分野についてです。
これは、計算幾何学における基本的な問題の一つであり、ネットでうまく計算するといろんな記事が出てくると思います。
詳しく説明するにはここは狭すぎるのですが、簡単に説明すると、線分の個数ではなく、交点の個数に依存するようなアルゴリズムを“output-sensitive algorithm”と言い、線分交差(line segment in-tersection)問題では、平面走査法と呼ばれるアルゴリズムが存在します。
一番効率的で有名なアルゴリズムは、Balaban(1995)のアルゴリズムだと思いますが、平面操作法について詳しく調べて、自力で実装してみることをお勧めします(ていうか文献が少なすぎて自力実装しかないと思います)。

追記:
@kokkun1さんへ。ちょっと汚い言葉を使ってしまいました。すみません。

Last edited by oligami (Sept. 7, 2024 06:47:44)

KimiruHamiru
New Scratcher
500+ posts

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

kokutetu0911 wrote:

文字型とはどういう風に作るのですか?

https://scratch-mit-edu.ezproxyberklee.flo.org/discuss/topic/714036/?page=240#post-8118958

kokutetu0911 wrote:

こんな作品の英語の文字ってどういう風に作っているんですか?
ここでいうことでは違うと思いますが、この文字型?みたいなものの作り方も教えていただけると幸いです。
ボールころころのシリーズの文字形(字形:じけい、glyph)についてですが、

考え方として、ペンで、

「画面上の9つの点」
あ い う

え お か

さ し す
を想定して、

「点い」「点え」の間に線を引く
「点い」「点か」の間に線を引く
「点え」「点か」の間に線を引く
「点え」「点さ」の間に線を引く
「点か」「点す」の間に線を引く

ということをやると、「Aみたいな字形」になる。
というのはいいでしょうか。

https://scratch-mit-edu.ezproxyberklee.flo.org/projects/1061782657/
の延長、というか「プログラムを単純化、一般化、記号化、したもの」です。


ボールころころのシリーズの場合は、実際には
点「い」だったら、左から2番目、上から1番目、だから「2,1」
点「え」だったら、左から1番目、上から2番目、だから「1,2」
などと、「1つの点」を「2つの数字(いわば、その文字の中でのx,y座標です)」で表現していて、
たとえば
定義「1st Processing」に出てくるデータ、「21122132123212133233」であれば、

2112=「点い」、「点え」の間に線を引くという情報
2132=「点い」、「点か」の間に線を引くという情報
1232=「点え」、「点か」の間に線を引くという情報
1213=「点え」、「点さ」の間に線を引くという情報
3233=「点か」、「点す」の間に線を引くという情報
つまりは「Aみたいな字形」
を表している、ようです。

「情報」の部分じゃなく「2点の間に線を引くプログラム」がどうなるかは、ここでは説明しません(長くてできません)が、もとのプログラムで、リスト「data」をどう使っているかの部分を探すと見つかるはずです。


「9つの点」
というのは「アルファベットと数字なら3x3の点で表現できそう」という判断で決めたことかなと思いますが、この数字をどうするかは、目的やかけられる手間、時間など、作る人の都合次第です。3x3じゃなく、1024x1024ぐらいにすると、一般的なOSで使われる、ディスプレイ用のアウトラインフォントと同レベルと言えるかなと思います。紙に印刷される文字の場合で、4096x4096とかだったと思います。(私が以前に調べた時代の数字なので、今どうなっているか正確な値は知りません)

「2つの点の間に線を引く」
という部分のやり方はいろいろ選択肢があって、「線は引かない。点の集まりとして表現する」とか、「2つの点にもっと情報を持たせて、曲線でつなぐ」とかいうやり方もあります。

そもそもの質問の、
「作り方=文字のデザイン、数値データ化」
をどうしているかは、作者に聞かないと確かなことはわかりませんが、3x3程度であれば、手作業でやっていると思います。「方眼紙に書いて、数字として書きだす」とか、「頭の中でやる」とか、「コードを書きながら試す」とかいう話です。

「PTE」と呼ばれるプロジェクトを探してみると「その部分をScratch上でやるもの(font editor)」とか、「こういう方法で作ったよという情報が書かれているもの」も、見つかるかと思います。

PTEは、上を見ると割と際限がない
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/402589361/ の文字種とか https://scratch-mit-edu.ezproxyberklee.flo.org/projects/262564340/ の描画品質とか)
です。コードを読んでみる、という場合は、ボールころころの仕組みは比較的簡潔と思うので、入門用としてよい選択かもと思います。

Last edited by KimiruHamiru (Sept. 6, 2024 15:32:09)

kokutetu0911
Scratcher
500+ posts

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

#494
こんなにたくさん書いてくれてありがとうございます。参考にして作ってみます!
kakeoti
Scratcher
2 posts

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

100%penって、実際作るのは難しいですか?(アクション系)
ioqj
Scratcher
500+ posts

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

kakeoti wrote:

100%penって、実際作るのは難しいですか?(アクション系)
プラットフォーマー系の作品をPenだけを使って再現している人もいますが、かなり高度な内容だと思います。
少なくとも、使用するブロック数は半端ないと思います。
kokkun1
Scratcher
20 posts

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

oligami wrote:

#492

最初に、基本的に描画処理は重く、Web上のJSで行うには適していません。よって、ペンなどを用いることをお勧めしますが、好みの分野なのでお教えします。こういう、3Dレンダリングではなく、計算幾何学の分野に足を踏み入れると、また別の面白さがあります。

計算量を考えると分かりますが、あなたのプログラムではO(n^2)となっています。これは非常に非効率的であり、ぶっちゃけゴミです。計算量はO(n*log(n))か、O(n)に抑えなければ、爆発してしまいます。あなたが引用して使っている交線判定系のプログラムは数学の領域の考え方を用いています。簡単な応用であり、これは高校範囲であり、まずこの仕組みは最低限理解しておくべきだと思います。

話を戻して、計算幾何学の線分交差を求める分野についてです。
これは、計算幾何学における基本的な問題の一つであり、ネットでうまく計算するといろんな記事が出てくると思います。
詳しく説明するにはここは狭すぎるのですが、簡単に説明すると、線分の個数ではなく、交点の個数に依存するようなアルゴリズムを“output-sensitive algorithm”と言い、線分交差(line segment in-tersection)問題では、平面走査法と呼ばれるアルゴリズムが存在します。
一番効率的で有名なアルゴリズムは、Balaban(1995)のアルゴリズムだと思いますが、平面操作法について詳しく調べて、自力で実装してみることをお勧めします(ていうか文献が少なすぎて自力実装しかないと思います)。
返信ありがとうございます。試してみます。
ito-noizi
Scratcher
100+ posts

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

kakeoti wrote:

100%penって、実際作るのは難しいですか?(アクション系)
「難しい」と言われても怖気つくことはありません。「難しい所」がわかればそれを乗り越えるのは思うよりも簡単です。

私はアクションゲームもコスチュームメインで作れれば100%PENで作るのもあまり変わらないと思っています。
アクションゲーム(というかプロジェクト全般)ではコスチュームの描画、物理計算、当たり判定、移動などを行なっていますがそれを100%PENで行おうというだけです。

物理計算などはコスチュームメインのものと同じように出来ますが、「座標管理」という考え方が出てきます。ここで躓いている人はPEN以前の問題なのでコスチュームメインでプロジェクトを作ってみてほしいです。
コスチュームの描画、当たり判定なども定義ブロックを活用して元の定義ブロックを作れれば比較的かんたんにできるはずです。恐らく100%PENで躓く人は元の定義ブロックをつくるところです。なかなか難しいところが多いのですが、100%PENはかなりメジャーな縛り(読み込みが短いなどのいいこともありますが)なので、多くの素材プロジェクトがあります。それを使えばコスチュームメインでつくるプロジェクトと同じようにプロジェクトを作れると思います。
kiccha4636
Scratcher
16 posts

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

ペンで線を描く時、線の端の点が画面外にあったら画面の枠から描き始めたいのですが、どうやって座標を求めれますか?
kokutetu0911
Scratcher
500+ posts

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

kiccha4636 wrote:

ペンで線を描く時、線の端の点が画面外にあったら画面の枠から描き始めたいのですが、どうやって座標を求めれますか?
画面の端の座標から書いたらいいんじゃないんですか?
そもそもの文章が日本語として成り立ってないし、、、

Last edited by kokutetu0911 (Sept. 16, 2024 09:48:40)

Powered by DjangoBB