ドローイングソフトの作り方
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん
NGNGスナップをきかせたり、
するにはどうしたらいいの?
という疑問にこたえていくスレです。
まずは、円などのオブジェクトをどうやって選択させるのか?
0002デフォルトの名無しさん
NGNG図書館へGO
0003名無しさん
NGNGお勧め図書は?
0004デフォルトの名無しさん
NGNGならばという前提だが、
しょせん「つかむもの」と「つかまれるもの」しかないんで、
その二者の関連や立場を考えれば、答えは出るはずだ。
たとえば、ありがちなGUI構成では、
「移動させる」と「変形させる」は
「図形オブジェクトのどのへんがつかまれるか?」で
識別されているわけだ。
となると、図形オブジェクトは、それらのされる事柄の数に
見合った数の「つかまれる場所」オブジェクトを、持つはずだ。
つまり「ここをつかまれたら図形を移動するObject」や
「ここをつかまれたら図形を変形するObject」だ。
0005デフォルトの名無しさん
NGNG捕まえられると身動き取れなくなり猫のように意のままにされる。
よって今>>4がいい事言った。
0006デフォルトの名無しさん
NGNG0007名無しさん
NGNGどれが選択されたのか検査(検索)するやり方は?
00084じゃないけど
NGNGちょっと賢い方法:領域分割して候補を絞る。
笑える方法 :別バッファにピクセル毎にobj.id書き込む(w
すんません。ぼくただのばかです。ゆるしてください。
0009名無しさん
NGNG笑える方法の場合、
Zバッファ的な要素を比べる必要はないのね?
0010名無しさん
NGNGちょっと賢い方法ですけど、
どういう分割をするんですか?
0011名無しさん
NGNGオブジェクトが生成、移動、変形されるごとに、
大まかに分けた領域に登録し直すのですか?
0012ただのばか
NGNG>>9
書く順番を変えるか、バッファに不可情報をもたせるかですね。
>>10-11
11さんでOKだと思います。QuadTree(四分木)とかも調べてみて
ください。
0013ただのばか
NGNG鬱過ぎる
0014名無しさん
NGNGつかえばよいの?
http://www.na.cse.nagoya-u.ac.jp/~reiji/lect/alg99/sec7-4.html
0015デフォルトの名無しさん
NGNG0016名無しさん
NGNGQuad Treeのよい資料がでてこないですぅ。
0017デフォルトの名無しさん
NGNG英語で良いか?
ttp://lcavwww.epfl.ch/~balmelli/software/quadtree/
001816
NGNG英語だめ
訳して
0019デフォルトの名無しさん
NGNG0020ただのばか
NGNG#(厨|消)房だからなんて言い訳は駄目です。
英語が出来ないと将来肉体労働プログラマしか道がありません。
四分木でもヒットしませんか?
0021デフォルトの名無しさん
NGNG本屋にGO!
0023名無しさん
NGNG実際どのように応用すればいいのでしょう。
たとえば、キャンバスみたいなところに四角形を書いているとして。
その大きさが256x256ぐらいあるとして
検索時の最小の領域として16x16ぐらいの細かい領域を考えて、
>>11さんのようにその都度登録しなおくとします。
マウスでクリックした領域Aに一部でも入っていて実際登録されている
四角形の座標だけを対象とする...
四分木はどこに応用されているんでしょ?
0024デフォルトの名無しさん
NGNG二次元図形の領域を分割する手法として、
上下に分割するのと左右に分割するのを
交互にやることで絞り込んで行く、ってのが有った。
4分ってのはもしやそれのこと?
1次元データ(つまり配列)のバイナリサーチ(=2分検索)を
2次元に拡張したようなものだ、という解説が有ったので。
たしかに、x軸とy軸について交互にバイナリサーチするようなもの、だろうね。
すると3次元データは8分木で取り扱えるのかな(わら
>>9
BringToFrontされたら、されたObjectがPixelたちに
自分のIDを告知しまくる、んじゃないかな。
もちろん(?)SendToBackは、自分以外のObjectに
順次BringToFrontさせる、というアルゴリズムで、書く。
うげ、富豪プログラムもいいとこだな。重そう。
0025ただのばか
NGNG>すると3次元データは8分木で取り扱えるのかな(わら
大当たりです。レイトレなんかで交差判定に使われます。
0026ただのばか
NGNG>BringToFrontされたら(略)
むしろ、Z-bufferのようにバッファにZ値を置いておくか、
オブジェクトのリストをZソートかけるかして毎回全部書
き直したほうが良いと思います。富豪プロにはかわりあり
ませんが。
0027デフォルトの名無しさん
NGNG奥行き順で矩形でマウスが入ってるかをチェックした後ですけど
キャンバスを白黒で作って、見えてるのと同じペンサイズで線とか円とか書いて
Pixelで判定してました>上司
そこそこのオブジェクト数なら、そこそこ摘めて、そこそこ動かせるので
現在も採用されています
0028デフォルトの名無しさん
NGNG今手元に有る「プログラマのための幾何学入門」がまさにぴったりかと。安かったし。
ただし答えだけ載ってるアンチョコ本に近いので勉強には不向き。
っていうか絶版くさいな(笑
http://shopping.yahoo.co.jp/shop?d=jb&id=03090983
目次抜粋
1,点、直線
1.6 2点間を通る直線
1.8 1点を通り直線に垂直な直線
2 点、直線、円
2.7 2点を通る与えられた半径の円
2.11 直線と円に接する与えられた半径の円
3 点、線分、弧
3.2 点から[線分]までの距離
9 作画
9.5ピクセルデバイス上の円
9.6クリッピング
0029優良スレかも
NGNGのテキストを使って授業をしてたけど、
こういうの無かったなぁ。
勉強になります。
0030デフォルトの名無しさん
NGNGっていう主旨のサイトあったよね。
URL覚えてない。覚えてる人書いてくれー
0031名無しさん
NGNG印刷も想定しているキャンバスみたいなもんの場合は?
0032ほええええ
NGNG0033デフォルトの名無しさん
NGNGttp://www.fukkan.com/
0034デフォルトの名無しさん
NGNG初心者のうちは全部試してみるのが一番良いというのが真実かも
しれんが、、、
まあ目的次第だろうだけど、トレーニングとしてやるなら2で
Quad Tree、なーんも考えたくなければ 1,3。特にメモリを大
量に消費してもいいなら 3 にでもしとけば標準関数でメモリ
DC(or pixmap) に書き込むだけでいいので楽なんじゃない
かな。
0036デフォルトの名無しさん
NGNGWYSWYG なもの作るにはどうするんだ?
って聞いてると思われ。
ちゃう? >>31
0037デフォルトの名無しさん
NGNG蛇足だと思うが、windowsだと、WindowsのObject
(つまりWindowHandle)のメッセージとして
色んなことがやれるよな。
それこそ、1つのObjectの上の「どのへんを」つつかれたか?が
判るメッセージってのも有る。
なんだっけあれ?なんたらHITTESTっていうメッセージがあるよな。
Windowsの一般的な「タイトルバー」を掴んだら「Drag」できるとか
「ふち」を掴んだら「Resize」できるとか、が
それによって実現されているそうな。
このメッセージへの応答を、自分の都合よいように書き換えてしまえば…
ただ、WindowHandleを量産すると、往年のwin9x環境だと
いわゆるリソース不足とかいって叩き落されたりするんで、
つまり効率とかは良いわけではない戦略であるらしく。
0039デフォルトの名無しさん
NGNG0041デフォルトの名無しさん
NGNGたしか。
■ このスレッドは過去ログ倉庫に格納されています