• ベストアンサー

円の中を通る点の軌跡を、パソコンで表現する方法は?

半径αの円が平面上の直線を回転しながら移動するとき、直線から高さβの動かない点と接触します。 点βが円の中で描く軌跡の求め方を教えて下さい。  紙1枚に、これを一目瞭然に分かりやすく表現しなくてはいけなくなりました。 軌跡を図で表したいです。出来れば、式も添えて。 エクセル等の何かソフトを使って、どの様な方法でも良いのでやり方を教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.29

VB.NETのプログラムコードを載せておきます。 フォームにButtonとPicureBoxを配置して、 Buttonのクリックイベントに下記のコードを記述してください。 PicureBoxのサイズは500×220にしてください。 VB.NETは、無料のVisula Studio Express 2013 for Desktop をダウンロードしてインストールすれば使えます。 VB.NETの使い方は、ここで簡単に説明することはできないので、入門用のサイトでも見て学習してください。 http://homepage1.nifty.com/rucio/VBNyumon/Index_beg.htm Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim i As Integer, n As Integer Dim a As Single, b As Single, c As Single Dim p As Single, q As Single Dim x1 As Single, y1 As Single Dim x2 As Single, y2 As Single Dim objPen = New Pen(Color.Black, 2) Dim objGrp As Graphics = PictureBox1.CreateGraphics a = 100 b = 80 c = Math.Sqrt((2 * a - b) * b) For n = 0 To 10 objGrp.Clear(PictureBox1.BackColor) objGrp.DrawLine(objPen, 0, 10 + 2 * a, PictureBox1.Width, 10 + a * 2) objGrp.DrawEllipse(objPen, 10 + c * n / 5, 10, 2 * a, 2 * a) objGrp.FillEllipse(Brushes.Black, 7 + a + c, 7 + 2 * a - b, 6, 6) p = c / a * (n - 5) / 5 For i = 0 To n * 10 q = c / a * (50 - i) / 50 x1 = (b - a) * Math.Sin(p + q) + a * q * Math.Cos(p + q) + c * n / 5 y1 = (b - a) * Math.Cos(p + q) - a * q * Math.Sin(p + q) If i > 0 Then objGrp.DrawLine(objPen, 10 + a + x1, 10 + a - y1, 10 + a + x2, 10 + a - y2) x2 = x1 y2 = y1 Next Threading.Thread.Sleep(100) Next objPen.Dispose() objGrp.Dispose() End Sub

creampuff123
質問者

お礼

nag0720さん、どうもありがとうございました! 連絡が遅くなりまして、失礼致しました。 VBを使い、教えて頂いたコードをコピペして  全くの素人な私でも簡単に、欲しいものが作れました。 本当に助かりました。ありがとうございます。 ベストアンサーに選ばさせて頂きます。 でもこの感謝の気持ちはそれでは足りない程です。 今、線を足したり、数値を表示させたり、色々自分で脚色することに格闘しております。 相談中にも申しましたが、私は数学やプログラム等と無縁な生活をしております。エクセルすら未経験で、プログラムも未経験です。 数学は学生以来で、行列って懐かしいなー。こんな公式あったなー。というレベルでして。 今回どうしても、この一枚の書類が必要に迫られ、途方に暮れていました。 最悪の場合、手描きでと考えていましたが、 手描きのものでは、信憑性がなかったので。 nag0720さんをはじめ、皆さんのおかげです。 ありがとうございました!

その他の回答 (31)

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.11

失礼。 トコロイド曲線ではなく、トロコイド曲線でした。

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.10

>円が回転移動している様子も描きたいのです。 それなら、 ((β-α)sinθ+αθcosθ, (β-α)cosθ-αθsinθ) の曲線をθだけ逆回転し、さらにαθだけ左に平行移動して本来の位置に戻してやればいいのでは。 No.3で説明されているようにβの位置にペンがあるとしたら、円内のペン跡の軌跡を知りたいのか、ペンでマークした個々の軌跡を知りたいのか? 前者なら上記の方法で求められますし、後者ならペンでマークした個々の軌跡はそれぞれ別々のトコロイド曲線になり1つの曲線にはなりません。

creampuff123
質問者

補足

nag0720さん、ありがとうございます。 毎度、説明不足ですみません。 欲しいのは、トロコイド曲線ではないです。 > No.3で説明されているようにβの位置にペンがあるとしたら、円内のペン跡の軌跡を知りたいのか これに加えて、円が回転移動している様子も欲しいのです。 「円がこの位置ならば点はここにある、そのコマ送りの連続によって、出来上がる図。」 と言えば伝わるでしょうか? 見れば一目瞭然に(No.3 178-tallさんの表現をおかりして) 「円板がまっすぐ転がっていき、点βの位置に固定されたペン先に触れながら通過していく。円板にはペン先の軌跡が残る」 ということが、分かる図。出来ればアニメーションも。 最終的に、上記のような物の完成を目指しています。 > ((β-α)sinθ+αθcosθ, (β-α)cosθ-αθsinθ) の曲線をθだけ逆回転し、さらにαθだけ左に平行移動して本来の位置に戻してやればいいのでは。 まことにすみません。恥ずかしながら、 私は数学からすっかり離れてかなりの期間があり、分からないです。

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.9

