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

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

GUIの作り方

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

2 :デフォルトの名無しさん:03/05/26 14:11
         ∧_∧
         < `ш´>  >>1 お前の感じている感情は精神疾患の一種だ。
       _φ___⊂)     しずめる方法は俺が知っている。俺に任せろ
      /旦/三/ /|
    | ̄ ̄ ̄ ̄ ̄|  |
    | 流鬱百円 |/


3 :デフォルトの名無しさん:03/05/26 14:13
ハァ?

4 :デフォルトの名無しさん:03/05/26 14:17
>>1
関連リンクすら貼らずにスレを立てる人間は、
目立ちたがりのくせに能力は著しく人に劣る無能者

5 :デフォルトの名無しさん:03/05/26 14:22
自分以外の人間を指す言葉「ヒト」を、「他人」ではなく「人」と書いてしまう奴は、
聞きかじった言葉を深く考えずに右から左に流す知ったかぶりの無教養。

だが>>1よりはマシ。

6 :デフォルトの名無しさん:03/05/26 14:36
/三/ /| >>6ゲトずざー
    | ̄ ̄ ̄ ̄ ̄| 

7 :デフォルトの名無しさん:03/05/26 15:46
>>5
「ヒト」を「他人」と書くのはただの当て字なので、
表現の一つとして当て字好きな漫画などでよく使われるが標準的なものではない
http://dictionary.goo.ne.jp/search.php?MT=%A4%D2%A4%C8&kind=jn&mode=0&base=1&row=3

聞きかじった言葉を深く考えずに右から左に流す知ったかぶりの無教養。
だが>>1よりはマシ。

8 :デフォルトの名無しさん:03/05/26 19:29
イベントドリヴン&heart;

9 :デフォルトの名無しさん:03/05/26 19:31
●5気圧防水機能 ●「テレメモ」機能:電話番号を最大30件メモリー(名前部:8文字、電話番号部:16桁)
 ●ワールドタイム:世界50都市(27タイムゾーン)の時刻表示、NOCコード表示、サマータイム設定機能付き
 ●ストップウオッチ(1/100秒、60分計、スプリット付き) ●時刻アラーム2本(曜日設定が可能) ●ELバックライト(残照機能付き)

10 :デフォルトの名無しさん:03/05/26 19:31
9げっと

11 :デフォルトの名無しさん:03/05/26 19:32
GUIを「ぐい」と読むのはダメ人間ですか?

12 :デフォルトの名無しさん:03/05/26 19:34
>>5
人というのは他人ではなく人類を示しているということ。
聞きかじった言葉を深く考えずに右から左に流す知ったかぶりの無教養。
だが>>1よりマシ。

13 :デフォルトの名無しさん:03/05/26 19:35
日本酒ならぐい飲みでやりたいものだ。

14 :デフォルトの名無しさん:03/05/26 19:45
>>8
sが抜けてる罠。

15 :デフォルトの名無しさん:03/05/26 19:46
VBなら楽勝で作れますよ

16 :デフォルトの名無しさん:03/05/26 19:49
Delphiなら楽勝で作れますよ

17 ::03/05/26 20:03
このスレはGUIに必要な関数を勉強していくスレにしたいと思っています。
関連する情報は必要と思った人が、該当する箇所をリンクしてください。

18 :デフォルトの名無しさん:03/05/26 20:06
http://www.google.co.jp/search?hl=ja&lr=&ie=UTF-8&oe=UTF-8&q=GAY&spell=1

19 :デフォルトの名無しさん:03/05/26 20:07
button .b -text {あぼーん} -command exit
pack .b

20 :デフォルトの名無しさん:03/05/26 20:19
ttp://www.google.com

21 :デフォルトの名無しさん:03/05/26 20:44
まず、リストとキューを実装する。
あとは力技で書くべし!

22 :デフォルトの名無しさん:03/05/26 20:46
>>1
は?GUI?
そんなのドラッグアンドドロップで一発だぜ。

23 :デフォルトの名無しさん:03/05/26 21:06
>>22
アホか。
だが>>1よりはマシ。

24 ::03/05/26 21:31
グラフィックスプログラミング入門 中山茂 技報堂出版
グラフィックスプログラミング応用
という本を買ったのでまず参考にします。

25 ::03/05/26 21:38
ドロー関数

直線を描く
現在位置から指定の点まで直線を引く
現在位置から指定の長さの直線を引く
現在位置を指定の点に移動する
現在位置を指定の長さだけ移動する
長方形を描く
円を描く
円弧を描く
楕円を描く
多角形を描く
線幅と線のスタイルを設定する

26 ::03/05/26 21:41
フィル関数

長方形を描いて内部を塗りつぶす
3次元の直方体を描いて前面を塗りつぶす
多角形を描いて塗りつぶす
扇形を描いて塗りつぶす
楕円の扇型を描いて塗りつぶす
楕円を描いて塗りつぶす
閉じた領域を塗りつぶす
塗りつぶしパターンと色を設定
ユーザー定義の塗りつぶしパターンと色を設定

27 :デフォルトの名無しさん:03/05/26 22:05
いつからそのしょうもない図形描画機能がGUIと呼ばれるようになったんだ?

28 :デフォルトの名無しさん:03/05/26 22:29
たしかに UI では無いな。

29 :デフォルトの名無しさん:03/05/27 05:10
>1
TRONで言うとディスプレイプリミティブっていうやつだな。
http://www.sakamura-lab.org/TRON/BTRON/BTRON3/os_spec/dp/dp.html

この上にウィンドウマネージャーを載せるのがセオリーだ。

で、グラフィックス描画について語りたいのか、ウィンドウ管理手法について語るのか
どっちよ?
それとも単にアプリケーションでGUI部品を使う方法を知りたいだけか?

30 :デフォルトの名無しさん:03/05/27 05:16
ディスプレイプリミティブによるユーザの描画と、
ウィンドウマネージャーによるシステムの描画は
同等?


31 :デフォルトの名無しさん:03/05/27 05:36

プログラマはGUIのセンスが悪い奴が多い


ダイアログデザインなんてダサダサだし


カッコいいアイコンなんて作れんだろ


32 :デフォルトの名無しさん:03/05/27 06:15
>>31
作れます。以上。

33 :デフォルトの名無しさん:03/05/27 06:16
>>31
と、言うかGUIの本質は視覚的、直感的ななわかりやすさであってかっこよさではない。
使いやすいユーザインターフェースというのは納得いくがかっこいいユーザインターフェース、なんじゃそらと。

34 :デフォルトの名無しさん:03/05/27 06:25

「窓の手」


非常に有名で使い勝手もいいがGUIがダサダサソフトの代表格




35 :デフォルトの名無しさん:03/05/27 06:26
>>34
で、具体的にどこが悪いんですか?
それを話し合うスレっしょ?
ただダサいなら女子中学生でも言えるぞ。

36 :デフォルトの名無しさん:03/05/27 06:27
かこいいアイコンは使いにくいことが多いので倫理的につくれません

37 :デフォルトの名無しさん:03/05/27 06:34
センス無い奴はいくら頑張ってもたかがしれてるので、

GUI部分はセンスある奴にデザインを委託する

38 :デフォルトの名無しさん:03/05/27 06:43
>>34
Winカスタマイザー
http://www.panda.co.jp/tweaknow/img/shot/scr_wc2003_05.jpg

窓の手と似たようなソフトだが、GUIにはこだわっている

39 :デフォルトの名無しさん:03/05/27 06:46
ぐちょぐちょ うんこ いっとく?

40 :デフォルトの名無しさん:03/05/27 06:47
もしかして、>>1 は、GUI と GDI を、勘違いしているのののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
ののののののののののののののののののののののののののののののの
のののののののののののののののののののののののののののののの?


41 :デフォルトの名無しさん:03/05/27 06:48
窓の手はコントロールの配置一つとってみても、スカスカだったり
又はその逆だったり。同じタブ内で並んでいるチェックボックスの
間隔くらい揃えてもいいと思うがバラバラ

中身がいくら丁寧に作りこんであってもGUIがいい加減だと中身もい
い加減と思われると思われ


42 :デフォルトの名無しさん:03/05/27 06:50
GDIって三菱の車のエンジンか?

43 :デフォルトの名無しさん:03/05/27 06:51
逆に中身がヘタレでもGUIがそれなりのもんだったら、素人は騙せると思われ

44 :デフォルトの名無しさん:03/05/27 06:52
ぐい生とかいうビール昔なかったか?
それのこと言ってんだろ?>>1

45 :40:03/05/27 06:54
>>42
GDI → Graphics Device Interface
GUI → Graphical User Interface

46 :デフォルトの名無しさん:03/05/27 06:54
なぜこの時間にこんなスレが伸びてるの?
グラマラスユーザーインターフェース


47 :デフォルトの名無しさん:03/05/27 06:54
どのタブも同じような量よりメリハリついてるほうが覚えやすいじゃん
上っ面だけじゃなく心理面も考えなくちゃね

48 :デフォルトの名無しさん:03/05/27 06:58
現在のスレ状況

GUI と GDI の違い。
窓の手の GUI の話題。
勘違いに気づいた >>1 の逃走。

49 :デフォルトの名無しさん:03/05/27 06:59
もしも、今日会社で
「GUI」って言う言葉を誰かが言ったら
笑ってしまうよきっと・・・
俺のほかにもニヤっとしてるやついたら
「てめーも朝から2chかよ」
と、言ってやりたい

グリコの社長 誘拐事件 いつだっけ?

50 :デフォルトの名無しさん:03/05/27 07:00
FreeDownload>>1

51 :デフォルトの名無しさん:03/05/27 07:02
デザイナとかに自分の作ったソフトのGUIデザインを頼みたい時、
どうしたらいい?

つーか、デザイナ仲介サイトとかない?無料もしくは格安で依頼したい

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

  ヽ,,.'"                      ,           ゙、
:::::::;:::',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 ゙''‐ 、 '


53 :bloom:03/05/27 07:13
http://homepage.mac.com/ayaya16/

54 :デフォルトの名無しさん:03/05/27 07:21
>>1は、本気だったんだ。ふざけていたわけじゃない。
ゲームが作りたくて、グラフィック関連を勉強していた。
だけど、なかなか思うように理解できなかった。
自分と同じところで、悩んでいる人々がいるかもしれないと思ったんだ。
それで、このスレを立てた。
だけど、結局はこんな事になってしまった。

>>1 は、コンクリートジャングルから、逃げるように走り出した。
激しい雨が降りだし、>>1 に、たたきつける。
人々の罪のない笑顔すら >>1 には、自分をあざ笑っているように見えた。
人気のいない所へ逃げようと、山に逃げ込んだ。
>>1 は、朝になれば何事もなかったようになるはずだと考えていた。
だが、なぜか >>1 のスレは急浮上。

>>1 よ。 誰にでも、間違いはある。帰って来い。

55 :デフォルトの名無しさん:03/05/27 07:52
漏れはGDIで挫折したけどDirectXはすんなりうまくいったよ

……とかいう体験談を書けばいいのか?

56 :デフォルトの名無しさん:03/05/27 08:21
>>49
それじゃGYI

57 :デフォルトの名無しさん:03/05/27 09:32
ここ GDI のスレ? スレ違いだったらゴメノ。
例えば Windows の RegisterClassEx やら CreateWindowEx て,
必要なパラメータがやたらと多くて面倒臭いっす。
だから builder パターンかなんかをを適用して (デザパタあんまし分かってない),

 ButtonBulder *bbuilder = new ButtonBuilder();
 bbuilder->setParam( hoge ); // いろいろ設定
  ... いろいろ設定 ...
 mainForm->addComponent( bbuilder->build() ); // フォームに追加
 bbuilder->setTop( bbuilder->getTop() + height ); // ちょこっと修正
 mainForm->addComponent( bbuilder->build() ); // フォームに追加
  ... 以下,"ちょこっと修正" と "フォームに追加" が繰り返される ...

これが綺麗かなと思ったけど,こんなやり方はあんまし見ないスね。
この欠点つーと,どんなもんが挙げられますですか?

58 :デフォルトの名無しさん:03/05/27 10:36
アプリのアイコンをデザイナーに外注したこと有る香具師いる?
何円ぐらい取られるのかな?


59 :デフォルトの名無しさん:03/05/27 15:17
新しいUIの仕様作りました。

eXtream User Interface (XUI)

XUIは、従来のUIを優良的に進化させたものであり、
XUIに準拠することにより、ユーザーにあらゆる操作が
生産的・感覚的であることを実感させることが出来ます。

60 :デフォルトの名無しさん:03/05/27 15:20
直線を描く場合、傾きによって場合分けする。
傾きが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増やすかそのままか決めている。
四捨五入みたいな感じ。


61 :デフォルトの名無しさん:03/05/27 15:21
判定数-1/2 をプログラムのために実数にしたい。
表を見れば、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)

62 :デフォルトの名無しさん:03/05/27 15:30
>>59
おい、それは「仕様」ではなくて、「理想」というのだよ。
その文章から、どうやって実装すればいいんだ?

63 :デフォルトの名無しさん:03/05/27 15:31
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


64 :デフォルトの名無しさん:03/05/27 15:50
直線・円を描く場合はDDAでOK

65 :XUI:03/05/27 16:10
Level 1
スクロールバーの端についてる[▲]や[▼]のボタンをホイールクリックすると
それに応じて一番上や一番下に瞬間的に移動できる。

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.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)