My Scripting Portfolio

Particle Simulation Tool:


-- Define initial particle properties
local particle1 = {
	mass = 1.007276, -- in atomic mass units (amu)
	charge = 1, -- in elementary charge units (e)
	position = { x = 0, y = 0, z = 0 }, -- in meters (m)
	velocity = { x = 0, y = 0, z = 0 } -- in meters per second (m/s)
}

local particle2 = {
	mass = 0.00054858, -- in atomic mass units (amu)
	charge = -1, -- in elementary charge units (e)
	position = { x = 1, y = 0, z = 0 }, -- in meters (m)
	velocity = { x = 1000, y = 0, z = 0 } -- in meters per second (m/s)
}


-- Define simulation parameters
local time_step = 0.00001 -- in seconds (s)
local simulation_time = 0.0001 -- in seconds (s)

-- Define physical constants
local c = 299792458 -- speed of light in meters per second (m/s)
local e = 1.602176634e-19 -- elementary charge in coulombs (C)
local amu = 1.66053906660e-27 -- atomic mass unit in kilograms (kg)
local proton_mass = 1.00727647 * amu -- mass of a proton in kilograms (kg)

-- Define function to calculate Lorentz force
local function lorentz_force(particle, electric_field, magnetic_field)
	local force = { x = 0, y = 0, z = 0 }
	force.x = particle.charge * (electric_field.x + particle.velocity.y * magnetic_field.z - particle.velocity.z * magnetic_field.y)
	force.y = particle.charge * (electric_field.y + particle.velocity.z * magnetic_field.x - particle.velocity.x * magnetic_field.z)
	force.z = particle.charge * (electric_field.z + particle.velocity.x * magnetic_field.y - particle.velocity.y * magnetic_field.x)
	return force
end

-- Define function to simulate particle motion
local particles = {particle1, particle2}
function simulate_collision(particle1, particle2, time_step)
	local epsilon_0 = 8.854e-12
	local r = {
		x = particle2.position.x - particle1.position.x,
		y = particle2.position.y - particle1.position.y,
		z = particle2.position.z - particle1.position.z
	}
	local distance = math.sqrt(r.x^2 + r.y^2 + r.z^2)
	local force_magnitude = particle1.charge * particle2.charge / (4 * math.pi * epsilon_0 * distance^2)
	local force = {
		x = force_magnitude * r.x / distance,
		y = force_magnitude * r.y / distance,
		z = force_magnitude * r.z / distance
	}
	local acceleration1 = {
		x = force.x / particle1.mass,
		y = force.y / particle1.mass,
		z = force.z / particle1.mass
	}
	local acceleration2 = {
		x = -force.x / particle2.mass,
		y = -force.y / particle2.mass,
		z = -force.z / particle2.mass
	}
	particle1.acceleration = acceleration1
	particle2.acceleration = acceleration2

	local collision_info = {
		new_particles = nil,
		stuck = false
	}

	-- Check if particles collide
	if distance < (1.2 * (particle1.mass^(1/3) + particle2.mass^(1/3))) then
		print("Particles collided.")
		local total_mass = particle1.mass + particle2.mass
		local momentum1 = {
			x = particle1.mass * particle1.velocity.x,
			y = particle1.mass * particle1.velocity.y,
			z = particle1.mass * particle1.velocity.z
		}
		local momentum2 = {
			x = particle2.mass * particle2.velocity.x,
			y = particle2.mass * particle2.velocity.y,
			z = particle2.mass * particle2.velocity.z
		}
		local total_momentum = {
			x = momentum1.x + momentum2.x,
			y = momentum1.y + momentum2.y,
			z = momentum1.z + momentum2.z
		}
		local velocity = {
			x = total_momentum.x / total_mass,
			y = total_momentum.y / total_mass,
			z = total_momentum.z / total_mass
		}
		local new_particle = {
			mass = total_mass,
			charge = particle1.charge + particle2.charge,
			position = {
				x = particle1.position.x,
				y = particle1.position.y,
				z = particle1.position.z
			},
			velocity = velocity,
			acceleration = {
				x = 0,
				y = 0,
				z = 0
			}
		}
		print("New particle created with mass " .. new_particle.mass ..
			", charge " .. new_particle.charge ..
			", velocity (" .. new_particle.velocity.x .. ", " ..
			new_particle.velocity.y .. ", " .. new_particle.velocity.z ..
			"), and position (" .. new_particle.position.x .. ", " ..
			new_particle.position.y .. ", " .. new_particle.position.z .. ").")
		collision_info.new_particles = { new_particle }
		collision_info.stuck = true
	end

	return particles, collision_info
end

