Title: 3D line object loses its color cycle in a function animation · Issue #3362 · matplotlib/matplotlib · GitHub
Open Graph Title: 3D line object loses its color cycle in a function animation · Issue #3362 · matplotlib/matplotlib
X Title: 3D line object loses its color cycle in a function animation · Issue #3362 · matplotlib/matplotlib
Description: Python 2.7.5, NumPy 1.7.1, SciPy 0.13.0, Matplotlib 1.3.1 This is a script to simulate the rolling of a coin( a circle) on a surface without slipping in 3 dimensions. I tried to paste on a shorter version of my code but it is not easy be...
Open Graph Description: Python 2.7.5, NumPy 1.7.1, SciPy 0.13.0, Matplotlib 1.3.1 This is a script to simulate the rolling of a coin( a circle) on a surface without slipping in 3 dimensions. I tried to paste on a shorter ...
X Description: Python 2.7.5, NumPy 1.7.1, SciPy 0.13.0, Matplotlib 1.3.1 This is a script to simulate the rolling of a coin( a circle) on a surface without slipping in 3 dimensions. I tried to paste on a shorter ...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/3362
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"3D line object loses its color cycle in a function animation","articleBody":"Python 2.7.5, NumPy 1.7.1, SciPy 0.13.0, Matplotlib 1.3.1\n\nThis is a script to simulate the rolling of a coin( a circle) on a surface without slipping in 3 dimensions. I tried to paste on a shorter version of my code but it is not easy because of the physics part. Please bare with me. My question relates to the animation part. If one uncomments the last two lines related to function animation just before the `pyplot.show()`, we will get a colored circle. But if we keep the function animation, the circle in motion will only have one color. The circle is a 3D line object and, it is being updated by `update_line` function. It seems the color information is left behind during the update_line or animation period. I tried many methods like, passing in the color argument into the `update_line` function and use the set_c method, or passing in a colormap and a scale. None of them worked for me. Does anyone know how to give the rolling circle a color gradient/cycle, to make it looks more like a rolling without slipping motion? Thanks in advance! Tony :)\n\n```\nimport numpy as np\nfrom matplotlib import pyplot\nimport mpl_toolkits.mplot3d.axes3d as p3\nimport matplotlib.animation as animation\n\ndef rotation_matrix(axis,theta):\n axis = axis/np.sqrt(np.dot(axis,axis))\n a = np.cos(theta/2)\n b,c,d = axis*np.sin(theta/2)\n return np.array([[a*a+b*b-c*c-d*d, 2*(b*c-a*d), 2*(b*d+a*c)],\n [2*(b*c+a*d), a*a+c*c-b*b-d*d, 2*(c*d-a*b)],\n [2*(b*d-a*c), 2*(c*d+a*b), a*a+d*d-b*b-c*c]])\n\nxx = 5\nR = 5*np.sqrt(2)\nncp = 10 # number of 'new' CP, not including origin\nonetheta = 30 # the angle of triangles which approximate a circle\nangles = range(0,360+onetheta,onetheta) #[0,2,...,360]\ntheta = np.array(angles) * np.pi / 180 #in radians\nC = np.zeros((ncp+1,3,3))\n\n# Set the orientation of z w.r.t lab_z\nleananl=np.pi/5\nC[0,:,:] = np.dot(rotation_matrix(np.array([1,0,0]),leananl),np.eye(3))\nCprime = np.zeros((ncp+1,3,3))\nCM = np.zeros((ncp+1,3)) #CM position vector array\nCM[0,:]= R*C[0,:,1] #CM(t0)\nCMprime = np.zeros((ncp+1,3))\nz = np.array([0,0,1])\ncirCP = np.zeros((len(angles),3,ncp)) #circle of the coin\nrotheta = onetheta*np.pi/180 # theta\nCP = np.zeros((ncp+1,3))\nCPprime = np.zeros((ncp+1,3))\nlowerangle = -np.radians(np.linspace(0,ncp,ncp)/ncp)\nomega_z = np.zeros(ncp+1)\nw = np.zeros((ncp+1,3))\nw[:,2]=w[:,2]+0.0005\nw[:,1]=w[:,1]+0.001\nw[:,0]=w[:,0]-0.0005\n\nfor j in range(ncp):\n betaj=np.pi/2 - np.arccos(np.dot(C[j,:,1],z))\n alphaangl = np.arcsin(np.sin(rotheta/2)/np.cos(betaj))\n kappaj = 2*alphaangl\n phi = np.arccos(np.cos(alphaangl)/np.cos(np.radians(onetheta/2)))\n twodt=2*phi/w[j+1,1] #phi/wy\n Avecinspace = np.dot(rotation_matrix(z,kappaj/2),\n C[j,:,0]*R*np.sin(rotheta/2)*2)\n Cprime[j,:,:] = np.dot(rotation_matrix(z,kappaj),C[j,:,:])\n C[j+1,:,:] = np.dot(rotation_matrix(Cprime[j,:,0],w[j+1,0]*twodt),Cprime[j,:,:])\n CPprime[j,:] = CP[j,:] +Avecinspace\n CP[j+1,:] = CPprime[j,:] + Cprime[j,:,0]*w[j+1,2]*twodt*R\n CMprime[j,:]=CM[j,:] + Cprime[j,:,0]*w[j+1,2]*twodt*R\n CM[j+1,:] = CP[j+1,:] + C[j+1,:,1]*R\n for i in range(len(angles)):\n cirCP[i,:,j] = np.dot(rotation_matrix(C[j,:,2],theta[i]),CP[j,:]-CM[j,:]) + CM[j,:]\n omega_z[j+1] = omega_z[j] + w[j+1,2]*twodt\n\n### plot figure\nfig1 = pyplot.figure(1)\nax = p3.Axes3D(fig1)\nax.view_init(elev=35, azim=-45)\n\ndef update_line(x, line, cirCP, CP):\n for indl, linein in enumerate(line):\n for li, angx1 in zip(linein,range(len(angles))):\n li.set_data(cirCP[0:2+indl,0,x],cirCP[0:2+indl,1,x])\n li.set_3d_properties(cirCP[0:2+indl,2,x])\n return line\n\nline = [ax.plot(*[cirCP[j:j+2,i,0] for i in range(3)]) for j in range(len(angles))]\n\nax.set_xbound(-10,10)\nax.set_ybound(0,20)\nax.set_zbound(0,10)\n\nline_ani = animation.FuncAnimation(fig1, update_line, ncp, fargs=(line,cirCP,CP),\n interval=500, blit=False,repeat=True)\n\npyplot.show()\n```\n","author":{"url":"https://github.com/whymranderson","@type":"Person","name":"whymranderson"},"datePublished":"2014-08-12T04:51:21.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":13},"url":"https://github.com/3362/matplotlib/issues/3362"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:905263da-413c-545b-08d2-b7cc83a0ccaa |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | A6E4:2FC742:205194E:2B6FC8C:6A53803E |
| html-safe-nonce | 16c7d9fdb86b9c674b6814e3fb9f6f71010cad8336ba2d951399cc0fb74d3d13 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBNkU0OjJGQzc0MjoyMDUxOTRFOjJCNkZDOEM6NkE1MzgwM0UiLCJ2aXNpdG9yX2lkIjoiNDc3Mzg5MTE2Mzg2MTI1NDIwNiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | ab71a70e7cca63dd68981ad5ff852a1f48c8033dc71148f9ee45a6a6306bb729 |
| hovercard-subject-tag | issue:40024424 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/matplotlib/matplotlib/3362/issue_layout |
| twitter:image | https://opengraph.githubassets.com/b3ca3b79d168229817c64cc1ac9cc4e91affddbf888e114dfdf939f8927a1a36/matplotlib/matplotlib/issues/3362 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/b3ca3b79d168229817c64cc1ac9cc4e91affddbf888e114dfdf939f8927a1a36/matplotlib/matplotlib/issues/3362 |
| og:image:alt | Python 2.7.5, NumPy 1.7.1, SciPy 0.13.0, Matplotlib 1.3.1 This is a script to simulate the rolling of a coin( a circle) on a surface without slipping in 3 dimensions. I tried to paste on a shorter ... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | whymranderson |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/matplotlib/matplotlib git https://github.com/matplotlib/matplotlib.git |
| octolytics-dimension-user_id | 215947 |
| octolytics-dimension-user_login | matplotlib |
| octolytics-dimension-repository_id | 1385122 |
| octolytics-dimension-repository_nwo | matplotlib/matplotlib |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1385122 |
| octolytics-dimension-repository_network_root_nwo | matplotlib/matplotlib |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 07a982c1d40157c619b364352b704c3ce66bb332 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width