🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.c
Article #349

Re: 2点間の距離を求める

#349
From: Ken-ichiro Ueda
Date: Mon, 20 Apr 1998 00:00
37 lines
1990 bytes
Sugihara Yoshimi wrote:
> 
> 始めましてsugiharaといいます。
> 
>   long型であらわされた座標(x、y)で、2点間の距離を浮動小数点を使わず
> に求める方法はないでしょうか?
> 
>  このごろ FPUがついているのが当然なマシンばかりですが、現在開発しているマ
> シン(マイコン)にはついていないのです。そして 浮動小数点を使うとやたら遅いの
> で、何とかしなければならないのですが・・・
> 
>  ちなみに以下のようなコードです。
> 
>     x = px - qx
>     y = py - qy
> 
>     r = (long) sqrt( (double) ( (x*x) + (y*y) ) )    ・・・・sqrtを使う
> と重たくなる。(;;
> 
> て感じにしてます。
> 
> ご存知の方、ヒントだけでも良いので教えてください。
> 
> よろしくお願いします。

アルゴリズム本などに、ブレゼンハムという人が考えたDDAという
アルゴリズムがあると思いますので、探してみてください。書籍では
Cによるアルゴリズム辞典だかという本にのっていたはずです。

DDA(Digital Differential Analiser)ってのはつまるところ、傾きによ
って2点間に線を引いていくのですが、XとYの少数部を整数演算に
よって求めて、0.5で四捨五入していました。これで2点間にドットを
置いていき(描画はしなくてよい)、ドットの数がラインの長さという事
になります。実は手元の書籍のどれかにあったと思うのですが、探す
のが面倒なので書籍を当たってください。それくらいの努力はしても
いいですよね。
Technical Details
Message-ID: <353A4B04.7439F598@pluto.dti.ne.jp>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <6hdaib$chb$1@news1.kcom.ne.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 106434,5e6daae5d04bdee4
X-Google-Attributes: gid106434,public
From: Ken-ichiro Ueda <ueken@pluto.dti.ne.jp>
Subject: Re: 2点間の距離を求める
Date: 1998/04/20
Message-ID: <353A4B04.7439F598@pluto.dti.ne.jp>
X-Deja-AN: 345722110
Content-Transfer-Encoding: 7bit
References: <6hdaib$chb$1@news1.kcom.ne.jp>
Content-Type: text/plain; charset=iso-2022-jp
Organization: Dream Train Internet
Mime-Version: 1.0
Newsgroups: fj.lang.c