tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル3点円弧の描画方法について
記事No14852
投稿日: 2010/08/17(Tue) 16:39
投稿者プー
こんにちは。
VB6+SP6で開発しています。
開始点と終了点の座標が決まっていて、中心点をMouseMoveイベントにて取得した後
円弧描画したいと思っているのですが、その実現方法が分かりません。
半径も変化するので不明なのですが、こういった場合はどのようにすれば宜しいでしょうか?
数学知識がなくて申し訳ありませんが、宜しくお願い致します。

[ツリー表示へ]
タイトルRe: 3点円弧の描画方法について
記事No14853
投稿日: 2010/08/17(Tue) 17:00
投稿者るしぇ
…別に数学の知識なんか持って無いけど、常識で考えて、
> 開始点と終了点の座標が決まっていて、
円周上の2点の座標がx,yともに決まっていると言っているなら、
中心点はその2点と等距離になるんじゃないの?
> 中心点をMouseMoveイベントにて取得した後
任意の座標って意味なら、円弧にはならないと思います。

> 3点円弧
こっちのキーワードでググってみたけど、3点目が中心点に
なんてなってなかったです。

[ツリー表示へ]
タイトルRe^2: 3点円弧の描画方法について
記事No14854
投稿日: 2010/08/17(Tue) 17:33
投稿者プー
> 円周上の2点の座標がx,yともに決まっていると言っているなら、
> 中心点はその2点と等距離になるんじゃないの?
3点(円弧始点,円弧中点,円弧終点)を通る円弧の中心座標と半径の求め方を
お聞きしたかったのですが、説明が悪かったようで、スミマセン。
円弧始点・円弧終点は固定されていて円弧中点のみを変更した場合、円弧の大きさは
変わると思うのですが、その際の中心座標と半径の求め方について投稿させて頂きました。

[ツリー表示へ]
タイトルRe^3: 3点円弧の描画方法について
記事No14855
投稿日: 2010/08/17(Tue) 18:33
投稿者るしぇ
「中」と「中心」の違いは、
「箱の中にある」
「箱の中心にある」
の違いなら素人でもハッキリ分かると思うけど、全然違います。

> 円弧中点
国語辞典に載ってるレベルの単語ですが、
http://dictionary.goo.ne.jp/leaf/jn2/143552/m0u/%E4%B8%AD%E7%82%B9/
「中点」と表現すると、線分上にあって線分の両端から
"等距離"にある点のその線分に対する点になります。
二等分している点という意味が付加されます。
その意味を含んでいるのでしょうか?

含んでいないと仮定して、
以後、円弧中点→円弧途中点と表現を変更します。

> 開始点と終了点の座標が決まっていて、
これは、まだ不具合を生む考え方を含んでいます。

2点の座標が決まった後、3点目を任意に指定するなら、
円弧始点と円弧途中点、円弧途中点と円弧終点が入れ替わる
可能性があります。開始点と終了点の外側に3点目を
取った場合です。

これらの事から、普通
> 開始点と終了点の座標が決まっていて、
そんな事はしません。できません。単純に3点を通る円の3点を
含む部分の円弧を考えます。

これは、普通に「3点円弧」というキーワードで検索されます。
知識は無くて構いません。勉強しなくて構いません。
検索すれば答えが書いてあります。

これに対し、他の条件があるなら、それを加味して考えてください。
図形を扱う上で致命的な間違いを幾つも犯してますので、
本当に望むものが正しいのか?から確認しなおしてください。
これがCADとかのお仕事で、お客さんからの要望であるなら、
根本的に、貴方の理解している内容自体が間違っている可能性も
あります。
掲示板で質問して解決しようという考え方自体、甘いレベルだと
認識してください。

[ツリー表示へ]
タイトルRe^4: 3点円弧の描画方法について
記事No14857
投稿日: 2010/08/17(Tue) 20:14
投稿者プー
どうも私の説明が悪いらしく、また、理解力が乏しいようで申し訳ありません。
VB6で作成されたアプリケーションで、PictureBox上で円弧始点・円弧終点をPsetにより
設定した後、円弧中点を円弧始点〜円弧終点の内側のマウスカーソルの位置により決定
して円弧が作成されています。
円弧中点を決定する際にはマウスをドラッグする事で、円弧軌跡が表示されるように
なっています。
この実現方法がどうしても分からなかったので投稿させて頂きました。
お客様からの要望を掲示板で質問して解決しようという考え方では
ありませんので、そのあたりはご理解頂きたいです。
この質問自体が間違っていたのであれば、不適切として削除して下さい。
ご迷惑をおかけしました。

