星型をシート上で回転しながらぐるっと円周のように動かそうと、ためしに下記のマクロを書きましたが、やはり方向転換がぎこちなく、スムーズな丸い動きにはなりません。
かと言って、上下左右以外に動かす方法はないでしょうし、何かいいやり方はないでしょうか?
Sub Star()
With ActiveSheet.Shapes.AddShape(msoShape5pointStar, 273#, 43#, 50#, 50#)
.Fill.ForeColor.SchemeColor = 13
.Line.Weight = 0.75
.Line.ForeColor.SchemeColor = 64
For i = 1 To 180
a = 1
b = 1
If i > 90 Then a = -1
If i < 45 Or i > 135 Then b = -1
.IncrementRotation 2
.IncrementTop 2 * a
.IncrementLeft -2 * b
DoEvents
Next
End With
End Sub
No.2ベストアンサー
- 回答日時:
とりあえず#1の方の参考URLは上の方だけ参考にされたらいかがですか。
すなわち、
X=Rcosθ + X0
Y=Rsinθ + Y0
の部分です。
参考URLでは実数計算の重さを嫌って、工夫されているのですが、それほど頻繁に使用するとも思えないので、このままの式を利用すればよいと思います。
Sub Star()
With ActiveSheet.Shapes.AddShape(msoShape5pointStar, 200#, 344#, 50#, 50#)
.Fill.ForeColor.SchemeColor = 13
.Line.Weight = 0.75
.Line.ForeColor.SchemeColor = 64
wkr = 144
For i = 0 To 3.1415 * 2 Step 3.1415 * 2 / 60
a = Sin(i) * wkr + 200
b = Cos(i) * wkr + 200
.IncrementRotation 2
.Left = a
.Top = b
DoEvents
Next i
End With
End Sub
基本的に上記の数式を当てはめれば、こんな感じになると思います。
この回答への補足
X = Rcosθ + X0
Y = Rsinθ + Y0
の意味が良くわかってないので
For i = 0 To 3.1415 * 2 Step 3.1415 * 2 / 60
もわからないのですね、きっと。
数学のカテで再度質問をしてみます。
ありがとうございました。
ありがとうございます!おかげさまで円運動をする星型シェープが出来ました!VBAでサイン、コサインの計算が出来るとは思いませんでした。すごいですね。
ただ、わからなかったのはFor i = 0 To 3.1415 * 2 Step 3.1415 * 2 / 60 の部分です。
0.10471666・・・刻みで60回まわしてるんですよね?
これってどういう意味なんですか?
よろしければお教え願えませんでしょうか?
No.3
- 回答日時:
軌跡上の等速運動ではないのですが(Left,Topを動かしているため)、時計と反対回りに6時から12時回りに星が動きます。
角度等速変化に変更すれば滑らかになるでしょう。
取りあえず何かの参考になれば。
WaitSec 0.2 の数を少なくすると速く動きます。
Sub test01()
Worksheets("sheet1").Select
Worksheets("sheet1").Activate
'---------
For i = 1 To 50
WaitSec 0.2
Worksheets("sheet1").DrawingObjects.Delete
leftv = i + 100
topv = Sqr(2500 - i ^ 2) + 100
ActiveSheet.Shapes.AddShape(msoShape5pointStar, leftv, topv, 34.5, 34.5). _
Select
DoEvents
Next i
'-------
For i = 1 To 50
WaitSec 0.2
Worksheets("sheet1").DrawingObjects.Delete
leftv = 150 - i
topv = 100 - Sqr(2500 - (50 - i) ^ 2)
ActiveSheet.Shapes.AddShape(msoShape5pointStar, leftv, topv, 34.5, 34.5). _
Select
DoEvents
Next i
End Sub
'---------
Sub WaitSec(sngWaitSec As Single)
Dim sngCurTimer As Single
sngCurTimer = Timer + sngWaitSec
Do
Loop Until Timer >= sngCurTimer
End Sub
No.1
- 回答日時:
これは・・・直線でひし形を描くアルゴリズムではないかと。
円弧と直線は全然違いますよ。小学生の頃の記憶を呼び覚ましましょうw実はそのものずばり円弧を描画するAPIなるものも存在するのですが、円を描くアルゴリズムはよく教科書などにも出て来る基本ですし、まぁ参考URLなどをじっくり読み込めば自作も出来るんじゃないでしょうか。
参考URL:http://www2.starcat.ne.jp/~fussy/algo/algo2-1.htm
> これは・・・直線でひし形を描くアルゴリズムではないかと。
おっしゃる通りです。軌跡を残すわけではないからこれでも円運動に見えないかなあと思ったのですが駄目でした。
参考URL拝見しましたが、からきし数学音痴のわたしには到底無理のようです。トホホ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの図形で弧を書く方法
-
Auto CADで、接線がうまく引け...
-
円弧の線上にスナップしたい
-
JW CAD 円に放射状の線を等間隔...
-
AutoCAD 異なるR 接円
-
ベクターワークスで円弧状に図...
-
AUTOCADで懸垂曲線(カテナリー...
-
エクセルで、渦巻きを作りたい。
-
AutoCad 二つの曲線の最も近い...
-
渦巻き製図
-
【CADで直線と円弧の交点座標を...
-
autoCADで三辺を指定して三角形...
-
エクセルの角丸四角形の角の大...
-
AUTO CAD操作方法 半円の書き方
-
JW_CADの設定「点半径」って...
-
JWCADで楕円が変形した図を描く...
-
officeのvisioで線を交差させる
-
半円の描き方
-
クリッピングマスクの枠の外を...
-
jw_cadで消えない線があります...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの図形で弧を書く方法
-
autoCADで三辺を指定して三角形...
-
エクセルで、渦巻きを作りたい。
-
officeのvisioで線を交差させる
-
JW CAD 円に放射状の線を等間隔...
-
ハートを書きたい!
-
AutoCad 二つの曲線の最も近い...
-
AUTOCADで懸垂曲線(カテナリー...
-
円弧の線上にスナップしたい
-
Auto CADで、接線がうまく引け...
-
JWCADで楕円が変形した図を描く...
-
エクセルの角丸四角形の角の大...
-
AutoCAD 異なるR 接円
-
auto cadの作図
-
渦巻き製図
-
半円の描き方
-
ベクターワークスで円弧状に図...
-
ワード2003の円の描き方に...
-
mayaでコンストレイントの始点...
-
AUTO CAD操作方法 半円の書き方
おすすめ情報