- 1 名前:とっつぁん mailto:とっつぁん [02/05/15 03:44 ID:???.net]
- 沙羅曼陀の1面やグラディウスIIの2面にでてくるようなスラッとした動きの触手、
グラディウスIIIの植物面にでてくるのや沙羅曼陀の1面ボスのゴーレムの手みたいに 時機を追いかけているうちに自ら絡まってこんがらかるような動きの触手の アルゴリズムというか計算方法を教えてください。
- 173 名前:あああ [02/06/14 21:16 ID:MQwpPVXA.net]
- うーむ。絵がずれるねー。いやーん。
(Module.bas で 定義) Type rect obj As Integer ang As Integer End Type Sub Kansetu_Click () Const SHOULDER = 1 ' 肩 Const ELBOW = 2 ' 肘 Const HAND = 3 ' 手 ReDim x(4) As Single ReDim y(4) As Single ReDim an(10) As rect ' データ構造 ' データ an(0).obj = 0: an(0).ang = 0 an(1).obj = ELBOW: an(1).ang = 30 an(2).obj = HAND: an(2).ang = 45 an(3).obj = SHOULDER: an(3).ang = 25 an(4).obj = ELBOW: an(4).ang = 40 an(5).obj = SHOULDER: an(5).ang = 30 an(6).obj = HAND: an(6).ang = 60 an(7).obj = SHOULDER: an(7).ang = 45 an(8).obj = ELBOW: an(8).ang = 60 an(9).obj = -1: an(9).ang = 0
- 174 名前:あああ [02/06/14 21:18 ID:MQwpPVXA.net]
- p = 3.14156 / 180 ' π
h = ScaleHeight / 2 ' Form の 高さ w = ScaleWidth / 4 ' Form の 幅 sl = 250 ' 肩の長さ el = 300 ' 肘の長さ hl = 200 ' 手の長さ c = 5: ' 色 j = 0:oan1=0:oan2=0:oan3=0 Do If an(j).obj = -1 Then Exit Do Cls Select Case an(j).obj Case 1: an1 = an(j).ang + oan1 ' 肩を動かす an2 = an1 + oan2 an3 = an2 + oan3 oan1 = an1 Case 2: an2 = an1 + an(j).ang + oan2 ' 肘を動かす an3 = an2 + oan3 oan2 = an(j).ang Case 3: an3 = an2 + an(j).ang + oan3 ' 手を動かす oan3 = an(j).ang End Select
- 175 名前:あああ [02/06/14 21:18 ID:MQwpPVXA.net]
- x(0) = 0: y(0) = 0
x(1) = Cos(an1 * p) * sl: y(1) = Sin(an1 * p) * sl x(2) = Cos(an2 * p) * el: y(2) = Sin(an2 * p) * el x(3) = Cos(an3 * p) * hl: y(3) = Sin(an3 * p) * hl ' 線を描画 Line (x(0) + w, y(0) + h)-(x(1) + w, y(1) + h), QBColor(c) Line -(x(2) + w + x(1), y(2) + h + y(1)), QBColor(c + 1) Line -(x(3) + w + x(2) + x(1), y(3) + h + y(2) + y(1)), QBColor(c + 3) j = j + 1 MsgBox "Push Next" Loop End Sub
|

|