[ツリー表示へ]
タイトルRe^5: 3点円弧の描画方法について
記事No14858
投稿日: 2010/08/18(Wed) 09:26
投稿者るしぇ
> なっています。
なっていますというからには、何かで実例を見たという意味になりますが、
何で見ましたか?Excel?

> 円弧中点を決定する際にはマウスをドラッグする事で、円弧軌跡が表示されるように
> なっています。
円弧中点という単語がこの世に存在しないのと、意味も間違ってると思うけど、
円弧中点を指定したとき、本当に円弧になってますか?
それとも本当に中点(2点の2等分点)ですか?。。。その場合、マウスでドラッグ
できませんよ。
円弧とは、円の一部を切り取ったものです。もとの円が楕円になっているなら
当然、円の半径と中心点の座標だけでは表せなくなりますよ。

> 円弧中点を決定する際にはマウスをドラッグする事で、円弧軌跡が表示
中心点からの半径が一定の円弧を対象としているなら、空間をゆがめない限り
実現不可能です。答えはありません。

私の説明では理解できないようですから、他の方の回答も待ってみたらいいと
思います。私は少し発言を控えますので。

[ツリー表示へ]
タイトルRe^6: 3点円弧の描画方法について
記事No14859
投稿日: 2010/08/18(Wed) 10:40
投稿者魔界の仮面弁士
> 私は少し発言を控えますので。
(VB の話題では無く)幾何学の話なので、板違いということで
私も意図的に控えていたのですが、とりあえず概要だけ。


> 円弧中点という単語がこの世に存在しないのと、
「円弧の中点」とは言いますね。


>> マウスをドラッグする事で、円弧軌跡が表示されるようになっています。
始点/終点を指示しておいた上で、マウスドラッグで三点通過の円弧を
描画させるようなアプリケーションが既にあるという事でしょうか。

この場合、三点が直線上に並んでいたりすると円弧を描けなくなりますが、
今回はそういった場合は除外して構わないという認識で良いのでしょうか。

# そういえば AutoCAD には、三点指定で円弧を描画する機能がありますね。
# http://cad.dee.cc/step1/step1_5.htm
# AutoCAD VBA だと {中心, 半径, 始角, 終角} 指定になってしまいますが…。


>> 円弧中点を決定する際には
MouseMove によって、マウス座標を通過する円弧を描くことは可能ですし、
その円弧上の中点位置を算出・描画する事も可能だと思います。ただし
その場合には、この「中点」はマウス座標と別の箇所に描画されることに
なりますが、それでよろしいのですよね?
http://www.vb-user.net/junk/replySamples/2010.08.18.10.40/image.png


> その際の中心座標と半径の求め方について
「円弧 3点」などで検索してみると、中心座標の求め方が見つかると思いますよ。
http://www.nc-net.or.jp/mori_log/detail.php?id=105178
http://m-sudo.blogspot.com/2008/07/blog-post_11.html


中心座標(x1, y1)が分かれば、半径を求めるのは簡単ですよね。
円弧上の点(x2, y2)までの距離を求めれば良いわけですから、
算出式としては ((x1 - x2) ^ 2 + (y1 - y2) ^ 2) ^ 0.5 です。

[ツリー表示へ]
タイトルRe^5: 3点円弧の描画方法について
記事No14860
投稿日: 2010/08/18(Wed) 14:46
投稿者プー
るしぇさん、魔界の仮面弁士さん
色々とアドバイス頂きまして、ありがとうございます。

魔界の仮面弁士さんがおっしゃる通りなのですが、始点/終点を指示しておいた上で
マウスドラッグで三点通過の円弧を描画させるようなアプリケーションが既にあるのです。
その際、三点が直線上に並んでいたりすると円弧を描けなくなりますが、そういった
場合は除外して頂いて構いません。

VB6で開発されたアプリケーションなのですが、実行形式のExeファイルしかなく
どうやって実現しているのかが分からなかったので質問させて頂きました。
VBの話題から外れてしまい、申し訳ありません。

魔界の仮面弁士さんに教えて頂いたサイトを参考に、中心座標が求められそうです。
本当にありがとうございました。

[ツリー表示へ]