5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

GUIの作り方

1 ::03/05/26 14:06
GUIの実装についてのスレです。

66 :デフォルトの名無しさん:03/05/27 17:15
>>65
マウスのホイール使えよ

67 :デフォルトの名無しさん:03/05/27 17:40


68 :デフォルトの名無しさん:03/05/27 17:56
フリテンだよ
単に上がり牌が無くなっただけ待ちは変わらないからね
それが認められるなら、リーチ後に待ちが変えられる(1−4から1の国士っぽい待ち{単騎待ちとは言わない})というおかしなことになる

69 :デフォルトの名無しさん:03/05/27 21:04
/* 点(XO, Y0)から点(X1, Y1)まで線を描く(仮)*/

関数 直線を描く(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 );    /* 補正値を引く */   
}
}


70 :デフォルトの名無しさん:03/05/27 21:07
http://www.people.or.jp/~fussy/algo/algo1-1.htm
参考ウェブ

71 :デフォルトの名無しさん:03/05/28 00:08
わけわからんスレになってるな…

72 :デフォルトの名無しさん:03/05/28 00:48
つかね、GUIの実装の話するのかと思ったら描画アルゴリズムの実装のお勉強してるのね
マジな話、取り合えずそれは済んでるとこから始めない?

73 :デフォルトの名無しさん:03/05/28 04:48
最近の、このスレの傾向。

>>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 よ。


74 :デフォルトの名無しさん:03/05/28 04:51
早朝浮上

75 :デフォルトの名無しさん:03/05/28 06:14
>DOSのVRAM

何を訳の分からんことを?

76 :デフォルトの名無しさん:03/05/28 08:24
>>75
訳判らん質問の例えなんだから、判んなくて当然だと思うが。

77 :デフォルトの名無しさん:03/05/28 09:26
いきなりレベル高いの出したら付いてこれないかと思ってね
ちなみにホイール使えって言うのは何?
クリックしてずらすやつ?生産的とはいえないね

78 :デフォルトの名無しさん:03/05/28 11:19
ではレベルの高いのを出してください。

79 :山崎渉:03/05/28 12:30
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

80 :デフォルトの名無しさん:03/05/28 12:44
マイノリティ レポートのGUIを作ってくだちい。

個人的には使いづらいと思うが・・・まぁ未来的のGUIってことで。

81 :デフォルトの名無しさん:03/05/28 15:06
なにがしたいの山崎渉

82 :bloom:03/05/28 15:13
http://homepage.mac.com/ayaya16/

83 :デフォルトの名無しさん:03/05/28 21:13
長方形を描く
は直線を4本描く。

84 :デフォルトの名無しさん:03/05/29 03:36
OpenGL でウィジェット作ってみようかな。

85 :72:03/05/29 12:15
>84
実は同じ事言おうかどうか考えていた

86 :デフォルトの名無しさん:03/05/29 14:12
直線の場合分けについて具体的に考える。
つぎのようなパターンで検証してみる。
(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)

87 :デフォルトの名無しさん:03/05/29 16:22
(0,0)->(2,0), (0,2), (-2,0), (0,-2)
(0,0)->(2,1), (-2,1), (2,-1), (-2,-1)
(0,0)->(1,2), (-1,2), (1,-2), (-1,-2)
傾きによって上の三つのパターンに大別できる。





88 :デフォルトの名無しさん:03/05/29 21:05
>85
日本語入力対応とかが面倒くさそう。Anthy とかを組み込んだら楽かな?

89 :72:03/05/29 21:16
IM とかまでは考えてなかったよ

GLUI の潔い仕様がインターフェースとしては結構気に入っているんだけど、
C++ 用のAPI としてはダサすぎ、ソース汚すぎでどうにかならんかと
んで、GLUTで使う代替GUIが欲しいかなとずっと思っていたり

90 :デフォルトの名無しさん:03/05/29 21:58
イベントモデルの実装ってどんなのがあるのかな。

91 :72:03/05/29 22:39
「特定の表示系と分離された、C++での実装」でつか?

そゆもので良いものがあるなら、是非漏れも教えて欲しいでつ

92 :デフォルトの名無しさん:03/05/30 06:18
>>91
作ったらどうだ?POSIXみたいなGUI API共通規格。

93 :デフォルトの名無しさん:03/05/30 14:34
line(){
if(x0==x1 && y0==y1){
}
elseif(x0==x1){
}
elseif(y0==y1){
}
else{
if(dx >= dy){
}
else{
}
}
}

94 :72:03/05/30 15:01
>92
「特定の表示系や処理系と独立な共通規格」という意味でつか?

