[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/03/31(Thu) 21:04
投稿者名:NM
Eメール:
URL :
タイトル:
円中心点の求め方
いつもお世話になっております。
早速質問なのですが、数式をプログラムで組んで回答を求める方法に悩んでます。
2点A・Bを通る半径Rの円中心点を求めるプログラムです。
A・Bの座標は解っていて、中心点からA・Bをそれぞれ結ぶ線分が
なす角度θも解っているという条件で中心座標を求める方法です。
高校数学を思い出しながら、余弦定理a^2 = b^2 + c^2 - 2bc・sosθ
より座標を求める方法を検討していたのですが、よい方法が見つかりません。
ご存知の方いらっしゃいましたら、ご教授願います。

投稿時間:2005/04/01(Fri) 04:06
投稿者名:Say
Eメール:
URL :
タイトル:
Re: 円中心点の求め方
ヒントは「円の中心は弦の垂直二等分線上にある」かな。
線分ABが直径でない限り、解は2つになるが。

・・・ってこれ、もしかしてVBでなく数学の宿題の質問?
だとすれば板違い。

投稿時間:2005/04/01(Fri) 09:44
投稿者名:NM
Eメール:
URL :
タイトル:
Re^2: 円中心点の求め方
おはようございます。
アドバイスありがとうございます。
考え方として余弦定理を解いていると、最終的に
AX^2 + BX + C = 0 または AY^2 + BY + C = 0 という式になるのですが、
上記式のXまたはYを求める方法という質問でした。
質問の仕方が悪くすいません。
円弧状の2点(直径でない)なので最終的に解は2個になるのですが、
プログラムで2個の答えを出す方法が解りません。

投稿時間:2005/04/01(Fri) 09:53
投稿者名:ダンボ
URL :
タイトル:
Re^2: 円中心点の求め方
はい、アルゴリズムを考えるのは好きですね。

>> 線分ABが直径でない限り、解は2つになるが。
> A・Bの座標は解っていて、中心点からA・Bをそれぞれ結ぶ線分が
> なす角度θも解っているという条件で中心座標を求める方法です。

θ=∠AOBのことですよね?
これが正負を区別した値、あるいは0-360度ならば解は一意に決まる。

どこまで数学でやって、どこからコンピュータにやらせるか。
優雅なコーディングを目指すか。汎用性も考慮するか。

投稿時間:2005/04/01(Fri) 10:50
投稿者名:NM
Eメール:
URL :
タイトル:
Re^3: 円中心点の求め方
> はい、アルゴリズムを考えるのは好きですね。
>
> >> 線分ABが直径でない限り、解は2つになるが。
> > A・Bの座標は解っていて、中心点からA・Bをそれぞれ結ぶ線分が
> > なす角度θも解っているという条件で中心座標を求める方法です。
>
> θ=∠AOBのことですよね?
> これが正負を区別した値、あるいは0-360度ならば解は一意に決まる。
>
> どこまで数学でやって、どこからコンピュータにやらせるか。
> 優雅なコーディングを目指すか。汎用性も考慮するか。

投稿時間:2005/04/01(Fri) 10:56
投稿者名:NM
Eメール:
URL :
タイトル:
Re^4: 円中心点の求め方
こんにちは。はじめまして。
[No.2730]は無視してください。間違って「投稿する」ボタンを押してしまいました。
失礼しました。
早速で大変恐縮ですが、どういうプログラムの書き方があるのでしょうか?
どうぞ、ご教授ください。よろしくお願いします。

投稿時間:2005/04/01(Fri) 11:25
投稿者名:ダンボ
URL :
タイトル:
Re^5: 円中心点の求め方
> 早速で大変恐縮ですが、どういうプログラムの書き方があるのでしょうか?
> どうぞ、ご教授ください。よろしくお願いします。

もし、このメッセージが私に向けられており、即効的にアルゴリズムとコードを提示してくれ
というものならば、請け負えないよと断っておきます。(他の方が手伝ってくれるかも)

> はい、アルゴリズムを考えるのは好きですね。

コードを考えるのは職人芸でアルゴリズムを考えるのは芸術かも(ああ、こう書いた途端にツッコミの嵐が)
綺麗なアルゴリズムが見つけられた時の喜びはアルキメデスが裸で飛び出した気持ちに相当すると思います。

で、本件はそんな大仰なことではなく、Say さんがアルゴリズム例を示して下さっていますし、
他のアルゴリズムが欲しいんですか?

投稿時間:2005/04/01(Fri) 11:58
投稿者名:NM
Eメール:
URL :
タイトル:
Re^6: 円中心点の求め方
お世話になります。
知りたかったのは「因数分解をするプログラム」や
「解を求める関数のようなもの」があるのかな?
と思い、参考資料をいろいろと探しておりました。
また、参考資料のURLをご存知の方がいればと思い
質問させて頂きました。
確かに数学の話なのですが、「解を求める関数のようなもの」
という思いが強く、迷ったあげく本掲示板に書き込みました。
ダンボさん、Sayさん ありがとうございます。

投稿時間:2005/04/01(Fri) 12:08
投稿者名:ダンボ
URL :
タイトル:
Re^6: 円中心点の求め方
> で、本件はそんな大仰なことではなく、Say さんがアルゴリズム例を示して下さっていますし、
> 他のアルゴリズムが欲しいんですか?

済みません。私、またやり取りを深く読まずに投稿してしまったみたいです。
ダンボは慌て者で減点1点にしておいてください。

Re^2: 円中心点の求め方 - NM 04/01-09:44 No.2728で、はっきりと NM さんは尋ねてらっしゃる。

> AX^2 + BX + C = 0 または AY^2 + BY + C = 0 という式になるのですが、
> 上記式のXまたはYを求める方法という質問でした。
> 円弧状の2点(直径でない)なので最終的に解は2個になるのですが、
> プログラムで2個の答えを出す方法が解りません

・1元2次方程式なら根の公式で2個求まる。
・NM さんのアルゴリズムが理解できていないので、方程式自体の正当性が疑問。

投稿時間:2005/04/01(Fri) 13:16
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: 円中心点の求め方
難しい事は解りませんが、下記のような事が知りたいという事ですか?

hhttp://www.asahi-net.or.jp/~xc8t-tkd/math/sec1433.html

その他にも色々
hhttp://www.asahi-net.or.jp/~xc8t-tkd/math/mokuji14.html#sec1433

投稿時間:2005/04/01(Fri) 19:27
投稿者名:NM
Eメール:
URL :
タイトル:
Re^6: 円中心点の求め方
いつもお世話になっております。
教えていただいた「hhttp://www.asahi-net.or.jp/~xc8t-tkd/math/sec1433.html
に記載しているような1元2次方程式の係数部を入力すると解が求められるような
プログラム関数が存在するのか?、それとも1元2次方程式と等価のプログラムを
つくるのか?つくるならどういうつくり方があるのか?といった事を探しておりました。

質問の仕方が悪く、いろんな方々を混乱させてしまいました。すいません。

投稿時間:2005/04/01(Fri) 20:08
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^7: 円中心点の求め方
> に記載しているような1元2次方程式の係数部を入力すると解が求められるような
> プログラム関数が存在するのか?、それとも1元2次方程式と等価のプログラムを
> つくるのか?つくるならどういうつくり方があるのか?といった事を探しておりました。

VBにはそのような関数は用意されていません。(ごく標準的なものだけ)
hhttp://www.bcap.co.jp/hanafusa/VBHLP/Reference.htm

>円弧状の2点(直径でない)なので最終的に解は2個になるのですが、
>プログラムで2個の答えを出す方法が解りません。
それとも複数の戻り値の関数の作り方という質問でしょうか?
それなら 
Private Type ResultXY
    X As Single
    Y As Single
End Type
Private Sub Command1_Click()
    Dim RetXY As ResultXY
    RetXY = fHoge(2, 2, 2)
    MsgBox "X=" & RetXY.X & "  Y=" & RetXY.Y
End Sub
Private Function fHoge(ByVal a As Single, _
                       ByVal b As Single, ByVal c As Single) As ResultXY
    fHoge.X = a + b + c
    fHoge.Y = a * b * c
End Function

求め方が解っているのなら、自分で関数を作るなり、フリーソフトや市販 等で
そういった関数が用意されているのならそれを利用するという手もありますが。

まずは、自分が理解できる範囲のプログラムで答えを求める事が大事かと思います。
その上で処理速度が遅いとか問題があるなら工夫すればいいのでは。

投稿時間:2005/04/05(Tue) 00:46
投稿者名:NM
Eメール:
URL :
タイトル:
Re^8: 円中心点の求め方
いつもお世話になっております。
返事が遅くなりまして、すいません。仕事で台湾に来ております。
いろいろとアドバイスありがとうございます。
>まずは、自分が理解できる範囲のプログラムで答えを求める事が大事かと思います。
>その上で処理速度が遅いとか問題があるなら工夫すればいいのでは。
おっしゃる通りで、まずは小生がやろうとしている事をコーディングしてみます。
その上で処理を早くする方法等の相談にのって頂く場合はよろしくお願いします。
ありがとうございました。