GUIの作り方
■ このスレッドは過去ログ倉庫に格納されています
00011
NGNG0002デフォルトの名無しさん
NGNG< `ш´> >>1 お前の感じている感情は精神疾患の一種だ。
_φ___⊂) しずめる方法は俺が知っている。俺に任せろ
/旦/三/ /|
| ̄ ̄ ̄ ̄ ̄| |
| 流鬱百円 |/
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG関連リンクすら貼らずにスレを立てる人間は、
目立ちたがりのくせに能力は著しく人に劣る無能者
0005デフォルトの名無しさん
NGNG聞きかじった言葉を深く考えずに右から左に流す知ったかぶりの無教養。
だが>>1よりはマシ。
0006デフォルトの名無しさん
NGNG| ̄ ̄ ̄ ̄ ̄|
0007デフォルトの名無しさん
NGNG「ヒト」を「他人」と書くのはただの当て字なので、
表現の一つとして当て字好きな漫画などでよく使われるが標準的なものではない
http://dictionary.goo.ne.jp/search.php?MT=%A4%D2%A4%C8&kind=jn&mode=0&base=1&row=3
聞きかじった言葉を深く考えずに右から左に流す知ったかぶりの無教養。
だが>>1よりはマシ。
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG●ワールドタイム:世界50都市(27タイムゾーン)の時刻表示、NOCコード表示、サマータイム設定機能付き
●ストップウオッチ(1/100秒、60分計、スプリット付き) ●時刻アラーム2本(曜日設定が可能) ●ELバックライト(残照機能付き)
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG人というのは他人ではなく人類を示しているということ。
聞きかじった言葉を深く考えずに右から左に流す知ったかぶりの無教養。
だが>>1よりマシ。
0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNGsが抜けてる罠。
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG00171
NGNG関連する情報は必要と思った人が、該当する箇所をリンクしてください。
0019デフォルトの名無しさん
NGNGpack .b
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGあとは力技で書くべし!
0022デフォルトの名無しさん
NGNGは?GUI?
そんなのドラッグアンドドロップで一発だぜ。
0023デフォルトの名無しさん
NGNGアホか。
だが>>1よりはマシ。
00241
NGNGグラフィックスプログラミング応用
という本を買ったのでまず参考にします。
00251
NGNG直線を描く
現在位置から指定の点まで直線を引く
現在位置から指定の長さの直線を引く
現在位置を指定の点に移動する
現在位置を指定の長さだけ移動する
長方形を描く
円を描く
円弧を描く
楕円を描く
多角形を描く
線幅と線のスタイルを設定する
00261
NGNG長方形を描いて内部を塗りつぶす
3次元の直方体を描いて前面を塗りつぶす
多角形を描いて塗りつぶす
扇形を描いて塗りつぶす
楕円の扇型を描いて塗りつぶす
楕円を描いて塗りつぶす
閉じた領域を塗りつぶす
塗りつぶしパターンと色を設定
ユーザー定義の塗りつぶしパターンと色を設定
0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNGTRONで言うとディスプレイプリミティブっていうやつだな。
http://www.sakamura-lab.org/TRON/BTRON/BTRON3/os_spec/dp/dp.html
この上にウィンドウマネージャーを載せるのがセオリーだ。
で、グラフィックス描画について語りたいのか、ウィンドウ管理手法について語るのか
どっちよ?
それとも単にアプリケーションでGUI部品を使う方法を知りたいだけか?
0030デフォルトの名無しさん
NGNGウィンドウマネージャーによるシステムの描画は
同等?
0031デフォルトの名無しさん
NGNGプログラマはGUIのセンスが悪い奴が多い
ダイアログデザインなんてダサダサだし
カッコいいアイコンなんて作れんだろ
0032デフォルトの名無しさん
NGNG作れます。以上。
0033デフォルトの名無しさん
NGNGと、言うかGUIの本質は視覚的、直感的ななわかりやすさであってかっこよさではない。
使いやすいユーザインターフェースというのは納得いくがかっこいいユーザインターフェース、なんじゃそらと。
0034デフォルトの名無しさん
NGNG「窓の手」
非常に有名で使い勝手もいいがGUIがダサダサソフトの代表格
0035デフォルトの名無しさん
NGNGで、具体的にどこが悪いんですか?
それを話し合うスレっしょ?
ただダサいなら女子中学生でも言えるぞ。
0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNGGUI部分はセンスある奴にデザインを委託する
0038デフォルトの名無しさん
NGNGWinカスタマイザー
http://www.panda.co.jp/tweaknow/img/shot/scr_wc2003_05.jpg
窓の手と似たようなソフトだが、GUIにはこだわっている
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNGののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
のののののののののののののののののののののののののののののの?
0041デフォルトの名無しさん
NGNG又はその逆だったり。同じタブ内で並んでいるチェックボックスの
間隔くらい揃えてもいいと思うがバラバラ
中身がいくら丁寧に作りこんであってもGUIがいい加減だと中身もい
い加減と思われると思われ
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNGそれのこと言ってんだろ?>>1
0046デフォルトの名無しさん
NGNGグラマラスユーザーインターフェース
0047デフォルトの名無しさん
NGNG上っ面だけじゃなく心理面も考えなくちゃね
0048デフォルトの名無しさん
NGNGGUI と GDI の違い。
窓の手の GUI の話題。
勘違いに気づいた >>1 の逃走。
0049デフォルトの名無しさん
NGNG「GUI」って言う言葉を誰かが言ったら
笑ってしまうよきっと・・・
俺のほかにもニヤっとしてるやついたら
「てめーも朝から2chかよ」
と、言ってやりたい
グリコの社長 誘拐事件 いつだっけ?
0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNGどうしたらいい?
つーか、デザイナ仲介サイトとかない?無料もしくは格安で依頼したい
0052デフォルトの名無しさん
NGNGヽ,,.'" , ゙、
:::::::;:::',i゙i、,_ ,.' , , ., , .:,.' .: ',.. 、 ゙、
. :/::::::}r'、 `゙ ,' .,' .: ,' ,,、-/‐,ッ、:::/..:;: .. l l;:..;. ',. ',
./:: :::/::. ヽ i l .::l:,、r'゙ ::,.'i../,'.:::,'i.:::;,'. .:,':''7i'it、l!:. , i,. !
'.::::::/:l::::::.. l. l. ::;r':i l .:::,' l l:::,' !::,',' .::;': /,'/ !:l'l;::. i ,' l:. i !!,'
::::::/::!:',::::::::::l. ::',/i l:|. l::;;!、ェ、,,l:i l::,'.!:..::,,'::/ / l:i l:゙:.,' /:. l:: | j.l'
::::,'!::::'::゙、:::::::! ::::i、l. 'l,,;ン',,、ぃ,゙ヾ l:l l::::/,ソ.r''"ヾl, l:::/ン゙l:::: l::: i /l'
:::j ',:::::::::::::::::!. ! :::::l、゙,,ilr' ,il゙ _,,!i. 'l l::/ ' ,r゙゙'i;.ヾlン''/: l:::: ,'l:: ,'j ./ l
::i. ゙、::::::::r''''!. ! :::::!'''゙li. l;:゙'illlr;::! ゙ i:!、r:'l. ;シ./::: .!:,r!,':;/,',.'l j
:l ゙、:::i゙''、゙!. ! ::::|. ゙. 'r,ン::::ソ l;: ''゙:;' ' ,':::: .r' /ツ::ジ j j
:|. ヾ゙、 '、i. ! ::::! ''‐゙゙'='゙- . ゞ-'',、 i:::::: j '"!:i:: j .,'
:l `゙' 、', i :;::l r‐‐‐-,.  ̄` .j:::: ,' l:,i: ,' /
';! ',.i. ';:!,_ | / , ':::: ,' ,ソ!: ,'./ いっしょに氏のっ!>>1
,ヽ ゙、, ';ヘ!ヽ、 ',. ,.' ,、‐l:l::::: / /.,' ,'/
:! ',.',',l,_ ゙'ヽ 、,,_. ゙'" ,、 ‐'" ,',i::: / / ,.シ
':', '、',゙、゙''ー- 、、、、゙゙i,゙''''" /'i::/ /,.'
ヾ、 ,,、 - '゙::ヾ,ヽ:...:...:...:...:...:{ ,'/ ,ン゙
,、- '"゙~ヽ、:...:...:..::゙、:...:...:...:...:...:.lヽ、 _ /
. 、r''ヽ、 ヽ:...:...:...:...:...:...:...:...:...:...:.゙j ゙''‐ 、 '
0053bloom
NGNG0054デフォルトの名無しさん
NGNGゲームが作りたくて、グラフィック関連を勉強していた。
だけど、なかなか思うように理解できなかった。
自分と同じところで、悩んでいる人々がいるかもしれないと思ったんだ。
それで、このスレを立てた。
だけど、結局はこんな事になってしまった。
>>1 は、コンクリートジャングルから、逃げるように走り出した。
激しい雨が降りだし、>>1 に、たたきつける。
人々の罪のない笑顔すら >>1 には、自分をあざ笑っているように見えた。
人気のいない所へ逃げようと、山に逃げ込んだ。
>>1 は、朝になれば何事もなかったようになるはずだと考えていた。
だが、なぜか >>1 のスレは急浮上。
>>1 よ。 誰にでも、間違いはある。帰って来い。
0055デフォルトの名無しさん
NGNG……とかいう体験談を書けばいいのか?
0056デフォルトの名無しさん
NGNGそれじゃGYI
0057デフォルトの名無しさん
NGNG例えば Windows の RegisterClassEx やら CreateWindowEx て,
必要なパラメータがやたらと多くて面倒臭いっす。
だから builder パターンかなんかをを適用して (デザパタあんまし分かってない),
ButtonBulder *bbuilder = new ButtonBuilder();
bbuilder->setParam( hoge ); // いろいろ設定
... いろいろ設定 ...
mainForm->addComponent( bbuilder->build() ); // フォームに追加
bbuilder->setTop( bbuilder->getTop() + height ); // ちょこっと修正
mainForm->addComponent( bbuilder->build() ); // フォームに追加
... 以下,"ちょこっと修正" と "フォームに追加" が繰り返される ...
これが綺麗かなと思ったけど,こんなやり方はあんまし見ないスね。
この欠点つーと,どんなもんが挙げられますですか?
0058デフォルトの名無しさん
NGNG何円ぐらい取られるのかな?
0059デフォルトの名無しさん
NGNGeXtream User Interface (XUI)
XUIは、従来のUIを優良的に進化させたものであり、
XUIに準拠することにより、ユーザーにあらゆる操作が
生産的・感覚的であることを実感させることが出来ます。
0060デフォルトの名無しさん
NGNG傾きが0から1までを、まず考える。
点(0,0)から点(5,3)までの直線を描く場合、
傾きは3/5で、
Xが1増えると、Yは判定によってそのままか1増える。
X 計算上のY 判定数 判定数-1/2 画面上のY
0 0 0 -1/2 0
1 3/5 3/5 1/10 1
2 6/5 1/5 -3/10 1
3 9/5 4/5 2/10 2
4 12/5 2/5 -1/10 2
5 15/5 5/5 5/10 3
判定数というのは前に画面上のYと、次の計算上のYとの差になっている。
前の画面上のYが1増えていたときには、
前の判定数に3/5足した値から1を引いている。
表のように、判定数-1/2 が プラスかマイナスかで
画面上のYを1増やすかそのままか決めている。
四捨五入みたいな感じ。
0061デフォルトの名無しさん
NGNG表を見れば、10掛けると良さそう。
これは、点(X0,Y0) から(X1,Y1)の直線だと、
2(X1-X0)を掛けることと同じらしい。
実際に上の例だと2(5-0)で10で合ってる。
それで、一般的に判定数-1/2の初めの値は、
-1/2 * 2(X1-X0) = -(X1-X0)
3/5足してるのは、傾きだから
(Y1-Y0)/(X1-X0) * 2(X1-X0) = 2(Y1-Y0)
前の画面上のYが増えていたときに判定数から1引くというのは補正値として、
1 * 2(X1-X0) = 2(X1-X0)
つまり、
判定数-1/2の初期値 -(X1-X0)
判定数-1/2の増分 2(Y1-Y0)
判定数-1/2の補正値 2(X1-X0)
0062デフォルトの名無しさん
NGNGおい、それは「仕様」ではなくて、「理想」というのだよ。
その文章から、どうやって実装すればいいんだ?
0063デフォルトの名無しさん
NGNG0 0 0 -1/2 0
1 3/5 3/5 1/10 1
2 6/5 1/5 -3/10 1
3 9/5 4/5 2/10 2
4 12/5 2/5 -1/10 2
5 15/5 5/5 5/10 3
0064デフォルトの名無しさん
NGNG0065XUI
NGNGスクロールバーの端についてる[▲]や[▼]のボタンをホイールクリックすると
それに応じて一番上や一番下に瞬間的に移動できる。
0066デフォルトの名無しさん
NGNGマウスのホイール使えよ
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNG単に上がり牌が無くなっただけ待ちは変わらないからね
それが認められるなら、リーチ後に待ちが変えられる(1−4から1の国士っぽい待ち{単騎待ちとは言わない})というおかしなことになる
0069デフォルトの名無しさん
NGNG関数 直線を描く(X0, Y0, X1, Y1, 色)
int X0,Y0,X1,Y1,色;
{
int E,x,y,i; /* E= 判定数-1/2 */
x = X0;
y = Y0;
E = -( X1 - X0 ); /* 初期値 */
for( i = 0; i <= ( X1 - X0 ); i++ ) {
点を描画する( x, y, 色 );
x += 1;
E += 2 * ( X1 - X0 ); /* 増分を足す */
if ( E >= 0 ) {
y += 1;
E -= 2 * ( Y1 - Y0 ); /* 補正値を引く */
}
}
0070デフォルトの名無しさん
NGNG参考ウェブ
0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNGマジな話、取り合えずそれは済んでるとこから始めない?
0073デフォルトの名無しさん
NGNG>>1 の復帰を待つ。
>>51、>>58 スルーしてくれといわんばかりの話題を放出。
>>59 理想は高く、>>65 現実は激しく低く、>>66 で、あっさり撃沈。
それと、大きな声じゃ言えないけど・・・
実は >>1 は、すでに帰ってきてるんだよ。
非常に、ローレベルなアルゴズムを書き込んでる、彼の事だ。
だけど、なんか変なんだ。
グラフィクス関数って言うから、もっと違うものを想像してたんだけど、
直線のアルゴズムから、おっぱじめやがっているんだ。
それで、彼が買ったという >>24 の参考書をグッグって見たら・・・
Turbo C, Turbo C++ グラフィクスプログラミング入門 (1992/?)
Turbo C++、Borland C++グラフィックスプログラミング応用 (1994/12)
Java2 グラフィックスプログラミング入門―Java 2D,Swing,Java 3D対応 (1999/03)
こんなのが出てきた、たぶん、Turbo C関連の方だと思うんだけど、
初版の日付を見て欲しい。まだ、Win95すら発売されてない日付だ。
Win3.1は有っただろうけど、まだ、DOSの現役の頃だ。
願わくば >>1 が、「DOSのVRAMアドレスっていくつでしたっけ」なんて質問を、
しないこと願わんばかりだ。がんがれ >>1 よ。
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNG何を訳の分からんことを?
0076デフォルトの名無しさん
NGNG訳判らん質問の例えなんだから、判んなくて当然だと思うが。
0077デフォルトの名無しさん
NGNGちなみにホイール使えって言うのは何?
クリックしてずらすやつ?生産的とはいえないね
0078デフォルトの名無しさん
NGNG0079山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0080デフォルトの名無しさん
NGNG個人的には使いづらいと思うが・・・まぁ未来的のGUIってことで。
0081デフォルトの名無しさん
NGNG0082bloom
NGNG0083デフォルトの名無しさん
NGNGは直線を4本描く。
0084デフォルトの名無しさん
NGNG008572
NGNG実は同じ事言おうかどうか考えていた
0086デフォルトの名無しさん
NGNGつぎのようなパターンで検証してみる。
(0,0)->(2,0)
(0,0)->(2,1)
(0,0)->(1,2)
(0,0)->(0,2)
(0,0)->(-1,2)
(0,0)->(-2,1)
(0,0)->(-2,0)
(0,0)->(-2,-1)
(0,0)->(-1,-2)
(0,0)->(0,-2)
(0,0)->(1,-2)
(0,0)->(2,-1)
0087デフォルトの名無しさん
NGNG(0,0)->(2,1), (-2,1), (2,-1), (-2,-1)
(0,0)->(1,2), (-1,2), (1,-2), (-1,-2)
傾きによって上の三つのパターンに大別できる。
0088デフォルトの名無しさん
NGNG日本語入力対応とかが面倒くさそう。Anthy とかを組み込んだら楽かな?
008972
NGNGGLUI の潔い仕様がインターフェースとしては結構気に入っているんだけど、
C++ 用のAPI としてはダサすぎ、ソース汚すぎでどうにかならんかと
んで、GLUTで使う代替GUIが欲しいかなとずっと思っていたり
0090デフォルトの名無しさん
NGNG009172
NGNGそゆもので良いものがあるなら、是非漏れも教えて欲しいでつ
0092デフォルトの名無しさん
NGNG作ったらどうだ?POSIXみたいなGUI API共通規格。
0093デフォルトの名無しさん
NGNGif(x0==x1 && y0==y1){
}
elseif(x0==x1){
}
elseif(y0==y1){
}
else{
if(dx >= dy){
}
else{
}
}
}
009472
NGNG「特定の表示系や処理系と独立な共通規格」という意味でつか?
様々な表示系との統合とかなると結構抽象化は難しいし、
特定の処理系とも独立とかなると、それこそOpenGLみたいな
状態機械実装くらいしか方法は思いつかないんでつが、
経験的にはこれはオブジェクト指向ととても親和性が良くないし…
どなたかいいアイデアありませんか?
# こゆのって最初にアイデアがないと議論にならんのですよね…
# 漏れとしてはもっとコンパクトで現実的なとこから始めたいなぁ
0095デフォルトの名無しさん
NGNGy座標が一つ増えるたびに次にを打つx座標の点を考える。
yの初期値が0
xの初期値がR(半径)
yの次の点はy+1
xの次の点はxか、x-1になる。
xか、x−1かは、
その座標と原点との距離のどちらが半径に近いかで決める。
0096デフォルトの名無しさん
NGNGネタかも知れんが…
その処理だけじゃ、開始点より45度までしか描けんぞ。
ま、90度地点から逆に描けば良いけどね。
F-BASICはそんな感じで円描いてた記憶があるなぁ。
0097デフォルトの名無しさん
NGNG円は対称なので、座標を反転/交換すれば一度に8点描けるわけだが。
0098デフォルトの名無しさん
NGNGそのことが、>>96の三行目に書いてあるんだと思うが。
0099デフォルトの名無しさん
NGNGなら最初から「ネタかも」などとは書かんだろうと。
0100デフォルトの名無しさん
NGNGだが、平方根を使わずに
誤差=X二乗 + Y二乗 − R二乗
でもいいので、それを使う。
点(X,Y+1)の誤差 = X二乗 + (Y+1)二乗 − R二乗
点(X-1,Y+1)の誤差 = (x−1)二乗 + (Y+1)二乗 − R二乗
なので、点(X,Y+1)の誤差のほうが点(X-1,Y+1)の誤差より小さければ、(X,Y+1)を選択すれば良い。
つまり|点(X,Y+1)の誤差| − |点(X-1,Y+1)の誤差| < 0 なら(X,Y+1)
|点(X,Y+1)の誤差| − |点(X-1,Y+1)の誤差| > 0 なら(X-1,Y+1)
|点(X,Y+1)の誤差| − |点(X-1,Y+1)の誤差| < 0 は
{点(X,Y+1)の誤差}二乗 − {点(X-1,Y+1)の誤差}二乗 < 0 と同じ。
因数分解して、上の式を代入して整理すると、
(2X-1)(2X二乗-2X+2Y二乗+4Y+3-2R二乗)<O
(2X-1)は正の値だから両辺割って
(2X二乗-2X+2Y二乗+4Y+3-2R二乗)<O で、これを判定式にする。
(2X二乗-2X+2Y二乗+4Y+3-2R二乗)<O なら 打つ点は(X,Y+1)となり、
そうでないなら(X-1,Y+1)となる。
0101デフォルトの名無しさん
NGNGいろいろ間違ってるよ。
それと、X二乗って読み難い。
X*Xの方が計算もしやすいでしょ。
0102デフォルトの名無しさん
NGNG基本的に>>70のリンク先の方の書かれた説明を自分が理解しやすいように
勝手に書き換えているだけなので、リンク先のほうを見て、万が一間違いがあるなら
リンク先の方にメールをしてもらえませんか?
自分はアルゴリズムが合ってるとか間違ってるとか判断できません。
0103デフォルトの名無しさん
NGNGこれがマイナスで、(X, Y+1)の点を選んだ場合、
判定式にそれを代入してみると、4Y+6だけ増加するので、それを足せば良い。
プラスで、(X-1, Y+1)の点を選んだ場合は、同様に-4X+4Y+10だけ増加するので
それを足す。
いままでの説明は8分円だったので、直線のときと同じように、対称性を利用して、
あとは中心の座標を足せば良い。
0104デフォルトの名無しさん
NGNGint x0,y0,r,color;
{
int x,y,F;
x = r;
y = 0;
F = -2 * r + 3;
while ( x >= y ) {
PSET( x0 + x, y0 + y, color );
PSET( x0 - x, y0 + y, color );
PSET( x0 + x, y0 - y, color );
PSET( x0 - x, y0 - y, color );
PSET( x0 + y, y0 + x, color );
PSET( x0 - y, y0 + x, color );
PSET( x0 + y, y0 - x, color );
PSET( x0 - y, y0 - x, color );
if ( F >= 0 ) {
F += 4 * y - 4 * x + 10 ;
--x;
++y;
}else{
F += 4 * y + 6;
++y;
}
}
0105デフォルトの名無しさん
NGNG-2X+3 ×
-2r+3 ○
0106デフォルトの名無しさん
NGNG中心(0,0)の楕円の式をaX*X+bY*Y=R*R(Rは長いほうの半径)とする。
点(X,Y)の次に描く点は、
真上の点(X,Y+1)
左上の点(X-1,Y+1)
真左の点(X-1,Y)
のいずれかになる。
0107デフォルトの名無しさん
NGNGXX / aa + YY / bb = 1
に変える。
そして誤差の比較を
E = bbXX + aaYY - aabb
の式でする。
真上の点(X,Y+1)を打ったら誤差はbbXX + aa(YY + 2Y + 1) - aabb これをE上とする。
左上の点(X-1,Y+1)を打ったら誤差はbb(XX - 2X + 1) + aa(YY +2Y +1) - aabb これをE左上とする。
左の点(X-1,Y)を打ったら誤差はbb(XX -2X +1) + aaYY - aabb これをE左とする。
ここで、
(1)|E上|−|E左上|<0 かつ|E上|−|E左|<0 ならば 真上に点を打つ。
(2)|E左上|−|E左|<0 かつ|E上|−|E左上|>=0 ならば 左上に点を打つ。
(3)|E上|−|E左|>=0 かつ|E左上|−|E左|>=0 ならば 左に点を打つ。
(1)はE上二乗 − E左上二乗 < 0 かつ E上二乗 − E左二乗 < 0と等価だから
因数分解して代入して整理すると、
bb(2X-1){2bb(XX-2x+1)+2aa(YY+2Y+1)-2aabb} < 0 かつ
bb{(2X-1)+2Y+1}{bb(2XX+2X+1)+aa(2YY+2Y+1)-2aabb} < 0
ここで、{2bb(XX-2x+1)+2aa(YY+2Y+1)-2aabb}の部分をFし、
{bb(2XX+2X+1)+aa(2YY+2Y+1)-2aabb}の部分をGとする。
0108デフォルトの名無しさん
NGNG因数分解して代入して整理すると、
(2Y+1){2bb(XX-2X+1)+aa(2YY+2Y+1)-2aabb} < 0 かつ
bb(2X-1){ F } => 0
ここで、上の式の{2bb(XX-2X+1)+aa(2YY+2Y+1)-2aabb}の部分をHとする。
(3)の場合は、E上二乗 − E左二乗 => 0 かつ E左上二乗 − E左二乗 => 0
と等価だから、同様にして
{(2X-1)+2Y+1}{ G } => 0 かつ (2Y-1){ H } => 0
ここで、 X=>1 かつ Y=>0の場合、
F<0 かつ G<0 ならば、(1)
F=>0 かつ H<0 ならば (2)
G=>0 かつ H=>0 ならば (3)
ということが言える。
さらに、
F=G+2aaY+aa H=G-(2bbx-bb)であるので、F>G>Hと言える。
なので、
F<0 ならば (1)
F=>0 かつ H>0 ならば(2)
H=>0 ならば (3)
が成り立つとまとめることが出来る。
0109デフォルトの名無しさん
NGNGFはYが1増えたとき、F(X,Y+1) - F(X,Y) = aa(4Y+6)
HはXが1減ったとき、H(X-1,Y) - H(X,Y) = bb(-4X+6)
HはYが1増えたとき、H(X,Y+1) - H(X,Y) = aa(4Y+4)
(1)F<0で、真上の点を打ったら、次のF,Hは、
F = F + aa(4Y+6)
H = H + aa(4Y+4)
(2)F=>0かつH<0で、左上の点を打ったら、次のF,Hは、
F = F + aa(4Y+6)-bb(4X-4)
H = H + aa(4Y+4)-bb(4X-6)
(3)H=>0で、左の点を打ったら、次のF,Hは、
F = F − bb(4X-4)
H = H − bb(4X-6)
初期値F0 = -2abb+bb+2aa
初期値H0 = -4abb+2bb+aa
0110デフォルトの名無しさん
NGNGvoid ellipse( x0, y0, a, b, color )
int x0,y0,a,b,color;
{
int x,y,F,H;
x = a;
y = 0;
F = -2abb+bb+2aa;
H = -4abb+2bb+aa;
while ( x > 0 ) {
PSET( x0 + x, y0 + y, color );
PSET( x0 - x, y0 + y, color );
PSET( x0 + x, y0 - y, color );
PSET( x0 - x, y0 - y, color );
if ( F < 0 ) {
F += aa(4y+6);
H += aa(4y+4);
y++;
} else if ( H >= 0 ) {
F -= bb(4X-4);
H -= bb(4X-6);
x--;
} else {
F += aa(4y+6)-bb(4x-4);
H += aa(4Y+4)-bb(4X-6);
x--;
y++;
}
}
}
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNG0113山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0114デフォルトの名無しさん
NGNG0115山崎 渉
NGNG0116山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
■ このスレッドは過去ログ倉庫に格納されています