• ベストアンサー

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

半径αの円が平面上の直線を回転しながら移動するとき、直線から高さβの動かない点と接触します。 点βが円の中で描く軌跡の求め方を教えて下さい。  紙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)

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

> 半径αの円が平面上の直線を回転しながら移動するとき、 > 直線から高さβの動かない点と接触します。 この文章の意味、よく理解できませんが? 立体的に考えてるの? 直線の乗ってる平面に対し、垂直な円なの? それとも平面に乗ってる円? 平面で考えるなら、直線からの高さ β の点って、2個しかなくて、 それは zy 座標だと y = βの直線でない? 立体的に考えても、平面からの高さ βの直線になると思いますけど ということで質問の意味よくわかりませんが、 パソコンで関数のグラフを描く方法は 表計算ソフト 『Excel』 http://www.kn-makkun.com/MakkunWp/excels.html に説明されており、 | 『GRAPES』や『Function View』は、関数の式を代入するだけで、 | いとも簡単にグラフを描いてしまう優秀なフリーソフトとして有名です。 とフリーソフトも紹介されています

creampuff123
質問者

補足

回答頂きありがとうございます。 説明の補足をさせて頂きます。 立体的に考えています。 半径αの円は、直線の乗っている平面に対して、垂直な円です。 円はその直線上を回転しながら進むものとします。 高さβの点は、直線の乗っている平面に対して、垂直な位置、高さβの所にある動かない点です。 直線の真上に位置しているものとします。+側です。 半径αの円は、高さβの点と接触しながら進みます。 その接触の軌跡を求めています。 どう説明すればよいものか、悩んでいましたのでありがとうございます。 もし、また不明箇所があれば教えて頂ければ幸いです。 まずこの関数の式が分かりません。 関数の式が分かれば、教えて頂いたフリーソフトを使ってみたいと思います。 よろしくお願い致します。