プレイ日記
スー thanks_0u0
なんとなくGRPエディタをいじってます…(・u・) MIKIさんのGLINE2を元に、ウィキペさんのブレゼンハムのアルゴリズムのページに載っている高速化をしてみました。ちょびっとだけ速い! なお説明は理解できていない模様。。。式を変形するとこうなる、と言われましてもー。変形出来るのはわかったけど、なんとなくしっくり来ない……そういうものだと思うしかないのかなー( ´ ~ ` )
14そうだね
プレイ済み
返信[1]
親投稿
しんいち stgf1080
ブレゼンハムのアルゴリズムって、円描く時に1/4だけ真面目に計算して、あとは符号の±反転させるだけで計算を省略する、ってだけだと思ってたけど、GLINEでも使えるってことは円に限らず符号反転で計算を省略する手法全般についてのことなのかな(ちゃんと調べたことはありません^^;)。 ビー玉描く時にブレゼンハムお世話になりました。
1そうだね
プレイ済み
返信[2]
親投稿
スー thanks_0u0
どちらかというと、線を描くときのアルゴリズムが元みたいです(・u・) 傾きをあらかじめ計算しておいて、足し算だけで線が引けるから速い、みたいな??これはそれを更に整数の足し算とビットシフトだけで出来るように改良されたものみたいです。 そしてそれを応用すると円も描けます、みたいな感じだと思われますー。 でもブレゼンハムを応用した楕円の描画は私には難しすぎてよくわからなかったので、色々足してよくわからないけど動くぞ、な状態で使っています。いつか楕円もちゃんとしたのに変えたい。。。。(´=ω= ` )
0そうだね
プレイ済み
返信[3]
親投稿
スー thanks_0u0
うぐぐ…頭の悪い方法で太い線を描いたら処理速度が。。。高速化をせねば…せねば…(・д・)
0そうだね
プレイ済み
返信[4]
親投稿
数学の式はドットのサイズは気にしてないけど、実際にコンピュータで書くときはドット単位なので、 今書いたドットの隣(たとえば横)が、数学の式より内側かどうかを判定して、内側なら縦移動無し、外側なら縦に移動して隣を書く っていめーじです。 線の場合は単純な式で、円の場合は円の式を1/8の範囲(必ず横移動はする範囲)で全方位を符号反転させて書くってイメージ。 楕円は必ず横に移動する範囲が1/8の位置じゃないので、1/4の範囲で必ず横移動できる範囲(接線45度)まで横移動で書いて、残りは縦移動で書くいめーじです。 太い線は線の幅で外側と内側書いて、その内部を直線で描画(外側から線の太さ位置までなら1回、それ以外なら上下の2回描画)ってのをみかけた記憶も。
4そうだね
プレイ済み
返信[5]
親投稿
スー thanks_0u0
そうなのです、その辺りの概要までならあんまり数学関係ないので文系でも付いていけるのです( ´ ω ` ) ウィキペさんによると、その先で代数学的変換なる術により式が変形されてしまい、変形が成り立つことはわかっても何となく腑に落ちないもやもや感を味わっています( ´ 〜 ` ) 変換前後の式を同じだけど違うものとして認識していて、概念がもやもや。。。
1そうだね
プレイ済み
返信[6]
親投稿
れい rei-nntnd
ループ内にDX<<1やDY<<1があるならあらかじめ計算しておいた方が速いんでは
3そうだね
プレイ済み
返信[7]
親投稿
スー thanks_0u0
確かに!コード真似しただけで満足していたので盲点でしたー、ありがとうございます!(・u・)
0そうだね
プレイ済み
返信[8]
親投稿
myu314 myu314
あ、GPSETを連続で使うなら、先にGCOLORで色指定してGPSETの時は省略するほうがちょっとだけ速いです。1000回くらいやってようやく1ms程度の差ですけど;)
2そうだね
プレイ済み
返信[9]
親投稿
スー thanks_0u0
なるほど、ありがとうございます!GCOLOR全く使ってなかったので思いつきませんでした!( ´ u ` ) 速くなって悪いことは何もないので少しでも嬉しいです(・u・)
0そうだね
プレイ済み