あやの
NゲージをベースとしたDCCについての日記を 書いています。 ある程度貯まりましたら、鉄道模型のDCCのまとめサイトに まとめています。 借りている容量が最大に達しましたので、移転します。 ★移転先:http://maison-dcc.sblo.jp/
検証してみました。
言語はExcel VBAを使いました。
■その1
以下のような、プログラムで作りましたが、線1本なので味気がありません。
Sub test()
ActiveSheet.DrawingObjects.Delete
Pi = 3.14
ox = 100
oy = 100
For i = 0 To 360 Step 45
x = Cos(i * Pi / 180)
y = Sin(i * Pi / 180)
ActiveSheet.Shapes.AddLine x * 100 + ox, y * 100 + oy, x * 10 + ox, y * 10 + oy
Next i
End Sub
■その2
針を太らせるために以下のような、プログラムで作りましたが、角度によって開きが異なります。
※現在のDCC速度計のアルゴリズムと同等
Sub test2()
ActiveSheet.DrawingObjects.Delete
Pi = 3.14
ox = 100
oy = 100
For i = 0 To 360 Step 45
x = Cos(i * Pi / 180)
y = Sin(i * Pi / 180)
ActiveSheet.Shapes.AddLine x * 100 + ox, y * 100 + oy, x * 10 + ox + 5, y * 10 + oy + 5
ActiveSheet.Shapes.AddLine x * 100 + ox, y * 100 + oy, x * 10 + ox - 5, y * 10 + oy - 5
Next i
End Sub
■その3先っぽもSin,Cosを使う必要があるんだねということで。
良い感じになりました。
Sub test3()
ActiveSheet.DrawingObjects.Delete
Pi = 3.14
ox = 100
oy = 100
Angle = 60
For i = 0 To 360 Step 45
x1 = Cos(i * Pi / 180)
y1 = Sin(i * Pi / 180)
x2 = Cos((i * Pi + Angle) / 180)
y2 = Sin((i * Pi + Angle) / 180)
x3 = Cos((i * Pi - Angle) / 180)
y3 = Sin((i * Pi - Angle) / 180)
ActiveSheet.Shapes.AddLine 100 * x1 + ox, 100 * y1 + oy, 10 * x2 + ox, 10 * y2 + oy
ActiveSheet.Shapes.AddLine 100 * x1 + ox, 100 * y1 + oy, 10 * x3 + ox, 10 * y3 + oy
Next i
End Sub
■原理はこんな感じで、(x1,y1)を起点として、(x2,y2), (x3,y3)の座標を演算して表示させています。