LoginSignup
0
1

More than 3 years have passed since last update.

それもしかして再帰出来るんちゃうの

Posted at

初めに

以前にも運動学自体の記事は書いたのですが,n軸に対応するときに,賢い書き方はないのかと考えていたところ再帰することができるのではないかと考えた所です.

再帰させたい処理

arm.py
    x1 = L1 * np.cos(deg1)
    y1 = L1 * np.sin(deg1)
    x2 = x1 + L2 * np.cos(deg1+deg2)
    y2 = y1 + L2 * np.sin(deg1+deg2)
    x3 = x2 + L3 * np.cos(deg1+deg2+deg3)
    y3 = y2 + L3 * np.sin(deg1+deg2+deg3)

いかにも再帰できそうな雰囲気ありません???

再帰させてみた

arm.py
def test(x,y,deg,L,n):
    if n < len(x)-1:
        x[n] = L[n]*math.cos(deg[n]) + x[n-1]
        y[n] = L[n]*math.sin(deg[n]) + y[n-1]
        return test(x,y,deg,L,n+1)
    elif n >= len(x)-1:
        x[n] = L[n]*math.cos(deg[n]) + x[n-1]
        y[n] = L[n]*math.sin(deg[n]) + y[n-1]
        return x,y

_x = [0]*3
_y = [0]*3
deg = [0.0,math.pi*0.5,0.0]
L = [1,1,1]

print(test(_x,_y,deg,L,0))

([1.0, 1.0, 2.0], [0.0, 1.0, 1.0])

意外と苦労したけど形になりましたとさ

0
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1