Help with making a wave with triangles

Hello there!, I’m currently making a water wave system, I have no problem with generating the triangles, but the hard part is to make it actually moves. If anyone has any ideas of how I could make it moves and function like a wave, that would be lovely!, as I have absolutely no clue on how to create and where to start such system.

Here’s what my wave made out of triangle looks right now:

And here’s the code for it

local X, Z = 20, 20

local wedge = Instance.new("WedgePart");
wedge.Anchored = true;
wedge.TopSurface = Enum.SurfaceType.Smooth;
wedge.BottomSurface = Enum.SurfaceType.Smooth;

local function draw3dTriangle(a, b, c)
	local ab, ac, bc = b - a, c - a, c - b;
	local abd, acd, bcd = ab:Dot(ab), ac:Dot(ac), bc:Dot(bc);

	if (abd > acd and abd > bcd) then
		c, a = a, c;
	elseif (acd > bcd and acd > abd) then
		a, b = b, a;
	end

	ab, ac, bc = b - a, c - a, c - b;

	local right = ac:Cross(ab).unit;
	local up = bc:Cross(right).unit;
	local back = bc.unit;

	local height = math.abs(ab:Dot(up));

	local w1 = wedge:Clone();
	w1.Size = Vector3.new(0, height, math.abs(ab:Dot(back)));
	w1.CFrame = CFrame.fromMatrix((a + b)/2, right, up, back);
	w1.Parent = workspace.parts;

	local w2 = wedge:Clone();
	w2.Size = Vector3.new(0, height, math.abs(ac:Dot(back)));
	w2.CFrame = CFrame.fromMatrix((a + c)/2, -right, up, -back);
	w2.Parent = workspace.parts;

	return w1, w2;
end

local posGrid = {}

for x = 0, X do
	posGrid[x] = {}
	for z = 0, Z do
		posGrid[x][z] = Vector3.new(x*5, math.noise(x/10, z/10) * 20, z*5)
	end
end

for x = 0, X-1  do
	for z = 0, Z-1 do
		local a = posGrid[x][z]
		local b = posGrid[x+1][z]
		local c = posGrid[x][z+1]
		local d = posGrid[x+1][z+1]
			
		draw3dTriangle(a, b, c)
		draw3dTriangle(b, c, d)
	end
end

Thanks!