Discuss Scratch
- jjhs3213
-
29 posts
100%penについて話し合う所
ペンのメリット
1.自由に変形させれる図形
任意の3点を結ぶ三角形の塗り潰しなどが可能。伸縮する腕の表現とかもできる。
2.たくさんの図形を表示させられる。
クローンは300個までしか出せないという制約があるが、各オブジェクトのステータスをリストで管理し、ペンで描画、あるいはスタンプで描画することで、クローンの制約による問題を解決できる。
3.レイヤー管理が簡単
スプライトやクローンではレイヤー管理が少し難しい。ペンを用いれば、描画順によってレイヤー管理をすることが可能。また、ペンで描いたものはスプライトの下に表示されるが、スタンプを用いることで、スプライトの上に描画できる。
1.自由に変形させれる図形
任意の3点を結ぶ三角形の塗り潰しなどが可能。伸縮する腕の表現とかもできる。
2.たくさんの図形を表示させられる。
クローンは300個までしか出せないという制約があるが、各オブジェクトのステータスをリストで管理し、ペンで描画、あるいはスタンプで描画することで、クローンの制約による問題を解決できる。
3.レイヤー管理が簡単
スプライトやクローンではレイヤー管理が少し難しい。ペンを用いれば、描画順によってレイヤー管理をすることが可能。また、ペンで描いたものはスプライトの下に表示されるが、スタンプを用いることで、スプライトの上に描画できる。
- jjhs3213
-
29 posts
100%penについて話し合う所
円同士の当たり判定は、2つの円の中心同士の距離が、2つの円の半径を足したものよりも近ければtrue。線同士は、交わってるかどうかで判定できますが、線の太さを考慮した場合はもう少し複雑になります。この場合は線が交わっている、または線の両端の円の部分からもう一方の線に引いた垂線の距離が2つの線の太さの和/2よりも近かったり、2つの線の両端の距離が太さの和/2よりも近かったりで判定します。三角形は自分が作ったものがあります。
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/1045422699/
これは、各辺同士が交わっているかどうか、また、各頂点が相手の三角形内にあるかどうかで判定しています
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/1045422699/
これは、各辺同士が交わっているかどうか、また、各頂点が相手の三角形内にあるかどうかで判定しています
- jjhs3213
-
29 posts
100%penについて話し合う所
tri fill とか、tri filler とか、fast tri filler とかで検索すると出てきます。
- kokkun1
-
20 posts
100%penについて話し合う所
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/1064030574/
このプログラムは三角形の塗りつぶしが低速なので代わりとして使うために作ったものです。
ただ、計算量が多く三角形を塗りつぶす場合よりも低速です。turbowarpなどを使わず、プログラムの工夫のみでより高速にしたいのですが、これ以上行える高速化はありますか?
このプログラムは三角形の塗りつぶしが低速なので代わりとして使うために作ったものです。
ただ、計算量が多く三角形を塗りつぶす場合よりも低速です。turbowarpなどを使わず、プログラムの工夫のみでより高速にしたいのですが、これ以上行える高速化はありますか?
- oligami
-
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さんへ。ちょっと汚い言葉を使ってしまいました。すみません。
最初に、基本的に描画処理は重く、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
-
500+ posts
100%penについて話し合う所
文字型とはどういう風に作るのですか?
https://scratch-mit-edu.ezproxyberklee.flo.org/discuss/topic/714036/?page=240#post-8118958
こんな作品の英語の文字ってどういう風に作っているんですか?ボールころころのシリーズの文字形(字形:じけい、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)
- ioqj
-
500+ posts
100%penについて話し合う所
プラットフォーマー系の作品をPenだけを使って再現している人もいますが、かなり高度な内容だと思います。 100%penって、実際作るのは難しいですか?(アクション系)
少なくとも、使用するブロック数は半端ないと思います。
- kokkun1
-
20 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)のアルゴリズムだと思いますが、平面操作法について詳しく調べて、自力で実装してみることをお勧めします(ていうか文献が少なすぎて自力実装しかないと思います)。
- ito-noizi
-
100+ posts
100%penについて話し合う所
「難しい」と言われても怖気つくことはありません。「難しい所」がわかればそれを乗り越えるのは思うよりも簡単です。 100%penって、実際作るのは難しいですか?(アクション系)
私はアクションゲームもコスチュームメインで作れれば100%PENで作るのもあまり変わらないと思っています。
アクションゲーム(というかプロジェクト全般)ではコスチュームの描画、物理計算、当たり判定、移動などを行なっていますがそれを100%PENで行おうというだけです。
物理計算などはコスチュームメインのものと同じように出来ますが、「座標管理」という考え方が出てきます。ここで躓いている人はPEN以前の問題なのでコスチュームメインでプロジェクトを作ってみてほしいです。
コスチュームの描画、当たり判定なども定義ブロックを活用して元の定義ブロックを作れれば比較的かんたんにできるはずです。恐らく100%PENで躓く人は元の定義ブロックをつくるところです。なかなか難しいところが多いのですが、100%PENはかなりメジャーな縛り(読み込みが短いなどのいいこともありますが)なので、多くの素材プロジェクトがあります。それを使えばコスチュームメインでつくるプロジェクトと同じようにプロジェクトを作れると思います。
- kiccha4636
-
16 posts
100%penについて話し合う所
ペンで線を描く時、線の端の点が画面外にあったら画面の枠から描き始めたいのですが、どうやって座標を求めれますか?
- kokutetu0911
-
500+ posts
100%penについて話し合う所
画面の端の座標から書いたらいいんじゃないんですか? ペンで線を描く時、線の端の点が画面外にあったら画面の枠から描き始めたいのですが、どうやって座標を求めれますか?
そもそもの文章が日本語として成り立ってないし、、、
Last edited by kokutetu0911 (Sept. 16, 2024 09:48:40)