重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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

紙1枚に、これを一目瞭然に分かりやすく表現しなくてはいけなくなりました。
軌跡を図で表したいです。出来れば、式も添えて。
エクセル等の何かソフトを使って、どの様な方法でも良いのでやり方を教えて下さい。

「円の中を通る点の軌跡を、パソコンで表現す」の質問画像

A 回答 (32件中1~10件)

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_ …


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
    • good
    • 0
この回答へのお礼

nag0720さん、どうもありがとうございました!
連絡が遅くなりまして、失礼致しました。

VBを使い、教えて頂いたコードをコピペして 
全くの素人な私でも簡単に、欲しいものが作れました。
本当に助かりました。ありがとうございます。
ベストアンサーに選ばさせて頂きます。
でもこの感謝の気持ちはそれでは足りない程です。

今、線を足したり、数値を表示させたり、色々自分で脚色することに格闘しております。

相談中にも申しましたが、私は数学やプログラム等と無縁な生活をしております。エクセルすら未経験で、プログラムも未経験です。
数学は学生以来で、行列って懐かしいなー。こんな公式あったなー。というレベルでして。
今回どうしても、この一枚の書類が必要に迫られ、途方に暮れていました。
最悪の場合、手描きでと考えていましたが、
手描きのものでは、信憑性がなかったので。

nag0720さんをはじめ、皆さんのおかげです。

ありがとうございました!

お礼日時:2013/12/25 14:37

>…どの様にすれば、図形が描けるか…



EXCEL 使用の場合なら…。

(1) [r, θ] 表 - 算式を作成。
 r = √{α^2(cosθo -φ)^2 + d^2 }
  θ= arccos{α(cosθo -φ)/r } ± φ

  :φ∈ [0, 2*cosθo ] … この区間を所望ステップで分割指定
   θo = arcsin(d/α)
   d = |α-β| > 0
   ± 上半 / 下半分

(2) [r, θ] 表 → [x, y] 表へ変換。
 [x, y] = [r*cosθ, r*sinθ]

(3) [x, y] 表を「散布図」グラフに描かせる。

(円板は、[α, θ] 表 (θは 0 から 2π まで所望ステップで分割指定) → [x, y] 表へ変換) → 「散布図」グラフに描かせておく)

…てな調子です。

  
    • good
    • 0
この回答へのお礼

178-tallさん、どうもありがとうございました!

とてもご丁寧に教えて頂きありがとうございました!
式も分からない、その式の使い方も分からない状態の私に親切にお付き合い頂き、
感謝の気持ちでいっぱいです。

エクセルは使えるようになりたいので、
今回はVBを使用しましたが、教えて頂いた通りにチャレンジしてみます。

お世話になりました。
ありがとうございました!

お礼日時:2013/12/25 18:16

>ANo.30


 まとめ損ねの訂正です。

 r = √{α^2(cosθo -φ)^2 + d^2 }
 θ= arccos{α(cosθo -φ)/r } ± φ

  :φ∈ [0, 2*cos(θo) ]
   θo = arcsin(d/α)
   d = |α-β| > 0
   ± 上半 / 下半分

  
    • good
    • 0

>ANo.28



算式まとめ。

「逆三角関数」は EXCEL にて通用する (象限を識別できる) =ACOS( ) を使用。

 r = √{α^2(cosθo -φ)^2 + d^2 }
 θ= arccos{α(cosθo -φ)/r } ± φ

  :φ∈ [0, 2*cos(θo) ]
   θo = arcsin(d/α)
   d = α-β > 0
   ± 上半 / 下半分

  
    • good
    • 0

>実は、私の欲しいαとβは 0<β<α なのです。



実は、α < β < 2α で手こずってました。

一段楽したので、0 < β<α 用の [r, θ] 表 - 算式を試作してみましょう。
「逆三角関数」は EXCEL にて通用する (象限を正しく認識してくれる) =ACOS( ) を使用。

 r = √{α^2(cosθo -φ)^2 + d^2 }
 θ= φ- arccos{α(cosθo -φ)/r }
  : φ∈ [0, 2*cos(θo) ], θo = arcsin(d/α), d = α-β > 0

α < β < 2α では「間延びしたカーヴ」でしたが、0 < β<α だと「押しちぢめたカーヴ」ですネ。
ペン先に対する円板の回転方向がたがいに真逆だから、なのでしょう…。

  
    • good
    • 0

度重なる訂正で、蒙御免。



