Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local X, Z = 15, 15
- 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;
- 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;
- return w1, w2;
- end
- local positionGrid = {}
- for x = 0, X do
- positionGrid[x] = {}
- for z = 0, Z do
- positionGrid[x][z] = Vector3.new(x*5, math.noise(x/10, z/10) * 10, z*5)
- end
- end
- for x = 0, X-1 do
- for z = 0, Z-1 do
- local a = positionGrid[x][z]
- local b = positionGrid[x+1][z]
- local c = positionGrid[x][z+1]
- local d = positionGrid[x+1][z+1]
- draw3dTriangle(a, b, c)
- draw3dTriangle(b, c, d)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement