This video is titled Transformation, Putting It All Together. In this video, I'm going to show you how we can put multiple transformations together to manipulate the geometry of shape. This is really what you're going to be doing in the first assignment, something similar. Now, I'm going to simplifying it a little bit by, I'm just going to use a single shape. You can, of course, use multiple shapes in the first assignment as many as you want. One of the things I'm looking for though in that assignment is not just a manipulation of this shape, but doing that in a really calculated way where you're able to produce these transformational patterns of the shape. So it isn't just there, change in one stage, but how do you do it, how do you make a progressive manipulation or progressive transformation to a shape? I'm going to demonstrate a little bit of that, and then on also how to combine multiple transformation types. So rotate, moving, scaling, all in one code using all of the things that I've showed so far in this lesson. So this code should look pretty familiar to you, and putting some data, selecting an object, I'm selecting a point to either move or scale to. I'm finding the coordinates of that point, I'm finding the centroid of the shape that I'm inputting, calculating a translation. Then the first thing I'm going to show is rotate and then a scale. Just something to explain in here. I do the rotation first because I want to rotate around the centroid, if I scaled or move the shape, since I'm finding the centroid with the input shape. If I scaled or move the shape, I wouldn't be rotating around, it'd still be rotating around the centroid, but the centroid will be here and the shape might be someplace else. So it's not going to rotate around its own center. So I want to rotate around its own center first. So that's why I do rotate object first. I also do something else, so my copy is set to True. So I'm producing a copy of it, and I want to save that copy in a variable called new curve. Since I'm going to want to show this progressive differentiation of this shape, I want to produce copies of it. So I can do that at different steps, but I decided to do it in the first step, which means that the object that I'm going to scale is not the original object that I input, the one held in curve ID, but it's this new one that I've rotated. It is going to scale it towards that input point. So I have a point out here, and so it's really going out. So I don't need to move this object because it's going to scale it towards that point, and it is going to move it because of that scale transformation. I'm scaling it by 80 percent, and again, that's something you can adjust and you can do non-uniform. That's something you can really play around with, and I'm not producing a copy. So I say faults here. Now, I could just have left that out, but in order to demonstrate that I'm not copying something, I'm not producing a copy, I'm writing False in there. So let's run this. So I select the curve, and I select the two point. So it's rotated, first rotated that like I did at 20 degrees in the counterclockwise direction, and that's scaled it 80 percent towards that point. So if I run this again, selecting that copied curve, a point, I could do this over and over again, selecting each new curve. I would start to get this transformational graphic pattern of this curve rotating and scaling through space. So the production of this kind of pattern with a shape or different shapes is really the crux of the first assignment. How do you create using multiple transformations? How do you create 2D patterns with shapes? So that's one methodology, and other methodology could be that you have maybe some drivings shape, maybe it's a circle. On that circle you divide it, and you find series of points along that circle. I could use those points as points to copy my shape 2 and rotate it around. Let's go back to our code, we'll make some adjustments. This I'm not going to scale it this time. I'm going to turn that off, but I am going to move it. We'll still rotate it around its centroid, still producing a copy, and then we're going to move that copy to the point that I select. I'm going to, instead of selecting this point over here, I'm going to select points on this circle. I'm going to produce copies of that shape as it rotates around. After I do the first one, I'm then going to select that shape that's already on the circle, because I want to do progressive rotations. If I kept selecting the original, it would continue to just do the same rotation. Let's run this, select that curve, and select a point. Let's copy this, so if I keep running this, selecting that new curve, okay, so you've probably, you get the idea. I'm able to produce these patterns from an aggregation of shapes, which have a base structuring element that controls their organization in space. That's really an important part of this project is that you have some way of controlling that pattern of transformation. One other methodology might be, you could create a curve, could also divide that, and let's go back to our code and let's see what we want to do. We'll move it. Let's also scale it. We'll see what that does. Again, when I do the move object, probably haven't seen here, so I rotate the object, this first object, and then I save it, the copy of it, which I'm copying here, I save in this new variable, then that's the one I'm moving because it's in here as one of the assignments. Then I'm overriding that again as I move it, because I'm moving it to a new position. Then I am scaling that here. Let's run that, select a curve, select a point, let's continue to do that. In this case, I'm getting a move, a rotate, a move, and then a scale. That's also following this trajectory in space. A couple of different methods, obviously, there are others, you could have multiple shapes that are driving this, you could do non-uniform scales, you don't have to have, this doesn't have to be a closed shape. You could work with open lines, it could be curvilinear shapes, anything that you can come up with is fine to use, it just it has to be two-dimensional, and it has to produce this pattern transformation. That's it. Have fun. The other thing I want to point out too is that, this might seem, this selecting and clicking of the points seems like there might be a better way to do this with code. It seems tedious, and you wouldn't be wrong in saying that, but what this is leading up to that, we will be able to automate these processes when we look at things like we're going to introduce lists and iteration. We'll be able to do things like collect many points in an organized manner or produce those that list of points from a curve, and then loop through those and do these transformations on that. We haven't got to those tools yet, but this is leading up to that, and so all these processes will be able to be more automated, but this is the first steps to that.