様々な表示系との統合とかなると結構抽象化は難しいし、
特定の処理系とも独立とかなると、それこそOpenGLみたいな
状態機械実装くらいしか方法は思いつかないんでつが、
経験的にはこれはオブジェクト指向ととても親和性が良くないし…

どなたかいいアイデアありませんか?
# こゆのって最初にアイデアがないと議論にならんのですよね…
# 漏れとしてはもっとコンパクトで現実的なとこから始めたいなぁ

95 :デフォルトの名無しさん:03/06/05 04:14
円の描画は直線と同じように
y座標が一つ増えるたびに次にを打つx座標の点を考える。
yの初期値が0
xの初期値がR(半径)
yの次の点はy+1
xの次の点はxか、x-1になる。
xか、x−1かは、
その座標と原点との距離のどちらが半径に近いかで決める。

96 :デフォルトの名無しさん:03/06/05 09:06
>>95
ネタかも知れんが…
その処理だけじゃ、開始点より45度までしか描けんぞ。
ま、90度地点から逆に描けば良いけどね。
F-BASICはそんな感じで円描いてた記憶があるなぁ。

97 :デフォルトの名無しさん:03/06/05 10:07
>>96
円は対称なので、座標を反転/交換すれば一度に8点描けるわけだが。

98 :デフォルトの名無しさん:03/06/05 12:08
>>97
そのことが、>>96の三行目に書いてあるんだと思うが。

99 :デフォルトの名無しさん:03/06/05 12:37
>>98
なら最初から「ネタかも」などとは書かんだろうと。

100 :デフォルトの名無しさん:03/06/06 01:13
実際の円と打つ点の誤差 は 平方根(X二乗 + Y二乗) - 半径(R)
だが、平方根を使わずに
  誤差=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)となる。

101 :デフォルトの名無しさん:03/06/06 07:25
>>100
いろいろ間違ってるよ。
それと、X二乗って読み難い。
X*Xの方が計算もしやすいでしょ。

102 :デフォルトの名無しさん:03/06/06 13:11
>>101
基本的に>>70のリンク先の方の書かれた説明を自分が理解しやすいように
勝手に書き換えているだけなので、リンク先のほうを見て、万が一間違いがあるなら
リンク先の方にメールをしてもらえませんか?
自分はアルゴリズムが合ってるとか間違ってるとか判断できません。

103 :デフォルトの名無しさん:03/06/06 17:16
判定式のX,Yに実際に(r, 0)を代入してみると、-2X+3になる。
これがマイナスで、(X, Y+1)の点を選んだ場合、
判定式にそれを代入してみると、4Y+6だけ増加するので、それを足せば良い。
プラスで、(X-1, Y+1)の点を選んだ場合は、同様に-4X+4Y+10だけ増加するので
それを足す。
いままでの説明は8分円だったので、直線のときと同じように、対称性を利用して、
あとは中心の座標を足せば良い。

104 :デフォルトの名無しさん:03/06/06 17:16
関数 円( x0, y0, r, color )
int 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;
}
}

105 :デフォルトの名無しさん:03/06/06 17:21
103訂正
-2X+3 ×
-2r+3 ○

106 :デフォルトの名無しさん:03/06/12 00:28
楕円は4分の1円で考える。
中心(0,0)の楕円の式をaX*X+bY*Y=R*R(Rは長いほうの半径)とする。
点(X,Y)の次に描く点は、
真上の点(X,Y+1)
左上の点(X-1,Y+1)
真左の点(X-1,Y)
のいずれかになる。

107 :デフォルトの名無しさん:03/06/14 14:13
楕円の式を
XX / 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とする。

108 :デフォルトの名無しさん:03/06/15 14:51
(2)の場合は、E左上二乗 − E左二乗 < 0 かつ E上二乗 − E左上二乗 => 0と等価だから
因数分解して代入して整理すると、
(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)
が成り立つとまとめることが出来る。

109 :デフォルトの名無しさん:03/06/16 14:02
FはXが1減ったとき、F(X-1,Y) - F(X,Y) = bb(-4X+4)
Fは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

110 :デフォルトの名無しさん:03/06/16 14:13
/* 楕円(X-x0)(X-x0) / aa + (Y-y0)(Y-y0) / bb = 1を描く */
void 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++;
}
}
}

111 :デフォルトの名無しさん:03/07/03 14:05
 

112 :デフォルトの名無しさん:03/07/03 14:06
  

113 :山崎 渉:03/07/15 10:14

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

114 :デフォルトの名無しさん:03/07/27 21:49
日本酒ならぐい飲みでやりたいものだ。

115 :山崎 渉:03/08/02 02:16
(^^)

116 :山崎 渉:03/08/15 16:23
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

33 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)