Help making barreling wave using mesh deformation

Hello there! I hope whoever is reading this is having an amazing day! I have a little situation that I need some help with for a Roblox surfing game that I am working on.

How can I, using Roblox’s EditableMeshes, create a barreling wave that looks like the waves from this video? The issue is I am not the best with mathematics and I’m only 16. However I have recently been learning about sin, cos and tan. They seem like they could be useful with making this system. I’m pretty confident that this wave system will require lots of mathematics.

I have tried searching around online. I have found this and this and this.

I have made this basic code to create an EditableMesh with a 100x100 grid of vertices. The MeshPart’s size in the script is : 1735, 0.001, 200 So its quite a big mesh. I’m not exactly sure where to go from here but if someone could point me in the right direction that would be great!

local Asset_Service = game:GetService("AssetService")
local Wave_Mesh_Template = script:WaitForChild("Wave_Mesh_Template")
local Grid_X, Grid_Y = 100, 100

local function Create_Editable_Mesh(Grid_X, Grid_Y)
	local Editable_Mesh = Asset_Service:CreateEditableMesh()
	local Vertices = {}
	local Mesh_Part = Wave_Mesh_Template:Clone()
	Mesh_Part.Parent = workspace
	Mesh_Part.Name = "Wave_Mesh"

	local Center_X = (Grid_X - 1) / 2
	local Center_Z = (Grid_Y - 1) / 2

	for Y = 1, Grid_Y do
		local Row = {}
		for X = 1, Grid_X do
			local Vertex_Position = Vector3.new(X - 1 - Center_X, 0, Y - 1 - Center_Z)
			local Vertex_Id = Editable_Mesh:AddVertex(Vertex_Position)
			Row[X] = {Vertex_Id, Vertex_Position}
		end
		Vertices[Y] = Row
	end

	for Y = 1, Grid_Y - 1 do
		for X = 1, Grid_X - 1 do
			local V1 = Vertices[Y][X][1]
			local V2 = Vertices[Y + 1][X][1]
			local V3 = Vertices[Y][X + 1][1]
			local V4 = Vertices[Y + 1][X + 1][1]
			Editable_Mesh:AddTriangle(V1, V2, V3)
			Editable_Mesh:AddTriangle(V2, V4, V3)
		end
	end

	local Grid = Asset_Service:CreateMeshPartAsync(Content.fromObject(Editable_Mesh))
	Mesh_Part:ApplyMesh(Grid)

	return Editable_Mesh, Mesh_Part, Vertices
end

local Editable_Mesh, Mesh_Part, Vertices = Create_Editable_Mesh(Grid_X, Grid_Y)