Article View: fj.lang.c
Article #355Re2: 2点間の距離を求める
From: Sugihara Yoshimi
Date: Mon, 20 Apr 1998 00:00
Date: Mon, 20 Apr 1998 00:00
45 lines
2594 bytes
2594 bytes
sugiharaです。 Ken-ichiro Ueda wrote in message <353A4B04.7439F598@pluto.dti.ne.jp>... >アルゴリズム本などに、ブレゼンハムという人が考えたDDAという >アルゴリズムがあると思いますので、探してみてください。書籍では >Cによるアルゴリズム辞典だかという本にのっていたはずです。 これは真っ先に思い付いたのですが、「点を打った数 = 2点間の距離」とはなら ないと思ったのですが・・・ たとえば (0,0)-(40,30) という直線と (0,0)-(40,10) という直線を考えたとき、2点間の距離は 50 と 41(少数を四捨五入)となる はずですが、DDAだと両方とも40(X軸の距離)となると思うのです。 kuno@gssm.otsuka.tsukuba.ac.jp wrote in message >> アルゴリズム本などに、ブレゼンハムという人が考えたDDAというア >> ルゴリズムがあると思いますので、探してみてください。書籍ではC >> によるアルゴリズム辞典だかという本にのっていたはずです。 > > しかしこの場合、それよりも(dx = x1 - x2, dy = y1 - y2として) > > r*r <= dx*dx + dy*dy < (r+1)*(r+1) > >なるrを2分探索で求める方が速くないでしょうか。だいたい距離に比例 >してよいんなら(dxがdyより小さいとして)rをdyからdx+dyまで1つずつ >変化させてしらみつぶしに探すのがいちばん簡単だったりして。 これは簡単そうでよさそうですね。試してみます。 nide@ics.nara-wu.ac.jp wrote in message <6hectf$h6j@ns.h.kyoto-u.ac.jp>... > 非負整数の平方根をニュートン法で整数部だけ求めるという方法でも良いか >もしれません。これなら整数の加減乗除と比較だけで済みますし。ありうる問 >題は、二乗を計算することによるオーバーフローですが、画面上の2点の距離 >を求める用途ならこの問題は考えなくとも良さそうですね。 ニュートン法ですね。調べてみます。
Technical Details
Message-ID:
<6hegfs$l42@news.kyosai.or.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<6hdaib$chb$1@news1.kcom.ne.jp><353A4B04.7439F598@pluto.dti.ne.jp><6he38n$3ln@utogw.gssm.otsuka.tsukuba.ac.jp> <6hectf$h6j@ns.h.kyoto-u.ac.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 106434,5e6daae5d04bdee4 X-Google-Attributes: gid106434,public From: "Sugihara Yoshimi" <sugihara@kyosai.or.jp> Subject: Re2: 2点間の距離を求める Date: 1998/04/20 Message-ID: <6hegfs$l42@news.kyosai.or.jp> X-Deja-AN: 345834259 Content-Transfer-Encoding: 7bit References: <6hdaib$chb$1@news1.kcom.ne.jp><353A4B04.7439F598@pluto.dti.ne.jp><6he38n$3ln@utogw.gssm.otsuka.tsukuba.ac.jp> <6hectf$h6j@ns.h.kyoto-u.ac.jp> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-2022-jp" X-MimeOLE: Produced By Microsoft MimeOLE V4.71.1712.3 Organization: HIROSHIMAKEN CHUSYOKIGYO KYOSAI coop., Newsgroups: fj.lang.c