>[r, θ] 表
> r = √{ {α(cos(θo) -φ}^2 + p^2 }
> θ = ρ + φ
>  : ρ = arcsin(p/r), p = |α-β|

   ↓ θ の訂正

[r, θ] 表
 r = √{ {α(cos(θo) - φ}^2 + p^2 }
 θ = θo + φ
  : φ∈ [0, 2*cos(θo) ], θo = arcsin(p/α), p = |α-β|

EXCEL シートにθ-列を乱立させており、錯誤の引用をしてました。
もっともらしいプロットのθが、このθ。

>「八の字ひげ」状のカーヴになりました。

  
    • good
    • 0
この回答へのお礼

178-tallさん、どうもありがとうございます!

八の字ひげ状のカーブだと、違うと思うのです。
私の欲しいカーブは質問欄に追加した、手書きの図のようなイメージのものです。

円とβが触れる始点と終点の先をそれぞれ伸ばすと八の字ひげ状になるのかなー?とも思うのですが。私には定かではないです。。

教えて頂いたものを、さっと確かめることが出来たらいいのですが、
出来ていません。

色々やってみているのですが。。
どの様にすれば、図形が描けるか、
具体的に教えて頂けますでしょうか。
よろしくお願い致します。

お礼日時:2013/12/23 10:24

>ANo.25



>更なる錯誤あり。

>[r, θ] 表
> r = √{ {α(cos(θo) -φ}^2 + p^2 }
> θ = ρ + φ
>  : ρ = arcsin(p/r), p = |α-β|

算式の最終版らしいが、EXCEL では cos(θo) -φ が負になる領域にて通用しない。

負領域にて、ρ = (π/2) + arccos(p/r) と切り替えれば凌げる…。

  
    • good
    • 0

>ANo.23



>(算式には、まだ錯誤があるかも知れません。略図を描き追跡しながら吟味してみて…)

更なる錯誤あり。

>α < β <2α の場合。
>初期タッチしたあとの円板の回転角をφとして、下式により [r, θ] 表を作成しておく。
> r = √{ {α(cos(θo) -φ}^2 + p^2 }
> θ = θo + φ
   ↑
θ = θo + φ はカウント不足でした。
更に r の角振れを加算せねばならない。

[r, θ] 表
 r = √{ {α(cos(θo) -φ}^2 + p^2 }
 θ = ρ + φ
  : ρ = arcsin(p/r), p = |α-β|

……

  
    • good
    • 0

>βの動きが違う気がします。


>円が回転して、円の軌跡がいくつもできたとしても、
>βは定点で、動いてはいけないので、1本になると思うのです。

βの位置は、図の中央部分の曲線が密集している1点で、動いてはいません。

質問欄の1~6の図を1つに重ね合わせれば、No.22と同じような図になってますね。
    • good
    • 0
この回答へのお礼

nag0720さん、ありがとうございます。

失礼致しました。
No22の下側の図で正解だと思います!


>βは定点で、動いてはいけないので、1本になると思うのです。

よくよく考えると、そんなはずないです。大変失礼いたしました。

図を見ると、円の移動距離に応じた長さの、βとの接触軌跡が描かれていますので、
私の描きたいものは、この図です。

ですが、この図を私が描ければ良いのですが、
どうにも、描けれません。

VBをダウンロードしてみましたが、使い方が分かりませんでした。
使い方を載せているサイトをいくつか見たのですが、
プログラム言語を見るのが初めてで、わかりません。

もしよろしければ、具体的に教えていただけませんでしょうか。
よろしくお願い致します。

お礼日時:2013/12/22 22:41

>回答No.19


>(算式には、まだ錯誤があるかも知れません。略図を描き追跡しながら吟味してみて…)

案の定、錯誤あり。
円板上の座標 [r, θ] のθと、「初期タッチから円板がθだけ回転」のθとは区別せねばなりませんネ。

α < β <2α の場合。
初期タッチしたあとの円板の回転角をφとして、下式により [r, θ] 表を作成しておく。
 r = √{ {α(cos(θo) -φ}^2 + p^2 }
 θ = θo + φ
  : θo = arccos(p/α), p = |α-β|


EXCEL で強引に作図させてみると?
 [0] まず 半径αの円。[α, θ] 表を [x, y] に変換して「散布図」表示。
 [1] α < β <2α の場合、[r, θ] 表を [x, y] に変換して「散布図」表示。
 [2] 0 < β < α の場合、[1] から [x, -y] にして「散布図」表示。

「八の字ひげ」状のカーヴになりました。

それにしても EXCEL って商売勘定専用の道具だなア、とつくづく実感…。

  
    • good
    • 0
1  2  3  4 次の回答→

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!