HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1013
春他人円のなかにはいっているかのチェック方法について5解決


春他人

リンク

2008/10/13(Mon) 18:34:56|NO.20103

円のなかにはいっているかのチェック方法が良く分かりません。

circle tx-100,ty-100,tx+100,ty+100 ;半径100の円をtx,tyを中心としてかく repeat 360 rc=double(cnt)/180*3.141592 ;度→ラジアン変換 repeat 100 hc=cnt if chkx=cos(rc)*hc+tx&(chky=sin(rc)*hc+ty):mes "はいっている":break ;chkx,chkyはチェックしたい座標 loop loop
とやってもいいのですが処理に時間がかかりすぎて現実的ではありません。
もっといい方法がないでしょうか?



この記事に返信する


たこ

リンク

2008/10/13(Mon) 19:09:48|NO.20105

円の領域の公式をつかった方法です


tx = 200 ty = 200 r = 100 circle tx-r,ty-r,tx+r,ty+r repeat chkx = mousex chky = mousey x = chkx-tx y = chky-ty if x*x + y*y <= r*r { title "IN" }else{ title "OUT" } wait 10 loop



春他人

リンク

2008/10/13(Mon) 19:27:16|NO.20106

ありがとうございます。
円の領域にそのような公式があったとは知りませんでした。
もう一回数学を勉強しなおしてきます(笑)
やっぱりプログラミングには数学や物理の知識がある程度は必要ですね。



knock2

リンク

2008/10/13(Mon) 19:36:44|NO.20107

解決してるようですが数学知識は要らないです。

>repeat 360
ちなみにこれでは1度単位でサーチするので半径が大きくなるとサーチできない場所がでてきます。

tx=200:ty=150
circle tx-100,ty-100,tx+100,ty+100 ;半径100の円をtx,tyを中心としてかく
repeat
chkx = mousex
chky = mousey
pget chkx,chky
if (ginfo_r=0) & (ginfo_g=0) & (ginfo_b=0){ ;円内のcolor値
title "IN"
}else{
title "OUT"
}
wait 10
loop



ガモウソフト

リンク

2008/10/13(Mon) 20:11:04|NO.20111

 ↓の本のプレビューを見ると、
「様々な当たり判定」を含め 貴重な知識が いろいろ載ってる…。

http://books.google.co.jp/books?id=yheQnleSSKsC

この手の本は欲しい。
でも、HGIMG3 を うまく使えば、この手の処理は 命令一発で出来る。
良くも悪くも。

そうでなくても、DirectX技術を使った高速描画が魅力的すぎ。
あー、理解したいぞ HGIMG3 !



SYAM

リンク

2008/10/14(Tue) 00:12:49|NO.20128

たこさんのは、学校で習うとしたら
「三平方の定理」
の名前で出てきたと思います。
XY平面上の2点間の距離を求めるのに利用します。

円とは、中心からの距離が等しい点の集合ですから、中心からの距離が円の半径以下である点が、円の内側にあることになります。



ONION software Copyright 1997-2023(c) All rights reserved.