The name of this video is 3D Matrix Circles. So now we're going to go back to our 3D matrix code where we were trying to deal with the circles and we're going to add our finding a plane function so we can find a plane on which to put those circles. So in this form I was using a midpoint as my origin point for my circle. I'm still going to do that, but that's going to be the origin point for my plane. So now I need to give it two more points for x axis and a y axis. And then I can give the add circle function a plane from that. So if we look at our module here, and let's just look at the front one first. So I'm going to have that midpoint and then I'm going to and I just drew this axis in here manually just to demonstrate the points for that plane. So that's going to be the origin. We'll use this bottom one here for x, and then the top one here for y. So let's take a look at the code and see how we implement that. So here's our 3D matrix code intersection where we're looping through to create our geometry. So here I'm creating and finding the midpoint, calling it origin and then I'm using plane from points to find that plane. So using the origin, and then my x, this is my x axis, which is i, j, k-1, so that's here. i, j, k-1, and then this is going to be my y, (i, j-1, k). Sorry, that's the back circle. We're looking at the front circle, so yeah. All right, j-1, k-1 and i, j-1, k. That's the first one and that's y. And then, essentially I do the same thing for the back circle. But one thing I want to make sure of is that this planar, the orientation of the plane for my x axis and my y axis is close to what I have for the front. So I don't get any twists within my loft between the two circles because that planar orientation has an effect over the starting and the end point of my circle, and that would have an effect over whether the loft is twisted or not. So I create those two planes, I add the circle, giving a radius value and using the plane and then I'm going to save those two so I can log off from them. So let's delete this and then we'll run that. Okay, so I'm creating my circles now on the front and the back plane. Undo that, let's create the loft. So again, these have to be within their own parenthesis because the AddLoftSrf is looking for a list. Okay, so now let's look at how we can start to produce variation in this. If I bring back my random radius function which I did here, I made a slight change to it. So before I was just calling it up and I had a fixed integer for my maximum radius which was 5 when I was using it in an earlier code, but now I've adapted it. So now I can input, I have one argument here to input my maximum radius. So now when I call it, I can input a maximum radius here. We can replace this so my maximum radius could be different for my back circle than it is for my front circle. So I can get greater variation and radius from one side. So if we run that, Now I could also show Now everything still in plane, all right? My circles still in plane, these surfaces are all still in plane, but I want to demonstrate how if we randomize this in all three planes, Which throws, juggles our point matrix well out of plane, out of skew, this should still work. And the reason it still works is because I'm finding that plane even though some of them get pretty twisted. Those circles are always going to be well formed, they're going to be planar because their plane is defined by three points which is always going to be flat in space. Let's just do two more things so I could bring also back my object color. And then if I want to create a lot of geometry, and I don't want to slow the processing down, I could bring back my EnableRedraw Okay, which sort of halts the redrawing in the scene till it's done all calculations and then it draws the final form. So if I really bumped this up maximum number x to like 20, let's keep y at 2 and then made t 10. It's going to produce it quite quickly. So now I'm getting through color variation. And a lot of, sort of intricate overlapping cone geometry. And we could also increase if we wanted a deeper wall. We could increase y to three or four I'm creating a much, deeper wall of elements Although we're losing some of our transparency, so I kind of like it as a thinner wall. But that gives you the idea of what's possible with a little manipulation.