No.5です。 軌跡の式の符号が間違ってました。 正しくは、 ((β-α)sinθ+αθcosθ, (β-α)cosθ-αθsinθ) 円の中の軌跡を求めるのだから、円を固定するのが自然です。 いわば、円の中に人が立って、βの動きを観察すると考えればいいでしょう。 添付図の左図を初期状態として、 点Pの座標は(0, -α) 点βの座標は(0, β-α) θ回転して右図になって、点Qと接しているとき、 点Qの座標は、(-αsinθ, -αcosθ) PQ=αθ だから、 点Pの座標は、(-αsinθ+αθcosθ, -αcosθ-αθsinθ) 点βの座標は、(-αsinθ+αθcosθ+βsinθ, -αcosθ-αθsinθ+βcosθ) 整理すると、 ((β-α)sinθ+αθcosθ, (β-α)cosθ-αθsinθ)

creampuff123
質問者

補足

ご丁寧な回答を頂き、ありがとうございます。 せっかくなのですが、私の最終的な目的とずれてきている気が致します。 円が回転しながら進むことによって、静止している点と接触。 円は止まらずに進み続け、その接触点の軌跡を描く。 円が回転移動している様子も描きたいのです。 よろしくお願い致します。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.8

ということはサイクロイドじゃなくて・・・ 円??

  • shuu_01
  • ベストアンサー率55% (759/1365)
回答No.7

> 円:x^2+y^2=α^2 > 直線:y=-α > 点β:(0, β-α) 発想、すばらしいと思います 地面の上をタイヤが転がるように進むとすると、 直線:y=-α と置くのはよいですが、 (スポーツジム の 地面が動くマシーンの上で  ランニングしてるみたいなイメージです) すると、直線は実際、y=-α の上を動くので、 βも動きますよね

  • shuu_01
  • ベストアンサー率55% (759/1365)
回答No.6

まず、No.4 さんの図がとてもきれいで感動しました (*^o^*)/ でも、まだ完全には理解できず、追加質問させてください > 半径αの円は、直線の乗っている平面に対して、垂直な円です。 > 円はその直線上を回転しながら進むものとします。 > 高さβの点は、直線の乗っている平面に対して、垂直な位置、高さβの所にある動かない点です。 > 直線の真上に位置しているものとします。+側です。 > 半径αの円は、高さβの点と接触しながら進みます。 > その接触の軌跡を求めています。 まず、円は地面を転がるタイヤのように 直線とまったく滑らず、 回転するのですか? そして、高さ β の点と 円が接するというのは、辺縁だけでなく、 内部と接し、βの点には ペンとか鉛筆が付けられており、 タイヤに描く、線がどんな図形になるか、図示したい って理解でよいですか? 仮にそうだとして、僕はこの後、友達と飲み会で、夜中の0時過ぎ まで帰られず、問題を解くの明日以後です その前にだれか、解いちゃってそうです

creampuff123
質問者

補足

回答頂きありがとうございます! おっしゃる通りです。その理解で合っています。 返信が遅くなり、申し訳ないです。 飲み会楽しんできて下さいね!

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.5

視点を変えて、 「円を固定して、その周りを直線と点βが回転しながら移動する」 と考えれば分かりやすいのでは。 円:x^2+y^2=α^2 直線:y=-α 点β:(0, β-α) として、直線と点βが円の周りを角度θだけ右回りで転すると、点βの軌跡は、 ((β-α)sinθ-αθcosθ, (β-α)cosθ+αθsinθ)

creampuff123
質問者

お礼

回答頂きありがとうございます! 式を答えて頂きどうもありがとうございます! 早速、試してみます! この式について質問なのですが、 >「円を固定して、その周りを直線と点βが回転しながら移動する」 この視点で作られた式は、式だけを見たとき、 「円が回転し、点と直線を固定する」という元の視点の意味も含まれるのでしょうか? 教えて頂けますでしょうか。 よろしくお願いします!

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.4

やっぱり分かりません。 βは動かないのですから、直線との距離が2a>β>0 なら、円はぶつかったら止まります。 たぶん、 >平面上の直線を回転しながら移動  とは、中心の座標のことじゃなくて、直線に接して移動している・・・ということだと思いますが、回転方向も書かれていません。円と滑りながら逆回転しながら移動しているかもしれません。  いずれにしても「動かない点」には軌跡はありません。  

creampuff123
質問者

お礼

ORUKA1951さん、ありがとうございました。 無事に作成出来ました。

creampuff123
質問者

補足

図をつけての回答を頂き、どうもありがとうございます 至らぬ点だらけで、申し訳ないです。 >βは動かないのですから、直線との距離が2a>β>0 なら、円はぶつかったら止まります。 これで、止まらずに突き進んで欲しいのです。 上の方の図のように、円は直線に接して移動します。 回転方向は、前方に転がるイメージで、回転しながら進みます。 逆回転はしません。 回答3の方が書いて下さった再現状況通りです。 よろしくお願い致します。

  • 178-tall
  • ベストアンサー率43% (762/1732)
回答No.3

状況のリフレーズが難解? けっこうメンドイか。  平面上に直線 L あり。  半径αの円板が直線 L の上を平面に垂直なまま転がっていく (途中でコケない) 。  円板の転がっていく途上には、垂直面の高さβの点にペン先が固定されている。  転がってきた円板には、ペン先が触れたときの軌跡が残る。 と、こんな感じですかネ。 解き方は? 「状況再現」の当否次第…。   

creampuff123
質問者

お礼

回答頂きありがとうございます。 正にその通りです! 分かりやすい状況再現をありがとうございます! 解き方をよろしくお願いします!

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

>直線から高さβの動かない点 [動かない]ですから、軌跡は点!!にしかなりませんよ。

creampuff123
質問者

補足

回答頂きありがとうございます。 説明不足で申し訳ないです。 点βは動きませんが、半径αの円が動きます。 この円は点βと接触しながら、回転移動します。 そのときに円の中に出来る軌跡が知りたいのです。 回答1へ補足させて頂いたので、そちらを参考にしていただければ幸いです。

関連するQ&A