Search
 
SCRIPT & CODE EXAMPLE
 

JAVASCRIPT

java script or js circle collision

if (distance < circle1.radius + circle2.radius) {
    // Collision detected!
}
Comment

circle collision javascript

/*
  You should call the function resolveCollsion, when a collision between two
  circles is detected.
*/

function rotate(velocity, angle) {
    const rotatedVelocities = {
        x: velocity.x * Math.cos(angle) - velocity.y * Math.sin(angle),
        y: velocity.x * Math.sin(angle) + velocity.y * Math.cos(angle)
    }

    return rotatedVelocities;
}

function resolveCollision(particle, otherParticle) {
  	/*
    	the particles passed as parameters should be objects with
       	x and y position,
        a velocity object with x and y values,
        a mass value
        as attributes
        example of a class:
        
        function Circle() {
    		this.x = x;
    		this.y = y;
    		this.velocity = {
            	x: 5,
                y: 5
            };
    		this.mass = 2;

		}
    */
    const xVelocityDiff = particle.velocity.x - otherParticle.velocity.x;
    const yVelocityDiff = particle.velocity.y - otherParticle.velocity.y;

    const xDist = otherParticle.x - particle.x;
    const yDist = otherParticle.y - particle.y;

    if (xVelocityDiff * xDist + yVelocityDiff * yDist >= 0) {
        const angle = -Math.atan2(otherParticle.y - particle.y, otherParticle.x - particle.x);

        const m1 = particle.mass;
        const m2 = otherParticle.mass;

        const u1 = rotate(particle.velocity, angle);
        const u2 = rotate(otherParticle.velocity, angle);

        const v1 = { x: u1.x * (m1 - m2) / (m1 + m2) + u2.x * 2 * m2 / (m1 + m2), y: u1.y };
        const v2 = { x: u2.x * (m1 - m2) / (m1 + m2) + u1.x * 2 * m2 / (m1 + m2), y: u2.y };

        const vFinal1 = rotate(v1, -angle);
        const vFinal2 = rotate(v2, -angle);

        particle.velocity.x = vFinal1.x;
        particle.velocity.y = vFinal1.y;

        otherParticle.velocity.x = vFinal2.x;
        otherParticle.velocity.y = vFinal2.y;
    }
}

/*
	source:
    https://youtu.be/789weryntzM
*/
Comment

PREVIOUS NEXT
Code Example
Javascript :: how to update mongodb collection with a new field 
Javascript :: delete method 
Javascript :: load js 
Javascript :: trim text 
Javascript :: visual studio node.js mac 
Javascript :: variables dinamicas javascript 
Javascript :: what is the slice method in javascript 
Javascript :: Enqueuing JavaScript in WordPress 
Javascript :: jquery class 
Javascript :: pass props in react 
Javascript :: Discord.client on 
Javascript :: speech to text in js 
Javascript :: get all database react native 
Javascript :: multiple replace 
Javascript :: jquery.slim.min.js 
Javascript :: merge binary tree 
Javascript :: react form validation 
Javascript :: password generator 
Javascript :: react-native-apple-authentication 
Javascript :: react router params and render 
Javascript :: nan in js 
Javascript :: the filter array 
Javascript :: rails json schema validation 
Javascript :: if condition javascript 
Javascript :: call local function javascript 
Javascript :: javascript strings are immutable 
Javascript :: what does connect do in redux 
Javascript :: js console log 
Javascript :: scirpt tag react 
Javascript :: add webpack to react project 
ADD CONTENT
Topic
Content
Source link
Name
9+2 =