-- Start simulation
for i = 1, simulation_time / time_step do
	local epsilon_0 = 8.854e-12
	local electric_field = {
		x = 0,
		y = 0,
		z = 0
	}
	local magnetic_field = {
		x = 0,
		y = 0,
		z = 0
	}
	-- Simulate collision between the two particles
	local particles, collision_info = simulate_collision(particles[1], particles[2], time_step)

	-- Check if the particles stuck together after the collision
	if collision_info.stuck then
		print("Particles stuck together.")
		break
	end

	-- Check if new particles were created after the collision
	if collision_info.new_particles then
		print("New particles created: " .. tostring(#collision_info.new_particles))
		for _, new_particle in ipairs(collision_info.new_particles) do
			table.insert(particles, new_particle)
		end
	end

	-- Update the velocity and position of each particle
	for _, particle in ipairs(particles) do
		particle.velocity.x = particle.velocity.x + particle.acceleration.x * time_step
		particle.velocity.y = particle.velocity.y + particle.acceleration.y * time_step
		particle.velocity.z = particle.velocity.z + particle.acceleration.z * time_step

		particle.position.x = particle.position.x + particle.velocity.x * time_step
		particle.position.y = particle.position.y + particle.velocity.y * time_step
		particle.position.z = particle.position.z + particle.velocity.z * time_step
	end

	-- Update the electric and magnetic fields
	local observation_point = {
		x = 0,
		y = 0,
		z = 0
	}
	local observation_velocity = {
		x = 0,
		y = 0,
		z = 0
	}
	for _, particle in ipairs(particles) do
		local r = {
			x = particle.position.x - observation_point.x,
			y = particle.position.y - observation_point.y,
			z = particle.position.z - observation_point.z
		}
		local distance = math.sqrt(r.x^2 + r.y^2 + r.z^2)
		local force_magnitude = particle.charge / (4 * math.pi * epsilon_0 * distance^2)
		local force = {
			x = force_magnitude * r.x / distance,
			y = force_magnitude * r.y / distance,
			z = force_magnitude * r.z / distance
		}
		local velocity = {
			x = particle.velocity.x - observation_velocity.x,
			y = particle.velocity.y - observation_velocity.y,
			z = particle.velocity.z - observation_velocity.z
		}
		local magnetic_force = {
			x = particle.charge * (velocity.y * force.z - velocity.z * force.y),
			y = particle.charge * (velocity.z * force.x - velocity.x * force.z),
			z = particle.charge * (velocity.x * force.y - velocity.y * force.x)
		}
		electric_field.x = electric_field.x + force.x
		electric_field.y = electric_field.y + force.y
		electric_field.z = electric_field.z + force.z
		magnetic_field.x = magnetic_field.x + magnetic_force.x
		magnetic_field.y = magnetic_field.y + magnetic_force.y
		magnetic_field.z = magnetic_field.z + magnetic_force.z
	end

	return electric_field, magnetic_field
end

Particle Collisions Output - Dedication Example


-- Define the properties of each particle type
local particles = {
	{name = "Electron", type = "fermion", charge = -1},
	{name = "Positron", type = "fermion", charge = 1},
	{name = "Proton", type = "fermion", charge = 1},
	{name = "Neutron", type = "fermion", charge = 0},
	{name = "Photon", type = "boson", charge = 0},
	{name = "W Boson", type = "boson", charge = 1},
	{name = "Z Boson", type = "boson", charge = 0},
	{name = "Gluon", type = "boson", charge = 0},
	{name = "Graviton", type = "boson", charge = 0},
	{name = "Higgs Boson", type = "boson", charge = 0},
	{name = "Muon", type = "fermion", charge = -1},
	{name = "Anti-muon", type = "fermion", charge = 1},
	{name = "Tau", type = "fermion", charge = -1},
	{name = "Anti-tau", type = "fermion", charge = 1},
	{name = "Neutrino", type = "fermion", charge = 0},
	{name = "Anti-neutrino", type = "fermion", charge = 0},
	{name = "Charm Quark", type = "fermion", charge = 2/3},
	{name = "Anti-charm Quark", type = "fermion", charge = -2/3},
	{name = "Bottom Quark", type = "fermion", charge = -1/3},
	{name = "Anti-bottom Quark", type = "fermion", charge = 1/3},
	{name = "Top Quark", type = "fermion", charge = 2/3},
	{name = "Anti-top Quark", type = "fermion", charge = -2/3},
	{name = "Kaon", type = "meson", charge = 1},
	{name = "Anti-kaon", type = "meson", charge = -1},
	{name = "Pion", type = "meson", charge = 1},
	{name = "Anti-pion", type = "meson", charge = -1},
	{name = "Eta Meson", type = "meson", charge = 0},
	{name = "Rho Meson", type = "meson", charge = 1},
	{name = "Omega Meson", type = "meson", charge = 0},
	{name = "Phi Meson", type = "meson", charge = 0},
	{name = "Delta Baryon", type = "baryon", charge = 1},
	{name = "Lambda Baryon", type = "baryon", charge = 0},
	{name = "Sigma Baryon", type = "baryon", charge = 1},
	{name = "Xi Baryon", type = "baryon", charge = -1},
	{name = "Omega Baryon", type = "baryon", charge = 0}
}

-- Define a function to check what happens when two particles collide
function particleCollision(particle1, particle2)
	if particle1.type == "fermion" and particle2.type == "fermion" then
		return "The two fermions bounce off each other."
	elseif particle1.type == "boson" and particle2.type == "boson" then
		return "The two bosons pass through each other."
	elseif particle1.type == "fermion" and particle2.type == "boson" then
		return "The boson is absorbed by the fermion, changing its properties."
	elseif particle1.type == "boson" and particle2.type == "fermion" then
		return "The boson is absorbed by the fermion, changing its properties."
	elseif particle1.name == "Proton" and particle2.name == "Antiproton" or particle1.name == "Antiproton" and particle2.name == "Proton" then
		return "The proton and antiproton annihilate each other, producing a burst of energy."
	elseif particle1.name == "Electron" and particle2.name == "Positron" or particle1.name == "Positron" and particle2.name == "Electron" then
		return "The electron and positron annihilate each other, producing two photons."
	elseif particle1.name == "Muon" and particle2.name == "Anti-muon" or particle1.name == "Anti-muon" and particle2.name == "Muon" then
		return "The muon and anti-muon annihilate each other, producing a burst of energy."
	elseif particle1.name == "Tau" and particle2.name == "Anti-tau" or particle1.name == "Anti-tau" and particle2.name == "Tau" then
		return "The tau and anti-tau annihilate each other, producing a burst of energy."
	elseif particle1.name == "W Boson" and particle2.name == "W Boson" then
		return "The two W bosons merge to form a Z boson."
	elseif particle1.name == "Z Boson" and particle2.name == "Z Boson" then
		return "The two Z bosons merge to form a Higgs boson."
	elseif particle1.name == "Photon" and particle2.name == "Photon" then
		return "The two photons pass through each other."
	elseif particle1.name == "Neutrino" and particle2.name == "Neutrino" or particle1.name == "Anti-neutrino" and particle2.name == "Anti-neutrino" then
		return "The two neutrinos pass through each other."
	elseif particle1.name == "Neutrino" and particle2.name == "Anti-neutrino" or particle1.name == "Anti-neutrino" and particle2.name == "Neutrino" then
		return "The neutrino and anti-neutrino annihilate each other, producing a burst of energy."
	elseif particle1.name == "Charm Quark" and particle2.name == "Anti-charm Quark" or particle1.name == "Anti-charm Quark" and particle2.name == "Charm Quark" then
		return "The charm quark and anti-charm quark annihilate each other, producing a burst of energy."
	elseif particle1.name == "Bottom Quark" and particle2.name == "Anti-bottom Quark" or particle1.name == "Anti-bottom Quark" and particle2.name == "Bottom Quark" then
		return "The bottom quark and anti-bottom quark annihilate each other, producing a burst of energy."
	elseif particle1.name == "Up Quark" and particle2.name == "Anti-up Quark" or particle1.name == "Anti-up Quark" and particle2.name == "Up Quark" then
		return "The up quark and anti-up quark annihilate each other, producing a burst of energy."
	elseif particle1.name == "Down Quark" and particle2.name == "Anti-down Quark" or particle1.name == "Anti-down Quark" and particle2.name == "Down Quark" then
		return "The down quark and anti-down quark annihilate each other, producing a burst of energy."
	elseif particle1.name == "Strange Quark" and particle2.name == "Anti-strange Quark" or particle1.name == "Anti-strange Quark" and particle2.name == "Strange Quark" then
		return "The strange quark and anti-strange quark annihilate each other, producing a burst of energy."
	elseif particle1.name == "Gluon" and particle2.name == "Gluon" then
		return "The two gluons merge to form a Higgs boson."
	elseif particle1.name == "Higgs Boson" and particle2.name == "Higgs Boson" then
		return "The two Higgs bosons merge to form a graviton."
	elseif particle1.name == "Graviton" and particle2.name == "Graviton" then
		return "The two gravitons pass through each other."
	elseif particle1.name == "W+ Boson" and particle2.name == "W- Boson" or particle1.name == "W- Boson" and particle2.name == "W+ Boson" then
		return "The W+ and W- bosons annihilate each other, producing a burst of energy."
	elseif particle1.name == "Kaon" and particle2.name == "Anti-kaon" or particle1.name == "Anti-kaon" and particle2.name == "Kaon" then
		return "The kaon and anti-kaon annihilate each other, producing a burst of energy."
	elseif particle1.name == "Pion" and particle2.name == "Anti-pion" or particle1.name == "Anti-pion" and particle2.name == "Pion" then
		return "The pion and anti-pion annihilate each other, producing a burst of energy."
	elseif particle1.name == "Lambda Baryon" and particle2.name == "Anti-lambda Baryon" or particle1.name == "Anti-lambda Baryon" and particle2.name == "Lambda Baryon" then
		return "The lambda baryon and anti-lambda baryon annihilate each other, producing a burst of energy."
	elseif particle1.name == "Xi Baryon" and particle2.name == "Anti-xi Baryon" or particle1.name == "Anti-xi Baryon" and particle2.name == "Xi Baryon" then
		return "The xi baryon and anti-xi baryon annihilate each other, producing a burst of energy."
	elseif particle1.name == "Omega Baryon" and particle2.name == "Anti-omega Baryon" or particle1.name == "Anti-omega Baryon" and particle2.name == "Omega Baryon" then
		return "The omega baryon and anti-omega baryon annihilate each other, producing a burst of energy"
	elseif particle1.name == "Neutralino" and particle2.name == "Neutralino" then
		return "The two neutralinos collide and annihilate each other, producing a burst of energy and a pair of photons."
	elseif particle1.name == "Chargino" and particle2.name == "Chargino" then
		return "The two charginos collide and annihilate each other, producing a burst of energy and a pair of photons."
	elseif particle1.name == "Gravitino" and particle2.name == "Gravitino" then
		return "The two gravitinos pass through each other."
	elseif particle1.name == "Axino" and particle2.name == "Axino" then
		return "The two axinos pass through each other."
	elseif particle1.name == "Axion" and particle2.name == "Axion" then
		return "The two axions pass through each other."
	elseif particle1.name == "Neutral Higgs Boson" and particle2.name == "Neutral Higgs Boson" then
		return "The two neutral Higgs bosons merge to form a graviton."
	elseif particle1.name == "Charged Higgs Boson" and particle2.name == "Charged Higgs Boson" then
		return "The two charged Higgs bosons merge to form a graviton."
	elseif particle1.name == "Inflaton" and particle2.name == "Inflaton" then
		return "The two inflatons merge and create a universe."
	elseif particle1.name == "Photon" and particle2.name == "Photon" then
		return "The two photons pass through each other."
	elseif particle1.name == "Z Boson" and particle2.name == "Z Boson" then
		return "The two Z bosons merge to form a Higgs boson."
	elseif particle1.name == "W Boson" and particle2.name == "W Boson" then
		return "The two W bosons merge to form a Higgs boson."
	elseif particle1.name == "Leptoquark" and particle2.name == "Anti-leptoquark" or particle1.name == "Anti-leptoquark" and particle2.name == "Leptoquark" then
		return "The leptoquark and anti-leptoquark annihilate each other, producing a burst of energy."
	elseif particle1.name == "WIMP" and particle2.name == "WIMP" then
		return "The two WIMPs collide and annihilate each other, producing a burst of energy and a pair of photons."
	elseif particle1.name == "Z' Boson" and particle2.name == "Z' Boson" then
		return "The two Z' bosons merge to form a Higgs boson."
	elseif particle1.name == "Gravitational Wave" and particle2.name == "Gravitational Wave" then
		return "The two gravitational waves pass through each other."
	elseif particle1.name == "Neutrino" and particle2.name == "Neutrino" then
		return "The two neutrinos pass through each other."
	elseif particle1.name == "Dark Matter" and particle2.name == "Dark Matter" then
		return "The two dark matter particles pass through each other."
	elseif particle1.name == "Axion-Like Particle" and particle2.name == "Axion-Like Particle" then
		return "The two axion-like particles pass through each other."
	elseif particle1.name == "Tachyon" and particle2.name == "Tachyon" then
		return "The two tachyons pass through each other."
	elseif particle1.name == "Axion-Like Particle" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Axion-Like Particle" then
		return "The axion-like particle and photon exchange energy."
	elseif particle1.name == "Dark Photon" and particle2.name == "Dark Photon" then
		return "The two dark photons pass through each other."
	elseif particle1.name == "Dark Matter" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Dark Matter" then
		return "The dark matter and photon exchange energy."
	elseif particle1.name == "Neutrino" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Neutrino" then
		return "The neutrino and photon exchange energy."
	elseif particle1.name == "Z Boson" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Z Boson" then
		return "The Z boson and photon exchange energy."
	elseif particle1.name == "W Boson" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "W Boson" then
		return "The W boson and photon exchange energy."
	elseif particle1.name == "Higgs Boson" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Higgs Boson" then
		return "The Higgs boson and photon exchange energy."
	elseif particle1.name == "Graviton" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Graviton" then
		return "The graviton and photon exchange energy."
	elseif particle1.name == "Neutrino" and particle2.name == "Z Boson" or particle1.name == "Z Boson" and particle2.name == "Neutrino" then
		return "The neutrino and Z boson exchange energy."
	elseif particle1.name == "Neutrino" and particle2.name == "W Boson" or particle1.name == "W Boson" and particle2.name == "Neutrino" then
		return "The neutrino and W boson exchange energy."
	elseif particle1.name == "Neutrino" and particle2.name == "Higgs Boson" or particle1.name == "Higgs Boson" and particle2.name == "Neutrino" then
		return "The neutrino and Higgs boson exchange energy."
	elseif particle1.name == "Neutrino" and particle2.name == "Graviton" or particle1.name == "Graviton" and particle2.name == "Neutrino" then
		return "The neutrino and graviton exchange energy."
	elseif particle1.name == "Z Boson" and particle2.name == "Higgs Boson" or particle1.name == "Higgs Boson" and particle2.name == "Z Boson" then
		return "The Z boson and Higgs boson exchange energy."
	elseif particle1.name == "Z Boson" and particle2.name == "W Boson" or particle1.name == "W Boson" and particle2.name == "Z Boson" then
		return "The Z boson and W boson exchange energy."
	elseif particle1.name == "W Boson" and particle2.name == "Higgs Boson" or particle1.name == "Higgs Boson" and particle2.name == "W Boson" then
		return "The W boson and Higgs boson exchange energy."
	elseif particle1.name == "W Boson" and particle2.name == "Graviton" or particle1.name == "Graviton" and particle2.name == "W Boson" then
		return "The W boson and graviton exchange energy."
	elseif particle1.name == "Higgs Boson" and particle2.name == "Graviton" or particle1.name == "Graviton" and particle2.name == "Higgs Boson" then
		return "The Higgs boson and graviton exchange energy."
	elseif particle1.name == "Muon" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Muon" then
		return "The muon and photon exchange energy."
	elseif particle1.name == "Tau" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Tau" then
		return "The tau and photon exchange energy."
	elseif particle1.name == "Electron" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Electron" then
		return "The electron and photon exchange energy."
	elseif particle1.name == "Proton" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Proton" then
		return "The proton and photon exchange energy."
	elseif particle1.name == "Neutron" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Neutron" then
		return "The neutron and photon exchange energy."
	elseif particle1.name == "Electron" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Electron" then
		return "The electron and neutrino exchange energy."
	elseif particle1.name == "Proton" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Proton" then
		return "The proton and neutrino exchange energy."
	elseif particle1.name == "Neutron" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Neutron" then
		return "The neutron and neutrino exchange energy."
	elseif particle1.name == "Electron" and particle2.name == "Positron" or particle1.name == "Positron" and particle2.name == "Electron" then
		return "The electron and positron annihilate each other and produce two gamma rays."
	elseif particle1.name == "Muon" and particle2.name == "Positron" or particle1.name == "Positron" and particle2.name == "Muon" then
		return "The muon and positron annihilate each other and produce two or more gamma rays."
	elseif particle1.name == "Tau" and particle2.name == "Positron" or particle1.name == "Positron" and particle2.name == "Tau" then
		return "The tau and positron annihilate each other and produce two or more gamma rays."
	elseif particle1.name == "Proton" and particle2.name == "Antiproton" or particle1.name == "Antiproton" and particle2.name == "Proton" then
		return "The proton and antiproton annihilate each other and produce two or more gamma rays."
	elseif particle1.name == "Neutron" and particle2.name == "Antineutron" or particle1.name == "Antineutron" and particle2.name == "Neutron" then
		return "The neutron and antineutron annihilate each other and produce two or more gamma rays."
	elseif particle1.name == "Photon" and particle2.name == "Z Boson" or particle1.name == "Z Boson" and particle2.name == "Photon" then
		return "The photon and Z boson exchange energy."
	elseif particle1.name == "Photon" and particle2.name == "W Boson" or particle1.name == "W Boson" and particle2.name == "Photon" then
		return "The photon and W boson exchange energy."
	elseif particle1.name == "Photon" and particle2.name == "Higgs Boson" or particle1.name == "Higgs Boson" and particle2.name == "Photon" then
		return "The photon and Higgs boson exchange energy."
	elseif particle1.name == "Photon" and particle2.name == "Graviton" or particle1.name == "Graviton" and particle2.name == "Photon" then
		return "The photon and graviton exchange energy."
	elseif particle1.name == "Muon" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Muon" then
		return "The muon and neutrino exchange energy."
	elseif particle1.name == "Tau" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Tau" then
		return "The tau and neutrino exchange energy."
	elseif particle1.name == "W Boson" and particle2.name == "Z Boson" or particle1.name == "Z Boson" and particle2.name == "W Boson" then
		return "The W boson and Z boson exchange energy."
	elseif particle1.name == "Higgs Boson" and particle2.name == "Z Boson" or particle1.name == "Z Boson" and particle2.name == "Higgs Boson" then
		return "The Z boson and Higgs boson exchange energy."
	elseif particle1.name == "Higgs Boson" and particle2.name == "W Boson" or particle1.name == "W Boson" and particle2.name == "Higgs Boson" then
		return "The W boson and Higgs boson exchange energy."
	elseif particle1.name == "Higgs Boson" and particle2.name == "Higgs Boson" then
		return "Two Higgs bosons can interact and exchange energy."
	elseif particle1.name == "Graviton" and particle2.name == "Graviton" then
		return "Two gravitons can interact and exchange energy."
	elseif particle1.name == "Z Boson" and particle2.name == "Z Boson" then
		return "Two Z bosons can interact and exchange energy."
	elseif particle1.name == "W Boson" and particle2.name == "W Boson" then
		return "Two W bosons caninteract and exchange energy."
	elseif particle1.name == "Neutrino" and particle2.name == "Neutrino" then
		return "Two neutrinos can interact and exchange energy."
	elseif particle1.name == "Electron" and particle2.name == "Positron" or particle1.name == "Positron" and particle2.name == "Electron" then
		return "The electron and positron annihilate each other and produce two or more gamma rays."
	elseif particle1.name == "Electron" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Electron" then
		return "The electron and photon can interact through Compton scattering or other processes."
	elseif particle1.name == "Electron" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Electron" then
		return "The electron and neutrino can interact through weak interactions."
	elseif particle1.name == "Positron" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Positron" then
		return "The positron and photon can interact through annihilation or other processes."
	elseif particle1.name == "Positron" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Positron" then
		return "The positron and neutrino can interact through weak interactions."
	elseif particle1.name == "Muon" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Muon" then
		return "The muon and photon can interact through Compton scattering or other processes."
	elseif particle1.name == "Muon" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Muon" then
		return "The muon and neutrino can interact through weak interactions."
	elseif particle1.name == "Tau" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Tau" then
		return "The tau and photon can interact through Compton scattering or other processes."
	elseif particle1.name == "Tau" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Tau" then
		return "The tau and neutrino can interact through weak interactions."
	elseif particle1.name == "Proton" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Proton" then
		return "The proton and photon can interact through Compton scattering or other processes."
	elseif particle1.name == "Proton" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Proton" then
		return "The proton and neutrino can interact through weak interactions."
	elseif particle1.name == "Antiproton" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Antiproton" then
		return "The antiproton and photon can interact through annihilation or other processes."
	elseif particle1.name == "Antiproton" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Antiproton" then
		return "The antiproton and neutrino can interact through weak interactions."
	elseif particle1.name== "Neutron" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Neutron" then
		return "The neutron and photon can interact through Compton scattering or other processes."
	elseif particle1.name == "Neutron" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Neutron" then
		return "The neutron and neutrino can interact through weak interactions."
	elseif particle1.name == "Kaon" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Kaon" then
		return "The kaon and photon can interact through Compton scattering or other processes."
	elseif particle1.name == "Kaon" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Kaon" then
		return "The kaon and neutrino can interact through weak interactions."
	elseif particle1.name == "Pion" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Pion" then
		return "The pion and photon can interact through Compton scattering or other processes."
	elseif particle1.name == "Pion" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Pion" then
		return "The pion and neutrino can interact through weak interactions."
	elseif particle1.name == "Eta" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Eta" then
		return "The eta and photon can interact through Compton scattering or other processes."
	elseif particle1.name == "Eta" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Eta" then
		return "The eta and neutrino can interact through weak interactions."
	elseif particle1.name == "Sigma+" and particle2.name == "Electron" or particle1.name == "Electron" and particle2.name == "Sigma+" then
		return "The Sigma+ and electron can interact through weak interactions."
	elseif particle1.name == "Sigma-" and particle2.name == "Positron" or particle1.name == "Positron" and particle2.name == "Sigma-" then
		return "The Sigma- and positron can interact through weak interactions."
	elseif particle1.name == "Lambda" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Lambda" then
		return "The lambda and photon can interact through Compton scattering or other processes."
	elseif particle1.name == "Lambda" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Lambda" then
		return "The lambda and neutrino can interact through weak interactions."
	elseif particle1.name == "Omega-" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Omega-" then
		return "The omega- and photon can interact through Compton scattering or other processes."
	elseif particle1.name == "Omega-" and particle2.name == "Neutrino" or particle1.name == "Neutrino" and particle2.name == "Omega-" then
		return "The omega- and neutrino can interact through weak interactions."
	elseif particle1.name == "Bottom Quark" and particle2.name == "Bottom Quark" then
		return "Two bottom quarks can bind together to form a meson or a baryon."
	elseif particle1.name == "Bottom Quark" and particle2.name == "Top Quark" or particle1.name == "Top Quark" and particle2.name == "Bottom Quark" then
		return "A bottom quark and a top quark can annihilate each other to produce a W boson."
	elseif particle1.name == "Top Quark" and particle2.name == "Top Quark" then
		return "Two top quarks can bind together to form a meson or a baryon."
	elseif particle1.name == "Charm Quark" and particle2.name == "Charm Quark" then
		return "Two charm quarks can bind together to form a meson or a baryon."
	elseif particle1.name == "Charm Quark" and particle2.name == "Top Quark" or particle1.name == "Top Quark" and particle2.name == "Charm Quark" then
		return "A charm quark and a top quark can annihilate each other to produce a W boson."
	elseif particle1.name == "Charm Quark" and particle2.name == "Bottom Quark" or particle1.name == "Bottom Quark" and particle2.name == "Charm Quark" then
		return "A charm quark and a bottom quark can interact through weak interactions."
	elseif particle1.name == "Top Quark" and particle2.name == "Bottom Quark" or particle1.name == "Bottom Quark" and particle2.name == "Top Quark" then
		return "A top quark and a bottom quark can interact through weak interactions."
	elseif particle1.name == "Charm Quark" and particle2.name == "Strange Quark" or particle1.name == "Strange Quark" and particle2.name == "Charm Quark" then
		return "Two charm and strange quarks can bind together to form a meson or a baryon."
	elseif particle1.name == "Top Quark" and particle2.name == "Strange Quark" or particle1.name == "Strange Quark" and particle2.name == "Top Quark" then
		return "A top quark and a strange quark can interact through weak interactions."
	elseif particle1.name == "Bottom Quark" and particle2.name == "Strange Quark" or particle1.name == "Strange Quark" and particle2.name == "Bottom Quark" then
		return "A bottom quark and a strange quark can interact through weak interactions."
	elseif particle1.name == "Charm Quark" and particle2.name == "Gluon" or particle1.name == "Gluon" and particle2.name == "Charm Quark" then
		return "A charm quark and a gluon can interact through strong interactions."
	elseif particle1.name == "Top Quark" and particle2.name == "Gluon" or particle1.name == "Gluon" and particle2.name == "Top Quark" then
		return "A top quark and a gluon can interact through strong interactions."
	elseif particle1.name == "Bottom Quark" and particle2.name == "Gluon" or particle1.name == "Gluon" and particle2.name == "Bottom Quark" then
		return "A bottom quark and a gluon caninteract through strong interactions."
	elseif particle1.name == "Charm Quark" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Charm Quark" then
		return "A charm quark and a photon can interact through electromagnetic interactions."
	elseif particle1.name == "Top Quark" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Top Quark" then
		return "A top quark and a photon can interact through electromagnetic interactions."
	elseif particle1.name == "Bottom Quark" and particle2.name == "Photon" or particle1.name == "Photon" and particle2.name == "Bottom Quark" then
		return "A bottom quark and a photon can interact through electromagnetic interactions."

		-- Leptons
	elseif particle1.name == "Electron" and particle2.name == "Electron" then
		return "Two electrons repel each other due to their negative charge."
	elseif particle1.name == "Electron" and particle2.name == "Muon" or particle1.name == "Muon" and particle2.name == "Electron" then
		return "An electron and a muon can interact through weak interactions."
	elseif particle1.name == "Electron" and particle2.name == "Tau" or particle1.name == "Tau" and particle2.name == "Electron" then
		return "An electron and a tau can interact through weak interactions."
	elseif particle1.name == "Muon" and particle2.name == "Muon" then
		return "Two muons can interact through weak interactions."
	elseif particle1.name == "Muon" and particle2.name == "Tau" or particle1.name == "Tau" and particle2.name == "Muon" then
		return "A muon and a tau can interact through weak interactions."
	elseif particle1.name == "Tau" and particle2.name == "Tau" then
		return "Two taus can interact through weak interactions."

		-- Bosons
	elseif particle1.name == "Photon" and particle2.name == "Photon" then
		return "Two photons can interact through electromagnetic interactions and can produce particle-antiparticle pairs."
	elseif particle1.name == "W Boson" and particle2.name == "W Boson" then
		return "Two W bosons can interact through weak interactions and can produce other particles."
	elseif particle1.name == "Z Boson" and particle2.name == "Z Boson" then
		return "Two Z bosons can interact through weak interactions and can produce other particles."
	elseif particle1.name == "Gluon" and particle2.name == "Gluon" then
		return "Two gluons can interact through strong interactions and can produce other particles."

		-- Other particles
	elseif particle1.name == "Higgs Boson" and particle2.name == "Higgs Boson" then
		return "Two Higgs bosons can interact through weak interactions and can produce other particles."
	elseif particle1.name == "Neutrino" and particle2.name == "Neutrino" then
		return "Two neutrinos can interact through weak interactions."
	elseif particle1.name == "Neutrino" and particle2.name == "Antineutrino" or particle1.name == "Antineutrino" and particle2.name == "Neutrino" then
		return "A neutrino and an antineutrino can interact through weak interactions."
	elseif particle1.name == "Muon Neutrino" and particle2.name == "Muon Neutrino" or particle1.name == "Muon Antineutrino" and particle2.name == "Tau Neutrino" or particle1.name == "Tau Neutrino" and particle2.name == "Muon Antineutrino" then
		return "A muon neutrino and a tau neutrino can interact through weak interactions."
	elseif particle1.name == "Tau Neutrino" and particle2.name == "Tau Neutrino" or particle1.name == "Tau Antineutrino" and particle2.name == "Tau Neutrino" or particle1.name == "Tau Neutrino" and particle2.name == "Tau Antineutrino" then
		return "Two tau neutrinos or a tau neutrino and a tau antineutrino can interact through weak interactions."
	elseif particle1.name == "Dark Matter" and particle2.name == "Dark Matter" then
		return "Two dark matter particles can interact through gravitational interactions."
	elseif particle1.name == "Graviton" and particle2.name == "Graviton" then
		return "Two gravitons can interact through gravitational interactions."

		-- If no interaction is defined
	else
		return "There is no known interaction between a " .. particle1.name .. " and a " .. particle2.name .. "."
	end
end

-- test the function
print(particleCollision(particles[1], particles[10])) -- output: A proton and an electron can interact through electromagnetic interactions.

Quaternion Script


local Quaternion = {}
Quaternion.__index = Quaternion

function Quaternion.new(x, y, z, w)
	return setmetatable({
		x = x or 0,
		y = y or 0,
		z = z or 0,
		w = w or 0,
	}, Quaternion)
end

function Quaternion.FromAxisAngle(axis, angle)
	local halfAngle = angle / 2
	local sinHalfAngle = math.sin(halfAngle)
	local cosHalfAngle = math.cos(halfAngle)
	local x = axis.x * sinHalfAngle
	local y = axis.y * sinHalfAngle
	local z = axis.z * sinHalfAngle
	local w = cosHalfAngle
	return Quaternion.new(x, y, z, w)
end

function Quaternion:__mul(other)
	local x = self.w * other.x + self.x * other.w + self.y * other.z - self.z * other.y
	local y = self.w * other.y - self.x * other.z + self.y * other.w + self.z * other.x
	local z = self.w * other.z + self.x * other.y - self.y * other.x + self.z * other.w
	local w = self.w * other.w - self.x * other.x - self.y * other.y - self.z * other.z
	return Quaternion.new(x, y, z, w)
end

return Quaternion

Quick Sort Algorithm

--// Quick Sort Algorithm in Lua

function quickSort(array, start, stop)
    if start < stop then
        local pivotIndex = partition(array, start, stop)
        quickSort(array, start, pivotIndex - 1)
        quickSort(array, pivotIndex + 1, stop)
    end
end

function partition(array, start, stop)
    local pivot = array[stop]
    local i = start - 1
    
    for j = start, stop - 1 do
        if array[j] <= pivot then
            i = i + 1
            array[i], array[j] = array[j], array[i]
        end
    end
    
    array[i + 1], array[stop] = array[stop], array[i + 1]
    return i + 1
end

--// Main function
function main()
    --// Generate random array of numbers
    local array = {}
    for i = 1, 10 do
        array[i] = math.random(1, 100)
    end
    
    print("Unsorted Array:")
    for i = 1, #array do
        io.write(array[i] .. " ")
    end
    io.write("\n")
    
    --// Sort array using quicksort algorithm
    quickSort(array, 1, #array)
    
    print("Sorted Array:")
    for i = 1, #array do
        io.write(array[i] .. " ")
    end
    io.write("\n")
end

main()

Linear Regression Algorithm

--// Linear Regression Algorithm in Lua

--// Hypothesis function
function h(theta0, theta1, x)
    return theta0 + theta1 * x
end

--// Cost function
function J(theta0, theta1, x, y)
    local sum = 0
    for i = 1, #x do
        sum = sum + (h(theta0, theta1, x[i]) - y[i]) ^ 2
    end
    return sum / (2 * #x)
end

--// Gradient descent algorithm
function gradientDescent(theta0, theta1, x, y, alpha, iterations)
    for i = 1, iterations do
        local sum0 = 0
        local sum1 = 0
        for j = 1, #x do
            sum0 = sum0 + (h(theta0, theta1, x[j]) - y[j])
            sum1 = sum1 + (h(theta0, theta1, x[j]) - y[j]) * x[j]
        end
        theta0 = theta0 - alpha * sum0 / #x
        theta1 = theta1 - alpha * sum1 / #x
    end
    return theta0, theta1
end

--// Main function
function main()
    --// Generate sample data
    local x = {1, 2, 3, 4, 5}
    local y = {2, 4, 6, 8, 10}
    
    --// Initialize theta0 and theta1
    local theta0 = 0
    local theta1 = 0
    
    --// Run gradient descent algorithm
    theta0, theta1 = gradientDescent(theta0, theta1, x, y, 0.01, 1000)
    
    --// Print results
    print("Linear Regression Algorithm:")
    print("y = " .. theta0 .. " + " .. theta1 .. "x")
end

main()