HTML5 canvas random directions Using HTML5 canvas where would be the best place to start to move my 3 balls in random trajectories (along a smooth line, no jumping) and when they hit each other bounce away and then go on another path, until again they hit each other and again bounce away.  So far I have set up a simple example on   where each ball follows its own path (though they do disappear off the screen).  At the moment the trajectory is as simple as   function animate(){    // Yellow Circle   circles[0].x+=1;   circles[0].y+=-1.5;    // Blue Cirlce   circles[1].x+=-1;   circles[1].y+=-1.5;    // Red Circle   circles[2].x+=1;   circles[2].y+=-1;   draw();   }   I would love to see an example, but also to know what methods and calculations I should be looking at.
Ball to Ball Collision - Detection and Handling With the help of the Stack Overflow community I've written a pretty basic-but fun physics simulator.    You click and drag the mouse to launch a ball.  It will bounce around and eventually stop on the "floor".  My next big feature I want to add in is ball to ball collision.  The ball's movement is broken up into a x and y speed vector.  I have gravity (small reduction of the y vector each step), I have friction (small reduction of both vectors each collision with a wall). The balls honestly move around in a surprisingly realistic way.  I guess my question has two parts:   What is the best method to detect ball to ball collision? Do I just have an O(n^2) loop that iterates over each ball and checks every other ball to see if it's radius overlaps? What equations do I use to handle the ball to ball collisions? Physics 101 How does it effect the two balls speed x/y vectors?  What is the resulting direction the two balls head off in?  How do I apply this to each ball?     Handling the collision detection of the "walls" and the resulting vector changes were easy but I see more complications with ball-ball collisions.  With walls I simply had to take the negative of the appropriate x or y vector and off it would go in the correct direction.  With balls I don't think it is that way.  Some quick clarifications: for simplicity I'm ok with a perfectly elastic collision for now, also all my balls have the same mass right now, but I might change that in the future.    Edit: Resources I have found useful  2d Ball physics with vectors:  2d Ball collision detection example:     Success!  I have the ball collision detection and response working great!  Relevant code:  Collision Detection:  for (int i = 0; i &lt; ballCount; i++)   {       for (int j = i + 1; j &lt; ballCount; j++)       {           if (balls[i].colliding(balls[j]))           {             balls[i].resolveCollision(balls[j]);         }     } }   This will check for collisions between every ball but skip redundant checks (if you have to check if ball 1 collides with ball 2 then you don't need to check if ball 2 collides with ball 1.  Also, it skips checking for collisions with itself).  Then, in my ball class I have my colliding() and resolveCollision() methods:  public boolean colliding(Ball ball) {     float xd = position.getX() - ball.position.getX();     float yd = position.getY() - ball.position.getY();      float sumRadius = getRadius() + ball.getRadius();     float sqrRadius = sumRadius * sumRadius;      float distSqr = (xd * xd) + (yd * yd);      if (distSqr &lt;= sqrRadius)     {         return true;     }      return false; }  public void resolveCollision(Ball ball) {     // get the mtd     Vector2d delta = (position.subtract(ball.position));     float d = delta.getLength();     // minimum translation distance to push balls apart after intersecting     Vector2d mtd = delta.multiply(((getRadius() + ball.getRadius())-d)/d);        // resolve intersection --     // inverse mass quantities     float im1 = 1 / getMass();      float im2 = 1 / ball.getMass();      // push-pull them apart based off their mass     position = position.add(mtd.multiply(im1 / (im1 + im2)));     ball.position = ball.position.subtract(mtd.multiply(im2 / (im1 + im2)));      // impact speed     Vector2d v = (this.velocity.subtract(ball.velocity));     float vn = v.dot(mtd.normalize());      // sphere intersecting but moving away from each other already     if (vn &gt; 0.0f) return;      // collision impulse     float i = (-(1.0f + Constants.restitution) * vn) / (im1 + im2);     Vector2d impulse = mtd.normalize().multiply(i);      // change in momentum     this.velocity = this.velocity.add(impulse.multiply(im1));     ball.velocity = ball.velocity.subtract(impulse.multiply(im2));  }   Source Code:     If anyone has some suggestions for how to improve this basic physics simulator let me know!  One thing I have yet to add is angular momentum so the balls will roll more realistically.  Any other suggestions?  Leave a comment!
$-1$ is a quadratic residue modulo $p$ if and only if $p\equiv 1\pmod{4}$ I came across this problem and I believe Lagrange's theorem is the key to its solution.  The question is:     Let $p$ be an odd prime. Prove that there is some integer $x$ such that $x^2 \equiv −1 \pmod p$ if and only if $p \equiv 1 \pmod 4$.   I appreciate any help.  Thanks. At the onset of my live usage in Ubuntu Gnome 15.10, use a bash script to set the colour of my gnome-terminal. The code used is link=/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9 dconf write $link/background-transparency-percent '10' dconf write $link/scrollback-unlimited true dconf write $link/use-theme-colors false dconf write $link/use-theme-transparency false dconf write $link/use-transparent-background true dconf write $link/foreground-color 'rgb(0,43,54)' dconf write $link/background-color 'rgb(131,148,150)'  The last 2 lines of the code give a key-value error. When I look at the dconf-editor org&gt;gnome&gt;terminal&gt;legacy&gt;profiles:&gt;{Default profile} the attributes  foreground-color background-color  are unavailable. How do I get rid of the error? Note: When done manually via gnome-ternimal&gt;Edit&gt;Profile Preferences&gt;Colours&gt;Built-in schemes the above attributes appear in the same location in dconf-editor. When is it correct to use "yourself" and "myself" (versus "you" and "me")? When using sudo powers and calling gedit the top level menu with File Edit View Search Tools Documents Help is missing.  If I create user ID root and sign in once and call gedit will it create the necessary user configuration files that might fix this?  Will this also make the annoying error messages go away whenever I use sudo, gksu or pkexec as a regular user with elevated privileges togedit ?  Will there be other benefits with Nautilus and other Gnome derivative Ubuntu applications?  NOTE: by sudo powers you can google pkexec gedit 3.5k hits, gksu gedit 40k hits or sudo gedit 500k hits. I'm in the minority using the first method but I believe it will become the standard in Ubuntu 17.04.    June 12, 2017 Update Here are a list of errors you get when using pkexec gedit:  (gedit:13003): Gtk-WARNING **: Calling Inhibit failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files  ** (gedit:13003): WARNING **: Set document metadata failed: Setting attribute metadata::gedit-spell-enabled not supported  ** (gedit:13003): WARNING **: Set document metadata failed: Setting attribute metadata::gedit-encoding not supported  ** (gedit:13003): WARNING **: Set document metadata failed: Setting attribute metadata::gedit-position not supported   On this  there is a commitment to fix these distracting messages as of June 5, 2017. No indication is given for when the fix will be upstream nor if the functionality will be implemented or the error messages will simply disappear.  Note the bug report was filed over a year ago and over that time it only effects 18 people. $ df -kh Filesystem      Size  Used Avail Use% Mounted on udev            7,8G     0  7,8G   0% /dev tmpfs           1,6G   19M  1,6G   2% /run /dev/sda2       622G  227G  364G  39% / tmpfs           7,8G  1,1G  6,7G  14% /dev/shm tmpfs           5,0M  4,0K  5,0M   1% /run/lock tmpfs           7,8G     0  7,8G   0% /sys/fs/cgroup /dev/loop1      143M  143M     0 100% /snap/inkscape/2527 /dev/loop3       79M   79M     0 100% /snap/core/1441 /dev/loop0       79M   79M     0 100% /snap/core/1577 /dev/loop4       79M   79M     0 100% /snap/core/1512 /dev/loop2       62M   62M     0 100% /snap/pencilsheep/5 tmpfs           1,6G   92K  1,6G   1% /run/user/1000   What are these /dev/loop device files? My RAM is always full. Is this related? Is there an international taxonomy of academic titles/ranks? Looking at the  on Wikipedia shows that the same academic rank/title can mean quite different things in different countries. For instant, a "research assistant" in the US can stand for an undergrad student doing an internship, while in the UK it can stand for a postdoc. Similarly, the term "lecturer" might stand for a permanent position (e.g. in the UK) or for a teaching assistant position, open to graduate students.   However, when thinking about it, there are not so many kind of possible positions (permanent or not, with teaching or not, with research or not, with PhD supervision or not, with team responsibility or not, etc), and having a clear title could help a lot (for instance, in my case, I've been working in four different countries, with a different job title each time!).    Is there some kind of official taxonomy that one could refer to?  If not, who could be in charge to create it? (the EU, if only for intra-Europe mobility?) How to tell if a set of vectors spans a space? I want to know if the set $\{(1, 1, 1), (3, 2, 1), (1, 1, 0), (1, 0, 0)\}$ spans $\mathbb{R}^3$. I know that if it spans $\mathbb{R}^3$, then for any $x, y, z, \in \mathbb{R}$, there exist $c_1, c_2, c_3, c_4$ such that $(x, y, z) = c_1(1, 1, 1) + c_2(3, 2, 1) + c_3(1, 1, 0) + c_4(1, 0, 0)$.  I've looked around the internet, but all the answers I found involve setting up a matrix and finding the determinant, and I can't do that here because my matrix isn't square. What am I missing here? I would like to ask if MS Access database supports working in networks &amp; multi-user access? I want to do a search on StackOverflow for a few terms, but also by user, since I know which user referenced the item I'm looking for. I'm currently trying to extract textures from a binary file, and ideally I'd like to save each texture to a file or embed in the .blend file. However, before saving an image, I need to be able to create an image in memory from an array of pixel data.  The PIL library contains the kinds of functions I need to use, but it is not included with Blender. Is there anything similar to PIL in Blender? bpy.ops.image seems to be close to what I need, but lacks necessary pixel set/manipulation functions. Does Mathematica have a "MATLAB Builder" equivalent? How do I make an HTML text box show a hint when empty? How to resolve the C:\fakepath? Let $f(n) = \sum_{(k,n)=1} e^\frac{2\pi ik}{n}$. Show that $f(n) = \sum_{k=1}^{n}\left(\sum_{d\mid (k,n)} \mu(d)e^{\frac{2\pi ik}{n}} \right) $ How do I remove/delete a folder that is not empty? I am getting an 'access is denied' error when I attempt to delete a folder that is not empty. I used the following command in my attempt: os.remove("/folder_name").   What is the most effective way of removing/deleting a folder/directory that is not empty? Why is it so difficult to find the twitter account for a Stack Exchange site? I am not able to find a link to the twitter account of Academia SE (), for example, in the Academia SE main webpage.   Why are twitter links not included on the main site page of each Q&amp;A site in SE? Movie Clip On Plane In blender cycles render engine, how do I put a movie clip on a plane so it displays the video? I want the video to be on the plane if there is a way. For some reasons, homomorphism is a very hard area for me to make improvements. I've been hitting the brick wall for almost 2 hours.   Prove that no homomorphism exists from $Z_{16}\oplus Z_2$ onto $Z_4\oplus Z_4$.  Assume a homomorphism $\phi$ exists from $Z_{16}\oplus Z_2$ onto $Z_4\oplus Z_4$. Then $\phi$ is an isomorphism.  Note that the $\left | \ker \phi \right |=2$ The $\ker \phi$ is also a normal subgroup for $Z_{16}\oplus Z_{2}$. We want possible normal subgroup of order 2. I.e., 2 elements in each normal subgroups.  By Lagrange's theorem, the order of each element in a group divides the order of a group so the possible order of the elements are 1 or 2. If the elements has order 1, then the Ker \phi cannot have 2 elements.  Hence, $\ker\phi$ = $\left \{ (0,0),(8,0) \right \}$ ,$\left \{ (0,0),(0,8) \right \}$,$\left \{ (0,0),(8,1) \right \}$, possibly.  By the First isomorphism theorem:  $\phi: Z_{16}\oplus Z_2 \rightarrow Z_2\oplus Z_2$  $\Psi: G/\ker \phi \rightarrow \phi\left ( Z_16\oplus Z_2 \right )=Z_2\oplus Z_2$  $g\ker \phi  \mapsto \phi(g)=\Psi(g\ker \phi)$  Any help is appreciated.  Edit: I know that $(2,0)$ has order $8$ in $Z_{16}\oplus Z_{2}$ but any elements in $Z_{4}\oplus Z_{4}$ does not have order $8$ which would have solved the question at the outset. But I would like a different route. Using competitors domain with different ending to boost traffic How did Sauron remain in control of the Nazgûl?