1 00:00:04,010 --> 00:00:05,660 PROFESSOR: All right before we get 2 00:00:05,660 --> 00:00:09,840 started, I just wanted to say goodbye 3 00:00:09,840 --> 00:00:14,910 to Eric Joisel, who died on Sunday, sadly. 4 00:00:14,910 --> 00:00:18,140 He's a master origami creator, and I encourage you all 5 00:00:18,140 --> 00:00:21,420 to come see "Between the Folds" on Tuesday, 6 00:00:21,420 --> 00:00:25,180 showing Tuesday evening, because there's 7 00:00:25,180 --> 00:00:28,460 a great interview with him, and it really captures his spirit. 8 00:00:28,460 --> 00:00:31,790 And sadly, I never met him in person. 9 00:00:31,790 --> 00:00:34,040 The last I corresponded with him was to get permission 10 00:00:34,040 --> 00:00:37,750 to show these photos in class. 11 00:00:37,750 --> 00:00:41,150 So that sucks. 12 00:00:41,150 --> 00:00:43,920 Today is about rigidity again. 13 00:00:53,010 --> 00:00:55,505 And in particular, something called infinitesimal rigidity. 14 00:00:58,290 --> 00:01:01,315 So last class was mostly about generic rigidity. 15 00:01:05,740 --> 00:01:08,970 Today we're going to talk about a variation, 16 00:01:08,970 --> 00:01:11,010 although related to generic rigidity. 17 00:01:11,010 --> 00:01:12,850 And this is going to be a very useful tool. 18 00:01:12,850 --> 00:01:15,750 It's a lot easier to work with algorithmically. 19 00:01:15,750 --> 00:01:18,070 It still captures essentially generic rigidity, 20 00:01:18,070 --> 00:01:20,400 but in a different way-- in a linear way. 21 00:01:20,400 --> 00:01:22,890 And it's going to be super useful. 22 00:01:22,890 --> 00:01:30,720 So the idea is we think about rigidity-- does a linkage 23 00:01:30,720 --> 00:01:32,970 move or not-- to the first order. 24 00:01:37,680 --> 00:01:41,330 First order means first derivative. 25 00:01:41,330 --> 00:01:48,589 OK, so I'm going to do some analysis stuff-- calculus, 26 00:01:48,589 --> 00:01:50,630 which you should all know, because is the General 27 00:01:50,630 --> 00:01:53,340 Institute Requirement. 28 00:01:53,340 --> 00:01:56,030 Don't worry, you don't need to know much. 29 00:01:56,030 --> 00:01:57,970 So in particular rigidity, is really 30 00:01:57,970 --> 00:01:59,130 about the lack of motion. 31 00:01:59,130 --> 00:02:02,540 So let's define the idea of infinitesimal motion, 32 00:02:02,540 --> 00:02:04,490 or first-order motion. 33 00:02:04,490 --> 00:02:08,050 This is, again, suppose we start somewhere. 34 00:02:08,050 --> 00:02:10,024 And somewhere would be a linkage configuration. 35 00:02:13,400 --> 00:02:14,560 There's a linkage. 36 00:02:14,560 --> 00:02:16,350 There's a graph, with edge lengths 37 00:02:16,350 --> 00:02:21,900 plus configuration maps every vertex to a point. 38 00:02:21,900 --> 00:02:24,280 I'm going to assume we're working in the plane for now. 39 00:02:24,280 --> 00:02:26,550 But really this works in-- I'll say d dimensions. 40 00:02:32,610 --> 00:02:36,090 So this is what I want to define. 41 00:02:36,090 --> 00:02:42,860 I'm going to say that it is a valid-- this 42 00:02:42,860 --> 00:02:47,500 is sort of an informal notion-- a valid first derivative 43 00:02:47,500 --> 00:02:48,865 of a motion. 44 00:02:48,865 --> 00:02:50,115 We've already defined motions. 45 00:02:54,540 --> 00:02:57,780 I want to take such a motion, essentially, 46 00:02:57,780 --> 00:03:03,460 take its derivative with respect to time, 47 00:03:03,460 --> 00:03:07,500 And evaluate that derivative at time 0. 48 00:03:07,500 --> 00:03:10,970 This is a fancy way of saying the following picture-- I'd 49 00:03:10,970 --> 00:03:13,880 like a motion, which is some path in the configuration 50 00:03:13,880 --> 00:03:15,495 space-- remember, configuration space 51 00:03:15,495 --> 00:03:18,040 is some hugely dimensional object, 52 00:03:18,040 --> 00:03:21,889 d n dimensions-- and a point in that space 53 00:03:21,889 --> 00:03:23,180 corresponds to a configuration. 54 00:03:23,180 --> 00:03:27,060 We have a motion is some path in that space. 55 00:03:27,060 --> 00:03:28,880 And motions are hard to think about. 56 00:03:28,880 --> 00:03:30,600 They can be really complicated. 57 00:03:30,600 --> 00:03:33,260 So I just want to say, well, how do you get started moving? 58 00:03:33,260 --> 00:03:35,869 What direction do you go in in a linear sense, 59 00:03:35,869 --> 00:03:36,660 to the first order? 60 00:03:36,660 --> 00:03:37,576 What's the derivative? 61 00:03:37,576 --> 00:03:40,190 What's the tangent right at the beginning? 62 00:03:40,190 --> 00:03:43,090 And then this notion will, stated 63 00:03:43,090 --> 00:03:44,570 in terms of motions-- you can think 64 00:03:44,570 --> 00:03:47,130 about this in the absence of a motion. 65 00:03:47,130 --> 00:03:50,060 Say, well, yeah, I don't really know whether this curve exists, 66 00:03:50,060 --> 00:03:52,990 but let's just see, does this initial starting direction 67 00:03:52,990 --> 00:03:53,656 exist? 68 00:03:53,656 --> 00:03:56,030 And that's actually a little weaker than the whole motion 69 00:03:56,030 --> 00:03:56,626 existing. 70 00:03:56,626 --> 00:03:59,000 If the motion exists, surely you can take this derivative 71 00:03:59,000 --> 00:04:00,190 and evaluate it. 72 00:04:00,190 --> 00:04:02,360 It's not totally obvious, but it's true. 73 00:04:02,360 --> 00:04:05,189 You need some smoothness. 74 00:04:05,189 --> 00:04:06,980 But if there's a way to get started moving, 75 00:04:06,980 --> 00:04:09,104 that doesn't actually mean you could actually move. 76 00:04:14,040 --> 00:04:17,970 Why don't I give a more formal definition, and a more useful 77 00:04:17,970 --> 00:04:19,759 one-- but that's the intuition. 78 00:04:23,070 --> 00:04:25,550 So another way to think of an infinitesimal motion 79 00:04:25,550 --> 00:04:31,050 is, instead of saying how each vertex moves in d dimensions, 80 00:04:31,050 --> 00:04:33,320 you just give a velocity vector for each vertex. 81 00:04:41,090 --> 00:04:44,140 For every vertex v, we're going to get some velocity vector 82 00:04:44,140 --> 00:04:49,010 d of v-- that's direction or derivative of v. 83 00:04:49,010 --> 00:04:52,980 And with motions, we were supposed 84 00:04:52,980 --> 00:04:55,070 to preserve edge lengths. 85 00:04:55,070 --> 00:04:56,950 So here we'd like to preserve edge lengths, 86 00:04:56,950 --> 00:05:01,790 but that's actually kind of hard to do. 87 00:05:01,790 --> 00:05:07,480 If you take an edge-- so I have two vertices, 88 00:05:07,480 --> 00:05:14,055 and I assign some velocity vectors, something like this-- 89 00:05:14,055 --> 00:05:16,180 as soon as you move a little bit in that direction, 90 00:05:16,180 --> 00:05:18,620 the edge length won't be quite the same. 91 00:05:18,620 --> 00:05:21,780 But it'll be the same to the first order, 92 00:05:21,780 --> 00:05:24,550 so this is going to be a little subtle. 93 00:05:28,600 --> 00:05:31,870 And in the book, we take the derivatives. 94 00:05:31,870 --> 00:05:33,220 We work out all the details. 95 00:05:33,220 --> 00:05:39,320 But I'll just tell you what the condition is, 96 00:05:39,320 --> 00:05:42,550 because ultimately all we need is this condition. 97 00:05:49,840 --> 00:05:51,940 I'm just defining an infinitesimal motion 98 00:05:51,940 --> 00:05:54,590 to be a velocity vector for every vertex, 99 00:05:54,590 --> 00:05:55,840 such that this property holds. 100 00:05:55,840 --> 00:05:58,910 This is a dot product between two vectors. 101 00:05:58,910 --> 00:06:05,510 If you have two vectors, a and b, you take their dot product, 102 00:06:05,510 --> 00:06:07,546 this is just something like this. 103 00:06:07,546 --> 00:06:08,670 You take the x-coordinates. 104 00:06:08,670 --> 00:06:09,794 You multiply them together. 105 00:06:09,794 --> 00:06:11,430 You take the y-coordinates. 106 00:06:11,430 --> 00:06:14,600 You multiply them together, and so on. 107 00:06:14,600 --> 00:06:15,130 Add them up. 108 00:06:18,240 --> 00:06:20,730 And we're going to need some linear algebra. 109 00:06:20,730 --> 00:06:23,950 That's one useful linearity thing. 110 00:06:23,950 --> 00:06:28,360 So these are where the configuration 111 00:06:28,360 --> 00:06:30,900 places vertex v and vertex w. 112 00:06:30,900 --> 00:06:38,405 So this should be true for each edge v w on the graph. 113 00:06:41,510 --> 00:06:46,570 This is a vector C of v minus C of w. 114 00:06:46,570 --> 00:06:48,470 Let me give some labels. 115 00:06:48,470 --> 00:06:52,860 Let's say this is w, and this is v. 116 00:06:52,860 --> 00:06:56,630 Let's say these are the points that the configuration places 117 00:06:56,630 --> 00:06:58,490 w and v at. 118 00:06:58,490 --> 00:07:03,210 Then C of v minus C of w is this vector. 119 00:07:07,460 --> 00:07:08,086 It's a vector. 120 00:07:08,086 --> 00:07:09,460 It doesn't really have any space. 121 00:07:09,460 --> 00:07:12,030 It's just been translated around. 122 00:07:12,030 --> 00:07:14,120 It's a vector that would point from w 123 00:07:14,120 --> 00:07:16,730 to v in the configuration. 124 00:07:16,730 --> 00:07:18,230 That's the left part. 125 00:07:18,230 --> 00:07:23,290 The right part has no real intuitive meaning, 126 00:07:23,290 --> 00:07:28,860 but it involves this thing-- some velocity vector for w-- 127 00:07:28,860 --> 00:07:31,390 and the velocity vector for v. So this 128 00:07:31,390 --> 00:07:36,764 is some relation on this vector and these two vectors. 129 00:07:36,764 --> 00:07:38,430 It's actually a very intuitive relation. 130 00:07:38,430 --> 00:07:41,180 Let me tell you what it means. 131 00:07:41,180 --> 00:07:42,890 Basically, we want to understand how 132 00:07:42,890 --> 00:07:45,490 this length changes to the first order. 133 00:07:45,490 --> 00:07:48,130 So this guy's moving to first order in this direction. 134 00:07:48,130 --> 00:07:50,500 In fact, it's moving on some curve, 135 00:07:50,500 --> 00:07:53,610 and the initial tangent is that direction. 136 00:07:53,610 --> 00:07:56,980 And to understand how that motion changes this edge 137 00:07:56,980 --> 00:07:58,790 length, turns out the right thing 138 00:07:58,790 --> 00:08:06,050 to do is to project this vector onto this one. 139 00:08:06,050 --> 00:08:07,720 Makes sense. 140 00:08:07,720 --> 00:08:10,610 So as this guy moves in that direction, 141 00:08:10,610 --> 00:08:12,220 This is the first-order change. 142 00:08:12,220 --> 00:08:14,530 This distance here is the first-order change 143 00:08:14,530 --> 00:08:19,000 of this length as caused by this vertex moving. 144 00:08:19,000 --> 00:08:22,740 OK, that projected length is actually very simple. 145 00:08:22,740 --> 00:08:26,240 This is again, some linear algebra stuff 146 00:08:26,240 --> 00:08:27,360 interpreted geometrically. 147 00:08:27,360 --> 00:08:31,050 This is a dot product in d of w-- 148 00:08:31,050 --> 00:08:35,844 that vector-- dot product with C of v minus C of w. 149 00:08:40,959 --> 00:08:43,084 It turns out dot product corresponds to projection. 150 00:08:43,084 --> 00:08:44,390 So I'm taking this vector. 151 00:08:44,390 --> 00:08:46,350 I'm projecting onto this one. 152 00:08:46,350 --> 00:08:48,330 That's how you'd write it algebraically. 153 00:08:48,330 --> 00:08:49,610 And same deal over here. 154 00:08:49,610 --> 00:08:54,060 If I project this vector onto this one, 155 00:08:54,060 --> 00:08:57,410 that's going to be the first-order change to this edge 156 00:08:57,410 --> 00:09:01,396 length caused by this vertex moving in that direction. 157 00:09:01,396 --> 00:09:11,410 So this is d of v dot C of v, minus C of w. 158 00:09:14,240 --> 00:09:15,915 So if I want this edge length not 159 00:09:15,915 --> 00:09:18,560 to change at all to the first order, 160 00:09:18,560 --> 00:09:21,220 then this projected length should equal this projected 161 00:09:21,220 --> 00:09:21,720 length. 162 00:09:21,720 --> 00:09:23,540 And that's why I drew it this way. 163 00:09:23,540 --> 00:09:26,770 So it turns out this is a valid motion, because that projected 164 00:09:26,770 --> 00:09:29,990 length equals that one. 165 00:09:29,990 --> 00:09:33,180 And in general, we want this thing to equal that thing. 166 00:09:33,180 --> 00:09:34,750 And if you rearrange terms, that's 167 00:09:34,750 --> 00:09:38,090 the same thing as this property. 168 00:09:38,090 --> 00:09:43,180 I just take this one minus this one, and set it equal to zero, 169 00:09:43,180 --> 00:09:46,570 and you get that. 170 00:09:46,570 --> 00:09:48,917 OK, so this is some intuition. 171 00:09:48,917 --> 00:09:50,250 Maybe it makes sense, maybe not. 172 00:09:50,250 --> 00:09:54,680 In the end, this is all I care about. 173 00:09:54,680 --> 00:09:58,280 And it's useful to realize that it's 174 00:09:58,280 --> 00:10:03,310 a first derivative of a motion, because what that implies 175 00:10:03,310 --> 00:10:08,980 is that if there's a motion-- a real, 176 00:10:08,980 --> 00:10:12,945 honest to goodness motion-- then there's 177 00:10:12,945 --> 00:10:13,945 an infinitesimal motion. 178 00:10:18,130 --> 00:10:21,860 I'm going to abbreviate that "inf motion." 179 00:10:21,860 --> 00:10:23,120 Infinitesimal is pretty long. 180 00:10:23,120 --> 00:10:27,130 Infinitesimal means smaller-- very tiny-- smaller 181 00:10:27,130 --> 00:10:31,870 than anything, I think is the literal meaning. 182 00:10:31,870 --> 00:10:37,950 So this is useful to us, because the contrapositive 183 00:10:37,950 --> 00:10:44,050 says if a linkage is infinitesimally rigid-- which 184 00:10:44,050 --> 00:10:47,010 just means if there is no infinitesimal motion-- then 185 00:10:47,010 --> 00:10:47,530 it's rigid. 186 00:10:50,695 --> 00:10:52,070 So these are the same statements. 187 00:10:52,070 --> 00:10:53,653 This you prove just by taking a motion 188 00:10:53,653 --> 00:10:55,590 and taking its derivative. 189 00:10:55,590 --> 00:10:57,950 This is identical to that. 190 00:10:57,950 --> 00:10:59,650 So this is useful because if we can ever 191 00:10:59,650 --> 00:11:02,710 find something and show that it's infinitesimally rigid, 192 00:11:02,710 --> 00:11:04,360 then we've determined that it's rigid. 193 00:11:04,360 --> 00:11:06,304 Question? 194 00:11:06,304 --> 00:11:11,782 STUDENT: [INAUDIBLE] dot product [INAUDIBLE] 195 00:11:11,782 --> 00:11:16,596 at a left right turn is 0, or that the terms are 196 00:11:16,596 --> 00:11:18,689 at 90 degrees to each other? 197 00:11:18,689 --> 00:11:20,480 PROFESSOR: Yeah, this dot product basically 198 00:11:20,480 --> 00:11:23,990 means these two vectors are at 90 degrees to each other. 199 00:11:23,990 --> 00:11:26,110 That's another geometric meaning. 200 00:11:26,110 --> 00:11:30,470 I don't have a geometric picture. 201 00:11:30,470 --> 00:11:32,680 Maybe there is one, but I have trouble 202 00:11:32,680 --> 00:11:35,270 thinking about d of v minus d of w. 203 00:11:35,270 --> 00:11:41,290 That's not an intuitive thing to me, but it's something. 204 00:11:41,290 --> 00:11:43,010 And we're saying that that vector should 205 00:11:43,010 --> 00:11:46,854 be perpendicular to C of v minus C of w. 206 00:11:46,854 --> 00:11:48,270 However you want to think about, I 207 00:11:48,270 --> 00:11:50,960 like to think about it this way, but they're equivalent. 208 00:11:53,380 --> 00:11:55,380 All right, so how do we tell whether something's 209 00:11:55,380 --> 00:11:56,780 infinitesimally rigid? 210 00:11:56,780 --> 00:11:58,560 Because somehow that's useful to us. 211 00:12:02,290 --> 00:12:04,990 Well, there's a saying that everything 212 00:12:04,990 --> 00:12:10,220 is linear to the first order-- sort of a tautology. 213 00:12:10,220 --> 00:12:13,330 And all you need to observe is that this constraint 214 00:12:13,330 --> 00:12:15,650 is linear in what we don't know. 215 00:12:15,650 --> 00:12:19,010 So I want to know is there some set of velocity vectors 216 00:12:19,010 --> 00:12:22,220 d of v, and d of w, for all the vertices, 217 00:12:22,220 --> 00:12:24,420 so that these constraints hold. 218 00:12:24,420 --> 00:12:26,700 But I already know C of v, and I know C of w. 219 00:12:26,700 --> 00:12:30,050 This is just where are these vertices currently. 220 00:12:30,050 --> 00:12:32,430 And I want to know can I get started moving? 221 00:12:32,430 --> 00:12:34,520 So these are my known quantities, 222 00:12:34,520 --> 00:12:36,229 and these are my unknown quantities. 223 00:12:36,229 --> 00:12:37,520 This is just some linear thing. 224 00:12:37,520 --> 00:12:39,410 And the dot product-- I mean, this is all just constant. 225 00:12:39,410 --> 00:12:40,530 I know what they are. 226 00:12:40,530 --> 00:12:42,820 So this is a linear equation. 227 00:12:42,820 --> 00:12:45,830 The fancy way to write this is as a matrix equation, 228 00:12:45,830 --> 00:12:48,230 if you want. 229 00:12:48,230 --> 00:12:51,720 So this is the idea of a rigidity matrix. 230 00:12:57,510 --> 00:12:59,540 So we have a whole bunch of these constraints, 231 00:12:59,540 --> 00:13:01,380 one for every edge. 232 00:13:01,380 --> 00:13:03,680 And whenever you have a bunch of linear constraints, 233 00:13:03,680 --> 00:13:07,860 you can write them as R-- some big matrix-- 234 00:13:07,860 --> 00:13:17,530 times the velocity, or call them d's equals 0. 235 00:13:20,880 --> 00:13:22,530 So I can absorb this into a matrix. 236 00:13:22,530 --> 00:13:24,540 If you're used to that, great. 237 00:13:24,540 --> 00:13:28,100 Otherwise, this is what it looks like. 238 00:13:28,100 --> 00:13:32,260 My matrix R is going to have a row that 239 00:13:32,260 --> 00:13:34,540 has a whole bunch of zeroes. 240 00:13:34,540 --> 00:13:40,390 And then at some point, it has basically various versions 241 00:13:40,390 --> 00:13:41,910 of this vector. 242 00:13:41,910 --> 00:13:47,030 But because this is one equation, 243 00:13:47,030 --> 00:13:53,675 but in two dimensions, there's two parts to all these vectors. 244 00:14:09,690 --> 00:14:13,475 Two dimensions that'll look something like this-- 245 00:14:13,475 --> 00:14:14,600 why did I change the order? 246 00:14:19,079 --> 00:14:19,870 I think it's right. 247 00:14:35,440 --> 00:14:38,580 OK, this is not very amazing. 248 00:14:38,580 --> 00:14:42,630 It's just there are going to be four terms in two 249 00:14:42,630 --> 00:14:45,380 dimensions in this equation, because we've 250 00:14:45,380 --> 00:14:50,006 got d of v times this vector. 251 00:14:50,006 --> 00:14:51,380 So there's a x-coordinate vector, 252 00:14:51,380 --> 00:14:53,421 and the y-coordinate vector, and in d dimensions, 253 00:14:53,421 --> 00:14:54,510 there will be d of them. 254 00:14:54,510 --> 00:14:57,020 Here in two dimensions, I've got the x-coordinate of the vector, 255 00:14:57,020 --> 00:14:58,478 and the y-coordinate of the vector. 256 00:14:58,478 --> 00:15:05,020 So this will end up getting multiplied on the right hand 257 00:15:05,020 --> 00:15:11,059 side by d of v. So the two v rows, 258 00:15:11,059 --> 00:15:13,350 and this part will end up getting multiplied by d of w. 259 00:15:16,962 --> 00:15:18,420 yes, so these guys switched around. 260 00:15:18,420 --> 00:15:22,060 It's now w minus v in order to implement that minus sign. 261 00:15:24,960 --> 00:15:28,360 So whatever-- the point is you get a matrix. 262 00:15:28,360 --> 00:15:32,100 And what we care about, what we're trying to solve for, 263 00:15:32,100 --> 00:15:32,980 is d. 264 00:15:32,980 --> 00:15:35,150 We know this entire matrix, because we know c. 265 00:15:35,150 --> 00:15:36,920 We know the configuration. 266 00:15:36,920 --> 00:15:39,910 We just want to know is there some set of velocity vectors 267 00:15:39,910 --> 00:15:43,720 such that the rigidity matrix times this is equal to zero? 268 00:15:43,720 --> 00:15:46,180 This is called the set of d's i for which this 269 00:15:46,180 --> 00:15:51,280 is possible is called the-- anyone know? 270 00:15:51,280 --> 00:15:53,560 Good old linear algebra-- it's called 271 00:15:53,560 --> 00:15:57,740 the null space of this rigidity-- 272 00:15:57,740 --> 00:16:02,505 null referring to that 0, or the kernel. 273 00:16:06,020 --> 00:16:14,840 So the set of all infinitesimal motions 274 00:16:14,840 --> 00:16:20,199 is the null space of that matrix, also known 275 00:16:20,199 --> 00:16:21,365 as the kernel of the matrix. 276 00:16:24,310 --> 00:16:25,680 And so what? 277 00:16:25,680 --> 00:16:29,590 Well this lets us use a bunch of theorems in linear algebra. 278 00:16:29,590 --> 00:16:37,422 So one fun fact is that the dimension 279 00:16:37,422 --> 00:16:42,444 of this space-- the space of all infinitesimal motions-- 280 00:16:42,444 --> 00:16:43,860 seems like a useful thing to know. 281 00:16:43,860 --> 00:16:45,700 We want to know how many-- this is basically 282 00:16:45,700 --> 00:16:48,860 the number of degrees of freedom in infinitesimal land, which 283 00:16:48,860 --> 00:16:51,850 is not quite reality, but it's close. 284 00:16:51,850 --> 00:16:54,305 This is called the nullity of the matrix. 285 00:16:57,140 --> 00:17:00,060 That's just the definition, but there's 286 00:17:00,060 --> 00:17:04,480 a fun theorem called the rank nullity 287 00:17:04,480 --> 00:17:07,819 theorem from linear algebra. 288 00:17:18,750 --> 00:17:21,460 Which says if you have a matrix, you 289 00:17:21,460 --> 00:17:24,740 take its rank-- which is another quantity-- you take 290 00:17:24,740 --> 00:17:27,890 its nullity, and you add them together, 291 00:17:27,890 --> 00:17:32,050 it will be the number of columns in your matrix. 292 00:17:32,050 --> 00:17:41,600 Now in our case, the number of columns is d times n. 293 00:17:41,600 --> 00:17:45,760 We have n vertices down here, and each of them 294 00:17:45,760 --> 00:17:48,140 has d coordinates. 295 00:17:48,140 --> 00:17:49,770 So for us, this is d times n. 296 00:17:53,780 --> 00:17:56,990 So this is like a conserved quantity. 297 00:17:56,990 --> 00:17:58,910 What we care about is the nullity. 298 00:17:58,910 --> 00:18:04,320 This is the space of motions-- infinitesimal motions. 299 00:18:04,320 --> 00:18:07,690 And so consequently, we care about this thing 300 00:18:07,690 --> 00:18:08,460 called the rank. 301 00:18:08,460 --> 00:18:10,680 And if you've ever seen linear algebra, especially 302 00:18:10,680 --> 00:18:15,210 linear algebra algorithms, the bread and butter business 303 00:18:15,210 --> 00:18:17,000 is computing the rank of a matrix. 304 00:18:17,000 --> 00:18:19,405 This can be done in polynomial time. 305 00:18:19,405 --> 00:18:20,280 So this is good news. 306 00:18:20,280 --> 00:18:22,450 And intuitively what it corresponds to 307 00:18:22,450 --> 00:18:24,370 is the number of useful edges. 308 00:18:29,410 --> 00:18:32,180 And this thing is the number of degrees of freedom. 309 00:18:39,760 --> 00:18:43,284 So it turns out these will always be equal to d times n 310 00:18:43,284 --> 00:18:43,825 in summation. 311 00:18:46,650 --> 00:18:56,010 And what we care about, infinitesimal rigidity, 312 00:18:56,010 --> 00:18:59,780 means that-- or let's say it's infinitesimally rigid if 313 00:18:59,780 --> 00:19:07,150 and only if the nullity of the matrix 314 00:19:07,150 --> 00:19:12,250 is the space of rigid motions, which I have to look up. 315 00:19:18,070 --> 00:19:22,410 In general, in d dimensions, it's this-- d plus 1 choose 2. 316 00:19:22,410 --> 00:19:24,870 In two dimensions, there's three rigid motions. 317 00:19:24,870 --> 00:19:27,050 You've got the two translations and the rotation. 318 00:19:27,050 --> 00:19:28,670 Those we're not getting rid of. 319 00:19:28,670 --> 00:19:31,240 They still exist in infinitesimal land. 320 00:19:31,240 --> 00:19:33,950 So in two dimensions, ideally your nullity 321 00:19:33,950 --> 00:19:38,660 is-- if you want rigidity, your nullity should be 3. 322 00:19:38,660 --> 00:19:45,140 And what this is telling us is then the rank of the matrix 323 00:19:45,140 --> 00:19:47,670 should be d n minus that. 324 00:19:51,450 --> 00:19:53,820 In two dimensions, that is 2n minus 3. 325 00:19:53,820 --> 00:19:55,570 So this is telling us something we already 326 00:19:55,570 --> 00:19:59,060 knew, but essentially for free, which is kind of fun, 327 00:19:59,060 --> 00:20:00,560 if you know all this linear algebra. 328 00:20:00,560 --> 00:20:03,260 Which admittedly, even if you've learned linear algebra, that 329 00:20:03,260 --> 00:20:05,920 may not be the first thing you care about in that context, 330 00:20:05,920 --> 00:20:10,180 but for rigidity, this is a really useful way 331 00:20:10,180 --> 00:20:11,730 of thinking about things. 332 00:20:11,730 --> 00:20:13,954 You've got all these columns-- d times n of them. 333 00:20:13,954 --> 00:20:16,370 You want to obliterate all the degrees of freedom you can, 334 00:20:16,370 --> 00:20:19,650 and leave just three of them in two dimensions-- 335 00:20:19,650 --> 00:20:22,140 d times d plus 1 over 2 in d dimensions, 336 00:20:22,140 --> 00:20:24,320 and you do that by adding useful edges. 337 00:20:24,320 --> 00:20:26,600 And useful edges here means that the rank is high, 338 00:20:26,600 --> 00:20:29,940 which essentially means none of the rows in this matrix 339 00:20:29,940 --> 00:20:32,030 cancel out with each other. 340 00:20:32,030 --> 00:20:34,240 So it's another way of thinking about essentially 341 00:20:34,240 --> 00:20:35,530 everything we've seen. 342 00:20:35,530 --> 00:20:37,363 And if you know linear algebra, it's useful. 343 00:20:37,363 --> 00:20:40,120 Otherwise, I'll tell you how we can use it. 344 00:20:45,840 --> 00:20:50,390 OK, one mathematical thing we can do 345 00:20:50,390 --> 00:20:52,980 is give another definition of a generic point set. 346 00:20:56,120 --> 00:20:58,300 Last class we talked about one definition 347 00:20:58,300 --> 00:21:00,400 of generic, which was that you forbid 348 00:21:00,400 --> 00:21:07,630 all non-trivial polynomial or algebraic rational equations 349 00:21:07,630 --> 00:21:12,180 on your points, which is very messy and infinite and hard 350 00:21:12,180 --> 00:21:13,230 to think about. 351 00:21:13,230 --> 00:21:15,500 This definition will be easy to think about 352 00:21:15,500 --> 00:21:17,520 if you're used to linear algebra. 353 00:21:17,520 --> 00:21:20,080 So for some, it's an improvement. 354 00:21:20,080 --> 00:21:23,950 For others, it might be the reverse-- whatever. 355 00:21:32,260 --> 00:21:34,700 But at least this definition is finite, which I like. 356 00:22:27,025 --> 00:22:29,275 OK, for this definition we need the notion of a minor. 357 00:22:32,280 --> 00:22:34,130 So we have some matrix. 358 00:22:34,130 --> 00:22:37,650 Actually, our matrices are pretty rectangular. 359 00:22:37,650 --> 00:22:41,870 And I just choose, let's say k columns from the matrix-- 360 00:22:41,870 --> 00:22:47,990 let's say 3, and I choose k rows-- 361 00:22:47,990 --> 00:22:49,960 the same number of rows and columns. 362 00:22:49,960 --> 00:22:53,490 I look at those elements in the intersection. 363 00:22:53,490 --> 00:22:54,605 That's a square matrix. 364 00:22:57,140 --> 00:23:01,150 That's a minor-- that 3 by 3 square submatrix 365 00:23:01,150 --> 00:23:02,620 is called a minor. 366 00:23:02,620 --> 00:23:04,274 So there's a whole bunch of minors, 367 00:23:04,274 --> 00:23:05,440 but it's only finitely many. 368 00:23:05,440 --> 00:23:07,140 It's exponential. 369 00:23:07,140 --> 00:23:09,920 It's not easy to check. 370 00:23:09,920 --> 00:23:13,280 You take all the minors of your rigidity matrix. 371 00:23:13,280 --> 00:23:15,030 And here I'm imagining the complete graph, 372 00:23:15,030 --> 00:23:16,350 so there's tons of edges. 373 00:23:16,350 --> 00:23:19,390 There's n choose two edges. 374 00:23:19,390 --> 00:23:20,900 So this'll be independent linkage. 375 00:23:20,900 --> 00:23:22,566 You could do it specific to the linkage, 376 00:23:22,566 --> 00:23:25,300 but it's better to do it for the complete graph. 377 00:23:25,300 --> 00:23:27,915 Then we take the determinant of that matrix, 378 00:23:27,915 --> 00:23:28,790 which I won't define. 379 00:23:28,790 --> 00:23:31,800 It's a number associated with that matrix. 380 00:23:31,800 --> 00:23:33,960 And if it's non-zero-- now remember, 381 00:23:33,960 --> 00:23:36,300 rigidity matrix is defined as a function 382 00:23:36,300 --> 00:23:39,570 of C. It depends where you put the vertices. 383 00:23:39,570 --> 00:23:43,070 So what I'm saying is if it's non-zero for some choice of C, 384 00:23:43,070 --> 00:23:46,360 then it should be non-zero for this choice of C. 385 00:23:46,360 --> 00:23:48,350 And if you find such a configuration 386 00:23:48,350 --> 00:23:51,440 C-- or I guess we call this a realization C-- 387 00:23:51,440 --> 00:23:53,470 then that C is generic. 388 00:23:53,470 --> 00:23:55,370 So if I gave you a specific configuration, 389 00:23:55,370 --> 00:23:57,535 you could, in principle, in finite time-- it 390 00:23:57,535 --> 00:24:00,270 won't be efficient-- you could check all of these things. 391 00:24:00,270 --> 00:24:02,940 And say, oh, I compute out, I work out 392 00:24:02,940 --> 00:24:06,980 what the determinant of that submatrix is, that minor. 393 00:24:06,980 --> 00:24:08,470 It's some algebraic function. 394 00:24:08,470 --> 00:24:10,060 If it doesn't cancel out entirely, 395 00:24:10,060 --> 00:24:13,190 if it's not zero trivially, it's not zero always, 396 00:24:13,190 --> 00:24:16,160 then I just evaluate it at this configuration. 397 00:24:16,160 --> 00:24:18,720 And if it's non-zero there, good. 398 00:24:18,720 --> 00:24:21,230 That's generic. 399 00:24:21,230 --> 00:24:25,920 So it's not useful in a computable way, 400 00:24:25,920 --> 00:24:27,171 but it's a definition. 401 00:24:27,171 --> 00:24:28,170 It's a little bit nicer. 402 00:24:32,970 --> 00:24:34,600 And now there's a bunch of fun facts 403 00:24:34,600 --> 00:24:44,740 about infinitesimal motions and rigidity, 404 00:24:44,740 --> 00:24:46,570 and the relation to the generic case. 405 00:24:54,610 --> 00:24:59,649 So there as we have before, this definition 406 00:24:59,649 --> 00:25:01,440 is not quite the same, but it's effectively 407 00:25:01,440 --> 00:25:03,000 the same as the last one. 408 00:25:03,000 --> 00:25:06,955 Almost every configuration is generic. 409 00:25:10,160 --> 00:25:15,200 So maybe I should say realization-- whatever. 410 00:25:15,200 --> 00:25:21,460 I take some point set-- I take some vertex set. 411 00:25:21,460 --> 00:25:24,310 I assign random points to each vertex. 412 00:25:24,310 --> 00:25:26,422 Then with probability 1, it will be generic 413 00:25:26,422 --> 00:25:27,630 according to this definition. 414 00:25:27,630 --> 00:25:30,280 That's really obvious if you know linear algebra. 415 00:25:30,280 --> 00:25:32,860 That's a good thing. 416 00:25:32,860 --> 00:25:35,880 But here's what's really cool-- if we 417 00:25:35,880 --> 00:25:38,610 take any of these generic configurations-- 418 00:25:38,610 --> 00:25:48,010 so just fix one-- rigidity is the same thing 419 00:25:48,010 --> 00:25:54,050 as infinitesimal rigidity, is the same thing 420 00:25:54,050 --> 00:25:56,130 as generic rigidity from last class. 421 00:26:00,620 --> 00:26:04,320 Wow, this is cool, because if I care 422 00:26:04,320 --> 00:26:07,210 about any one of these three things, 423 00:26:07,210 --> 00:26:10,270 I just have to pick my favorite generic point, which 424 00:26:10,270 --> 00:26:11,120 I can do randomly. 425 00:26:11,120 --> 00:26:13,530 I can just take a random point, and if I 426 00:26:13,530 --> 00:26:15,440 can evaluate any one of these three things, 427 00:26:15,440 --> 00:26:17,940 I learn about all the others. 428 00:26:17,940 --> 00:26:22,950 So if you want to tell whether a 3D graph is generically rigid, 429 00:26:22,950 --> 00:26:26,560 you take a random realization in 3D. 430 00:26:26,560 --> 00:26:28,920 You compute the rank of this matrix generalized 431 00:26:28,920 --> 00:26:30,880 to the 3D case. 432 00:26:30,880 --> 00:26:35,350 You see is it 3 n minus 6, and that will tell you 433 00:26:35,350 --> 00:26:40,390 whether that generic realization is infinitesimally rigid. 434 00:26:40,390 --> 00:26:45,100 And if you chose it right, which you will do at probability 1, 435 00:26:45,100 --> 00:26:47,850 then that will tell you whether the graph is generically rigid. 436 00:26:47,850 --> 00:26:51,020 So when I said last class generic rigidity in 3D is hard, 437 00:26:51,020 --> 00:26:53,890 it's hard in the sense we don't have a deterministic algorithm, 438 00:26:53,890 --> 00:26:55,840 but randomized-- super easy. 439 00:26:55,840 --> 00:26:57,735 Choose a random configuration, check 440 00:26:57,735 --> 00:26:59,360 the rank of the rigidity matrix-- done. 441 00:27:01,870 --> 00:27:03,580 So that's kind of cool. 442 00:27:03,580 --> 00:27:06,310 And that's why this infinitesimal rigidity stuff 443 00:27:06,310 --> 00:27:10,320 is so important, because it's so easy algorithmically. 444 00:27:10,320 --> 00:27:12,980 Things become a lot easier. 445 00:27:12,980 --> 00:27:16,600 Let me draw you one example just to show 446 00:27:16,600 --> 00:27:18,390 what happens at non-generic points. 447 00:27:18,390 --> 00:27:20,410 I've actually drawn this example before. 448 00:27:24,120 --> 00:27:25,370 So here's a non-generic point. 449 00:27:25,370 --> 00:27:27,164 These three points are collinear. 450 00:27:27,164 --> 00:27:28,830 And you can work out there is some minor 451 00:27:28,830 --> 00:27:31,479 that is 0, but shouldn't be. 452 00:27:31,479 --> 00:27:34,020 And this thing is rigid, because we have rigid triangle here. 453 00:27:34,020 --> 00:27:36,130 We have a rigid triangle here. 454 00:27:36,130 --> 00:27:38,730 So these two points are pinned relative to each other. 455 00:27:38,730 --> 00:27:41,330 And then this thing is taut, so it can't move. 456 00:27:41,330 --> 00:27:44,200 But to the first order, it can move. 457 00:27:44,200 --> 00:27:48,330 And it's allowed to move straight up or down-- 458 00:27:48,330 --> 00:27:51,049 anything perpendicular to this segment. 459 00:27:51,049 --> 00:27:51,840 That's always true. 460 00:27:51,840 --> 00:27:56,570 If you take a segment, and you move one vertex but not 461 00:27:56,570 --> 00:27:58,330 the other perpendicular to the segment, 462 00:27:58,330 --> 00:28:01,141 that's a valid infinitesimal motion. 463 00:28:01,141 --> 00:28:01,640 Why? 464 00:28:01,640 --> 00:28:05,180 Because if I project this onto the segment, I get 0. 465 00:28:05,180 --> 00:28:08,170 So this length is not changing to the first order. 466 00:28:08,170 --> 00:28:09,710 And this is really necessary. 467 00:28:09,710 --> 00:28:12,292 To the first order, you can't really distinguish this guy 468 00:28:12,292 --> 00:28:14,000 actually moving up, and therefore getting 469 00:28:14,000 --> 00:28:21,020 slightly longer versus this guy moving along a circle centered 470 00:28:21,020 --> 00:28:23,080 at that point, which is a valid motion. 471 00:28:23,080 --> 00:28:24,900 To the first order, they look the same, 472 00:28:24,900 --> 00:28:28,940 because you're going straight up or down in first derivative. 473 00:28:28,940 --> 00:28:31,780 OK, here, to the first order, you 474 00:28:31,780 --> 00:28:33,489 can't realize the fact that if you're 475 00:28:33,489 --> 00:28:35,030 going to go on this circle and you're 476 00:28:35,030 --> 00:28:37,880 going to go on this circle, you get a contradiction. 477 00:28:37,880 --> 00:28:39,420 But it's pretty accurate. 478 00:28:39,420 --> 00:28:42,240 And if you perturb this example, infinitesimal rigidity 479 00:28:42,240 --> 00:28:43,700 will give you the right answer. 480 00:28:43,700 --> 00:28:46,250 This is an example where infinitesimal rigidity is 481 00:28:46,250 --> 00:28:52,379 a little bit weaker than-- no, infinitesimal flexibility 482 00:28:52,379 --> 00:28:54,795 having infinitesimal motion is a little weaker than having 483 00:28:54,795 --> 00:28:59,171 a motion, but the reverse holds. 484 00:28:59,171 --> 00:29:01,670 If there's a motion, there's always an infinitesimal motion. 485 00:29:01,670 --> 00:29:04,300 If you're infinitesimally rigid, you're always rigid. 486 00:29:04,300 --> 00:29:08,170 That example is rigid, but not infinitesimally rigid, 487 00:29:08,170 --> 00:29:11,440 so it's sort of strict. 488 00:29:11,440 --> 00:29:13,754 OK so far? 489 00:29:13,754 --> 00:29:15,670 That's the more technical part of the lecture. 490 00:29:18,200 --> 00:29:19,090 Question? 491 00:29:19,090 --> 00:29:21,970 STUDENT: Will [INAUDIBLE] be square matricies? 492 00:29:21,970 --> 00:29:24,890 PROFESSOR: The rigidity matrices are almost never square. 493 00:29:24,890 --> 00:29:26,334 Good question. 494 00:29:26,334 --> 00:29:27,750 The minors are going to be square, 495 00:29:27,750 --> 00:29:29,380 because we told them to be. 496 00:29:29,380 --> 00:29:33,700 But I think typically, in the ideal setting, 497 00:29:33,700 --> 00:29:35,500 we're going to have d n columns-- 498 00:29:35,500 --> 00:29:39,990 so let's say 2 times n columns in two dimensions. 499 00:29:39,990 --> 00:29:44,060 And we're supposed to have 2n minus 3 rows. 500 00:29:44,060 --> 00:29:46,120 So it's close, but in general, they 501 00:29:46,120 --> 00:29:49,070 should differ by about this much. 502 00:29:49,070 --> 00:29:51,970 So they're almost square, actually. 503 00:29:51,970 --> 00:29:53,750 Glad you asked. 504 00:29:53,750 --> 00:29:55,125 STUDENT: You can add [INAUDIBLE]. 505 00:29:57,599 --> 00:29:59,390 PROFESSOR: You could always add extra edges 506 00:29:59,390 --> 00:30:00,456 and make it square, yeah. 507 00:30:00,456 --> 00:30:02,080 STUDENT: [INAUDIBLE]. 508 00:30:02,080 --> 00:30:04,190 PROFESSOR: Well, no. 509 00:30:04,190 --> 00:30:06,630 So that's another good question. 510 00:30:06,630 --> 00:30:09,360 What happens if I add more edges than this many? 511 00:30:09,360 --> 00:30:11,470 The rank just won't go up. 512 00:30:11,470 --> 00:30:14,970 Any edges you add will add redundant constraints, 513 00:30:14,970 --> 00:30:18,542 and so the rank can never go above this value. 514 00:30:18,542 --> 00:30:20,500 You need at least this many edges to get there, 515 00:30:20,500 --> 00:30:22,650 and we know we can get there with that many edges, 516 00:30:22,650 --> 00:30:26,190 but only in the minimal rigid case. 517 00:30:26,190 --> 00:30:27,350 You could add more edges. 518 00:30:27,350 --> 00:30:30,410 You could make it a super-tall matrix if you want, 519 00:30:30,410 --> 00:30:34,110 but you're not going to increase the rank. 520 00:30:34,110 --> 00:30:39,010 All right, let's use this for something more fun. 521 00:30:39,010 --> 00:30:46,250 So maybe go over here. 522 00:30:52,569 --> 00:30:54,318 I don't need the rigidity matrix any more. 523 00:31:12,900 --> 00:31:19,500 Tensegrity-- so this is in some sense 524 00:31:19,500 --> 00:31:24,620 an extension of rigidity theory to a whole other theory 525 00:31:24,620 --> 00:31:25,870 called tensegrity theory. 526 00:31:28,390 --> 00:31:32,210 The word tensegrity comes from tensional integrity, which 527 00:31:32,210 --> 00:31:35,226 is a very Buckminster Fuller term, and he invented it. 528 00:31:35,226 --> 00:31:36,850 I don't think he invented tensegrities, 529 00:31:36,850 --> 00:31:40,330 but he invented the word. 530 00:31:40,330 --> 00:31:45,540 And they are things like this-- here's 531 00:31:45,540 --> 00:31:49,760 a tensegrity built and given to me by Bob Connolly. 532 00:31:49,760 --> 00:31:52,570 And it has well, I guess, there are 533 00:31:52,570 --> 00:31:55,550 three kinds of edges physically. 534 00:31:55,550 --> 00:31:57,380 There are the springs. 535 00:31:57,380 --> 00:32:03,650 There are these struts, and there are these wire cables. 536 00:32:03,650 --> 00:32:06,070 And its rigid. 537 00:32:06,070 --> 00:32:08,070 It's a little flexible, just because the springs 538 00:32:08,070 --> 00:32:12,090 aren't perfectly stiff, like all springs. 539 00:32:12,090 --> 00:32:13,770 But there are three kinds of edges here, 540 00:32:13,770 --> 00:32:15,853 and we're going to model the three kinds of edges. 541 00:32:15,853 --> 00:32:17,640 The edges that we've modeled so far 542 00:32:17,640 --> 00:32:20,350 are most closely related to these springs, 543 00:32:20,350 --> 00:32:22,820 so that's not quite the right physical analogy. 544 00:32:22,820 --> 00:32:26,480 What I would call the edges and linkages is bars. 545 00:32:26,480 --> 00:32:30,020 Bars are, like, solid attachments, 546 00:32:30,020 --> 00:32:32,070 like steel rods that are permanently 547 00:32:32,070 --> 00:32:34,180 attached to the two endpoints. 548 00:32:34,180 --> 00:32:37,140 The lengths of these edges should never change. 549 00:32:37,140 --> 00:32:40,060 That's been the world we live in, at least 550 00:32:40,060 --> 00:32:41,630 to the first order, whatever. 551 00:32:41,630 --> 00:32:44,100 Edge lengths of bars should never change. 552 00:32:44,100 --> 00:32:45,470 Now we have these cables. 553 00:32:45,470 --> 00:32:48,710 Now cables really can get shorter. 554 00:32:48,710 --> 00:32:51,190 This cable is perfectly happy to get shorter. 555 00:32:51,190 --> 00:32:54,195 I can pull those two vertices together. 556 00:32:54,195 --> 00:32:55,820 But what it prevents is getting longer. 557 00:32:55,820 --> 00:32:57,930 If I pull-- you can't tell, but I'm 558 00:32:57,930 --> 00:33:00,740 pulling really hard on these vertices apart. 559 00:33:00,740 --> 00:33:03,860 Nothing happens, because this cable can't get any longer. 560 00:33:03,860 --> 00:33:06,850 So cables prevent extension, but they do not 561 00:33:06,850 --> 00:33:08,310 prevent compression. 562 00:33:08,310 --> 00:33:10,942 Struts, on the other hand-- they prevent compression. 563 00:33:10,942 --> 00:33:13,400 If I push on these two vertices, they don't get any closer. 564 00:33:13,400 --> 00:33:15,900 If I pull, it comes right out. 565 00:33:15,900 --> 00:33:19,910 And you have to realize that these are eye hooks, 566 00:33:19,910 --> 00:33:22,010 and so really, those could come apart. 567 00:33:22,010 --> 00:33:25,160 All these struts are preventing is compression. 568 00:33:25,160 --> 00:33:27,010 They don't prevent expansion. 569 00:33:27,010 --> 00:33:30,150 So that's the thing we want to model. 570 00:33:32,920 --> 00:33:34,800 This is a tensegrity. 571 00:33:34,800 --> 00:33:39,580 It's a generalization of a linkage 572 00:33:39,580 --> 00:33:42,545 and where we allow three kinds of edges. 573 00:33:46,950 --> 00:33:54,540 It can be a bar-- and this is the old case, 574 00:33:54,540 --> 00:33:56,005 which is that the length is fixed. 575 00:34:00,150 --> 00:34:08,318 We can have cables, which is the length can decrease, 576 00:34:08,318 --> 00:34:09,234 but it can't increase. 577 00:34:14,889 --> 00:34:18,809 And there are struts, which are the reverse-- 578 00:34:18,809 --> 00:34:22,224 you can increase but not decrease. 579 00:34:28,750 --> 00:34:30,250 Seems like a useful generalization, 580 00:34:30,250 --> 00:34:32,389 especially because people build things 581 00:34:32,389 --> 00:34:34,780 they actually use struts and cables. 582 00:34:34,780 --> 00:34:37,710 Like you look at most bridges-- tons of cables around. 583 00:34:37,710 --> 00:34:41,989 I think I have an example here. 584 00:34:41,989 --> 00:34:44,570 There's this guy, Ken Snelson, who 585 00:34:44,570 --> 00:34:47,940 makes a whole bunch of cool tensegrity sculptures. 586 00:34:47,940 --> 00:34:50,800 This is a particularly tall one in Washington, DC 587 00:34:50,800 --> 00:34:53,620 that I saw a couple years ago. 588 00:34:53,620 --> 00:34:55,815 That's to give you an idea of height. 589 00:34:55,815 --> 00:34:57,190 And there's this really cool view 590 00:34:57,190 --> 00:34:59,230 if you stand-- here's a person. 591 00:34:59,230 --> 00:35:02,100 You stand in the center, and you look up. 592 00:35:02,100 --> 00:35:06,250 It has this really cool, sixfold rotational 593 00:35:06,250 --> 00:35:08,700 reflectional symmetry. 594 00:35:08,700 --> 00:35:10,130 I could stare at this for hours. 595 00:35:10,130 --> 00:35:12,940 I think that's just the [? zoom ?]. 596 00:35:12,940 --> 00:35:16,250 So we want to understand those structures. 597 00:35:16,250 --> 00:35:17,970 This one's also rigid, hopefully. 598 00:35:17,970 --> 00:35:22,320 It's been standing for 40 years. 599 00:35:22,320 --> 00:35:25,500 So what can we define in this generalized setting 600 00:35:25,500 --> 00:35:27,060 of tensegrity? 601 00:35:27,060 --> 00:35:28,210 We want motions. 602 00:35:28,210 --> 00:35:29,700 We want rigidity. 603 00:35:29,700 --> 00:35:31,790 We want generic rigidity. 604 00:35:31,790 --> 00:35:33,260 We want infinitesimal rigidity. 605 00:35:33,260 --> 00:35:34,910 All the good things we've defined, 606 00:35:34,910 --> 00:35:36,870 hopefully, carry over to this. 607 00:35:36,870 --> 00:35:38,790 Well, all but one of them carry over to this. 608 00:35:48,930 --> 00:35:51,470 OK, we can define a configuration space. 609 00:35:51,470 --> 00:35:54,820 It's going to be a little smaller, or a little different 610 00:35:54,820 --> 00:35:57,855 from our old configuration space. 611 00:35:57,855 --> 00:36:00,180 It's a space of all possible configurations where 612 00:36:00,180 --> 00:36:02,810 these three things hold-- give you 613 00:36:02,810 --> 00:36:04,630 desired lengths for each of these things. 614 00:36:04,630 --> 00:36:06,460 As long as these constraints hold, 615 00:36:06,460 --> 00:36:08,460 that the lengths stay the same here, get smaller 616 00:36:08,460 --> 00:36:11,542 here or the same, or stay the same or get larger here-- 617 00:36:11,542 --> 00:36:12,750 that's a valid configuration. 618 00:36:12,750 --> 00:36:14,710 So it's actually a slightly larger configuration space 619 00:36:14,710 --> 00:36:15,474 than what we had. 620 00:36:15,474 --> 00:36:16,890 A path through that space is going 621 00:36:16,890 --> 00:36:19,300 to be a motion, just like before. 622 00:36:19,300 --> 00:36:23,170 Configuration is just a bunch of points 623 00:36:23,170 --> 00:36:27,050 where this holds-- blah, blah, blah. 624 00:36:27,050 --> 00:36:31,275 The problem is, there's no notion of generic rigidity. 625 00:36:39,560 --> 00:36:53,100 For example, this is a generically flexible linkage. 626 00:36:53,100 --> 00:36:54,798 We all know it. 627 00:36:59,190 --> 00:37:02,125 Now I take my yellow chalk and add struts. 628 00:37:05,400 --> 00:37:08,880 Maybe I'll put some arrows on it to make it more obvious. 629 00:37:08,880 --> 00:37:14,675 These are things they can expand, but cannot contract. 630 00:37:17,280 --> 00:37:21,770 Then this configuration is rigid or flexible? 631 00:37:24,770 --> 00:37:28,727 Flexible, yeah-- this is a one degree of freedom linkage. 632 00:37:28,727 --> 00:37:30,810 The white part is a one degree of freedom linkage, 633 00:37:30,810 --> 00:37:34,100 and if you move this thing in a particular direction, 634 00:37:34,100 --> 00:37:38,710 indeed, this increases and that increases. 635 00:37:38,710 --> 00:37:39,770 Check it. 636 00:37:39,770 --> 00:37:42,000 This one is rigid. 637 00:37:42,000 --> 00:37:44,360 The only way to move the square-- or in fact, 638 00:37:44,360 --> 00:37:47,150 any generic convex configuration-- 639 00:37:47,150 --> 00:37:50,444 is one of these pairs has to get shorter. 640 00:37:50,444 --> 00:37:52,360 The other one will get longer, but one of them 641 00:37:52,360 --> 00:37:54,850 will get shorter. 642 00:37:54,850 --> 00:38:00,000 So this is the same graph, and the same labeling 643 00:38:00,000 --> 00:38:02,376 of which edges are bars and which are struts, 644 00:38:02,376 --> 00:38:04,000 but in one configuration it's flexible. 645 00:38:04,000 --> 00:38:04,875 The other it's rigid. 646 00:38:04,875 --> 00:38:06,550 So we lose generic rigidity. 647 00:38:06,550 --> 00:38:09,120 But infinitesimal rigidity still works, 648 00:38:09,120 --> 00:38:11,840 and generic configurations are still meaningful. 649 00:38:11,840 --> 00:38:14,210 It's just that they're not all the same. 650 00:38:14,210 --> 00:38:16,110 There's not, in this case, for four vertices, 651 00:38:16,110 --> 00:38:19,000 there's two kinds of generic configurations. 652 00:38:19,000 --> 00:38:21,250 So it makes life a little harder. 653 00:38:21,250 --> 00:38:26,050 But let's say this part will work well. 654 00:38:26,050 --> 00:38:31,661 So why don't I be clever, erase this part. 655 00:38:38,880 --> 00:38:41,415 So this is the idea of an infinitesimal motion. 656 00:38:45,914 --> 00:38:46,580 of a tensegrity. 657 00:38:54,640 --> 00:38:57,380 Well, I want to take the same dot product, 658 00:38:57,380 --> 00:38:59,860 and I claim this is really measuring-- it's a number, 659 00:38:59,860 --> 00:39:03,964 and it's measuring the sign's change in length of that edge. 660 00:39:03,964 --> 00:39:11,290 So if C of v minus C of w dot product 661 00:39:11,290 --> 00:39:17,980 with d of v minus d of w is greater than or equal to 0, 662 00:39:17,980 --> 00:39:20,990 that's the property I want for struts. 663 00:39:20,990 --> 00:39:22,740 That says it gets longer or stays 664 00:39:22,740 --> 00:39:24,987 the same to the first order. 665 00:39:24,987 --> 00:39:27,320 Now of course, in reality it might get slightly shorter, 666 00:39:27,320 --> 00:39:29,970 but not in the first derivative. 667 00:39:29,970 --> 00:39:36,250 And it should be less than or equal to 0 for cables, 668 00:39:36,250 --> 00:39:39,760 and should be equal to 0 for bars. 669 00:39:43,380 --> 00:39:45,450 So that's the new notion of infinitesimal motion. 670 00:39:45,450 --> 00:39:50,920 Now, this is no longer a linear system of linear equations. 671 00:39:50,920 --> 00:39:55,600 I can no longer write this as a matrix times a vector equals 0. 672 00:39:55,600 --> 00:39:57,420 But this is this more general thing 673 00:39:57,420 --> 00:40:03,480 called a linear program, where I have linear equations. 674 00:40:03,480 --> 00:40:06,020 I also have linear inequalities. 675 00:40:06,020 --> 00:40:09,420 So in fact, I can write it as some other matrix R prime. 676 00:40:09,420 --> 00:40:12,000 Actually, it's the same matrix. 677 00:40:12,000 --> 00:40:19,220 R prime times d is greater than or equal to 0. 678 00:40:19,220 --> 00:40:21,670 This is the general form of a linear program. 679 00:40:21,670 --> 00:40:24,780 And you can write an equality constraint in this world 680 00:40:24,780 --> 00:40:26,799 just by taking it and its negation, 681 00:40:26,799 --> 00:40:28,590 setting both of them greater or equal to 0. 682 00:40:28,590 --> 00:40:31,960 That forces them to be equal to zero. 683 00:40:31,960 --> 00:40:34,110 All you need to know is it there are fast 684 00:40:34,110 --> 00:40:36,190 algorithms to solve this, also. 685 00:40:36,190 --> 00:40:39,300 So if I give you a tensegrity in polynomial time, 686 00:40:39,300 --> 00:40:47,360 you can tell whether there is a valid infinitesimal motion that 687 00:40:47,360 --> 00:40:50,070 does all things you want on the struts, cables, and bars. 688 00:40:55,030 --> 00:40:57,410 Cool, questions? 689 00:40:57,410 --> 00:40:59,410 STUDENT: [INAUDIBLE] 690 00:40:59,410 --> 00:41:01,500 PROFESSOR: This R-- this is some matrix, 691 00:41:01,500 --> 00:41:04,665 and this is your vector of all the d's. 692 00:41:04,665 --> 00:41:05,290 STUDENT: Right. 693 00:41:05,290 --> 00:41:09,780 And saying that it's greater than or equal to 0 [INAUDIBLE]. 694 00:41:09,780 --> 00:41:11,850 PROFESSOR: Oh, that means element lines, sorry. 695 00:41:11,850 --> 00:41:13,225 You take a matrix times a vector. 696 00:41:13,225 --> 00:41:14,290 You get a big vector. 697 00:41:14,290 --> 00:41:15,450 This is a vector of zeroes. 698 00:41:15,450 --> 00:41:16,300 I should have said that. 699 00:41:16,300 --> 00:41:18,300 And it's just saying every element in the vector 700 00:41:18,300 --> 00:41:21,480 is greater than or equal to zero. 701 00:41:21,480 --> 00:41:25,840 So it's just a fancy way of rewriting this stuff again. 702 00:41:25,840 --> 00:41:28,390 But this is what we call linear programs, 703 00:41:28,390 --> 00:41:29,914 and that's what's solvable. 704 00:41:29,914 --> 00:41:32,640 STUDENT: And that's just for struts, then? 705 00:41:32,640 --> 00:41:34,440 PROFESSOR: Well, for cables you could just 706 00:41:34,440 --> 00:41:35,964 negate the left-hand side. 707 00:41:35,964 --> 00:41:37,880 And then that's greater than or equal to zero. 708 00:41:37,880 --> 00:41:40,600 For bars you have to include the same left-hand side 709 00:41:40,600 --> 00:41:42,290 and its negation. 710 00:41:42,290 --> 00:41:44,650 Yeah, I'm skipping some steps. 711 00:41:44,650 --> 00:41:46,355 That's why I had to write R prime-- 712 00:41:46,355 --> 00:41:47,605 it changes a little bit. 713 00:41:51,910 --> 00:41:54,670 How many people know about linear programming? 714 00:41:54,670 --> 00:41:58,640 OK, about 2/3, so for you guys, you also 715 00:41:58,640 --> 00:42:01,020 know that there's this thing called linear programming 716 00:42:01,020 --> 00:42:03,490 duality. 717 00:42:03,490 --> 00:42:05,740 If you have a linear program, the first thing everyone 718 00:42:05,740 --> 00:42:08,260 should do when they have a linear program is take the dual 719 00:42:08,260 --> 00:42:09,330 and see what you get. 720 00:42:09,330 --> 00:42:11,250 I'm just going to tell you what you get. 721 00:42:15,020 --> 00:42:17,650 But that's the next trick I want to pull. 722 00:42:21,440 --> 00:42:26,870 So dual notion-- essentially what prevents you 723 00:42:26,870 --> 00:42:30,580 from solving that system-- in other words, what 724 00:42:30,580 --> 00:42:32,980 makes something rigid-- is something 725 00:42:32,980 --> 00:42:34,530 called equilibrium stress. 726 00:42:40,410 --> 00:42:44,440 So stress, for me, is just a real number 727 00:42:44,440 --> 00:42:45,864 assigned to every edge. 728 00:42:45,864 --> 00:42:47,280 And here I'm going to use the word 729 00:42:47,280 --> 00:42:49,460 edge to mean bar, strut, or cable. 730 00:42:52,550 --> 00:43:02,930 So a real number s of e for each edge e, 731 00:43:02,930 --> 00:43:06,060 and have to have three properties. 732 00:43:11,020 --> 00:43:21,610 If I have a cable, then that number should be non-negative. 733 00:43:21,610 --> 00:43:24,960 If I have a strut, it should be non-positive. 734 00:43:29,870 --> 00:43:32,620 If I have a bar, I don't care-- could be positive, or negative, 735 00:43:32,620 --> 00:43:34,510 or zero. 736 00:43:34,510 --> 00:43:37,310 And then there's the equilibrium condition, 737 00:43:37,310 --> 00:43:44,320 which is that if I take the sum over all vertices w, where 738 00:43:44,320 --> 00:43:55,030 v w is an edge, the weighted vector 739 00:43:55,030 --> 00:43:57,595 C of v minus C of w-- so I forgot 740 00:43:57,595 --> 00:43:58,970 to mention we're assuming we have 741 00:43:58,970 --> 00:44:03,600 some configuration of our tensegrity. 742 00:44:03,600 --> 00:44:08,190 This is the zero vector for all vertices 743 00:44:08,190 --> 00:44:11,940 v. Let me draw a picture. 744 00:44:21,100 --> 00:44:22,930 I'll draw a real example, how's that? 745 00:44:31,530 --> 00:44:36,340 Here's a rigid linkage. 746 00:44:36,340 --> 00:44:39,610 I'm not going to say yet which edges are struts and cables. 747 00:44:39,610 --> 00:44:42,310 In some sense, I can do that later. 748 00:44:42,310 --> 00:44:47,420 And I'm going to put numbers 1 along all the outside edges 749 00:44:47,420 --> 00:44:53,430 and the numbers 3 along all the inside edges-- sorry, 750 00:44:53,430 --> 00:44:59,720 negative 1 and positive 3. 751 00:44:59,720 --> 00:45:03,240 And then if you work out what this is saying, 752 00:45:03,240 --> 00:45:05,690 I'm taking the vectors-- so I'm looking 753 00:45:05,690 --> 00:45:09,120 at each vertex like this one, and saying OK, well, I 754 00:45:09,120 --> 00:45:14,270 take all of the incoming, whatever. 755 00:45:14,270 --> 00:45:19,450 Let's think of all the edges incident to that vertex. 756 00:45:19,450 --> 00:45:20,945 I weight them by this number. 757 00:45:20,945 --> 00:45:23,164 In this case, they're all multiplied by 3. 758 00:45:23,164 --> 00:45:24,080 So I take this vector. 759 00:45:24,080 --> 00:45:25,050 I multiply it by 3. 760 00:45:25,050 --> 00:45:26,430 It gets three times as long. 761 00:45:26,430 --> 00:45:29,040 Take this vector, multiply by 3, this vector multiplied by 3. 762 00:45:29,040 --> 00:45:29,920 I add them up. 763 00:45:29,920 --> 00:45:31,344 I should get the zero vector. 764 00:45:31,344 --> 00:45:33,260 And if this is really an equilateral triangle, 765 00:45:33,260 --> 00:45:36,150 I will get the zero vector, so that's good. 766 00:45:36,150 --> 00:45:39,540 And I'm going to draw arrows here 767 00:45:39,540 --> 00:45:43,330 to signify what this means intuitively 768 00:45:43,330 --> 00:45:47,480 is that this edge is pushing with a really big arrow. 769 00:45:47,480 --> 00:45:48,950 This is an arrowhead of size 3. 770 00:45:51,900 --> 00:45:54,270 Try to draw it to scale. 771 00:45:54,270 --> 00:45:55,840 Then, of course, this vertex will not 772 00:45:55,840 --> 00:45:58,470 move subject to those forces. 773 00:45:58,470 --> 00:46:00,610 These forces balance out. 774 00:46:00,610 --> 00:46:02,630 On the other hand, this guy, I have 775 00:46:02,630 --> 00:46:04,760 these edges of weight negative 1. 776 00:46:04,760 --> 00:46:07,550 That means it's going to pull, and it's 777 00:46:07,550 --> 00:46:10,280 going to pull with the arrowhead of size 1. 778 00:46:22,770 --> 00:46:27,860 OK, and I claim also that these vertices do not 779 00:46:27,860 --> 00:46:30,390 move subject to those three forces. 780 00:46:30,390 --> 00:46:31,750 How do you check that? 781 00:46:31,750 --> 00:46:33,330 The proper way to check it is to draw 782 00:46:33,330 --> 00:46:34,590 what's called a force polygon. 783 00:46:34,590 --> 00:46:37,470 Those who have done structural engineering know this. 784 00:46:37,470 --> 00:46:41,860 So I take, let's see, there's this vector, which is length 785 00:46:41,860 --> 00:46:45,630 3 times that, so it would be something like that long. 786 00:46:45,630 --> 00:46:50,960 And let's say I'm pushing in that direction, so I go there. 787 00:46:50,960 --> 00:46:55,290 Then I follow this thing with the weight of 1, 788 00:46:55,290 --> 00:46:56,910 but in sort of the opposite direction, 789 00:46:56,910 --> 00:46:59,720 so it will be like this. 790 00:46:59,720 --> 00:47:02,010 This is my attempt at copying that edge length 791 00:47:02,010 --> 00:47:03,520 and getting what I want. 792 00:47:03,520 --> 00:47:05,690 And then the other force is this one. 793 00:47:05,690 --> 00:47:08,780 It doesn't actually matter which order I do these in. 794 00:47:08,780 --> 00:47:10,930 And if I end up back where I started, 795 00:47:10,930 --> 00:47:15,041 that means the total force is 0 as a vector, 796 00:47:15,041 --> 00:47:16,415 and so this vertex is stationary. 797 00:47:19,110 --> 00:47:22,270 That's the force polygon. 798 00:47:22,270 --> 00:47:23,400 So you can just check this. 799 00:47:23,400 --> 00:47:26,589 It's a geometric condition, if you will, 800 00:47:26,589 --> 00:47:27,880 that each vertex is stationary. 801 00:47:27,880 --> 00:47:30,550 That is the notion of being in equilibrium. 802 00:47:30,550 --> 00:47:33,360 And this is just the algebra to write that down. 803 00:47:33,360 --> 00:47:36,640 Now what the heck does this thing mean intuitively? 804 00:47:36,640 --> 00:47:41,870 If your tensegrity is going to be rigid, 805 00:47:41,870 --> 00:47:48,100 somehow the edges can prevent a motion. 806 00:47:48,100 --> 00:47:50,135 And intuitively, what that means-- 807 00:47:50,135 --> 00:47:56,320 I'm going to say this right-- so this is like an edge pushing 808 00:47:56,320 --> 00:48:02,620 really hard away from itself, against the vertices. 809 00:48:02,620 --> 00:48:04,490 That's like a strut. 810 00:48:04,490 --> 00:48:06,680 A strut prevents compression. 811 00:48:06,680 --> 00:48:09,740 So that the force that it can actuate effectively 812 00:48:09,740 --> 00:48:12,240 is an outward force. 813 00:48:12,240 --> 00:48:15,070 Whereas cables prevent extension, 814 00:48:15,070 --> 00:48:17,530 so they can sort of pull back, say, no, 815 00:48:17,530 --> 00:48:19,070 you can't get any longer. 816 00:48:19,070 --> 00:48:21,280 I'm going to pull towards me. 817 00:48:21,280 --> 00:48:22,820 So this is like a cable. 818 00:48:22,820 --> 00:48:24,290 This is like a strut. 819 00:48:24,290 --> 00:48:25,680 Now bars can do both. 820 00:48:25,680 --> 00:48:28,170 That's why there's no constraint on bars. 821 00:48:28,170 --> 00:48:30,635 But assuming I've got this right-- and I didn't. 822 00:48:30,635 --> 00:48:32,050 I got it backwards. 823 00:48:34,560 --> 00:48:41,660 Minus 3 plus 1-- it's symmetric so it doesn't matter 824 00:48:41,660 --> 00:48:47,440 in some sense, but the intuition matches when cables can pull, 825 00:48:47,440 --> 00:48:55,350 and struts can push, and bars can do both, 826 00:48:55,350 --> 00:48:58,340 because they prevent motion in both directions. 827 00:48:58,340 --> 00:49:00,679 All right, now, it would be nice to say you're rigid if 828 00:49:00,679 --> 00:49:02,470 and only if you have an equilibrium stress. 829 00:49:02,470 --> 00:49:03,732 But that's not true. 830 00:49:03,732 --> 00:49:04,940 Let me tell you what is true. 831 00:49:21,040 --> 00:49:21,920 So this is duality. 832 00:49:24,870 --> 00:49:32,850 This goes back to Roth and Whiteley, 1981-- good year. 833 00:49:32,850 --> 00:49:42,770 So let's see, here's what's true-- 834 00:49:42,770 --> 00:49:46,270 if I look at all the equilibrium stresses, 835 00:49:46,270 --> 00:49:54,810 and I find some stress that is non-zero 836 00:49:54,810 --> 00:50:00,980 on a particular structure or cable-- I should mention 837 00:50:00,980 --> 00:50:02,720 there's always a trivial stress, which 838 00:50:02,720 --> 00:50:05,520 is you set all of these S's to zero. 839 00:50:05,520 --> 00:50:07,410 Then everything will hold. 840 00:50:07,410 --> 00:50:10,787 So what we're interested in are nontrivial stresses, 841 00:50:10,787 --> 00:50:13,120 where you're nonzero somewhere, and the interesting case 842 00:50:13,120 --> 00:50:18,750 is when you're nonzero on some strut or cable, let's say. 843 00:50:18,750 --> 00:50:21,690 So if there is such an equilibrium stress, 844 00:50:21,690 --> 00:50:24,960 then it's not quite the case that you're rigid, 845 00:50:24,960 --> 00:50:26,445 but you're rigid on that edge. 846 00:50:29,410 --> 00:50:39,460 Every infinitesimal motion holds the length of that edge fixed. 847 00:50:43,160 --> 00:50:44,920 So this is a strut or a cable. 848 00:50:44,920 --> 00:50:46,980 It could get longer or it could get smaller, 849 00:50:46,980 --> 00:50:48,396 depending which case we're in. 850 00:50:48,396 --> 00:50:50,770 But if there's a stress that's nonzero on that edge, then 851 00:50:50,770 --> 00:50:52,480 in fact, it can't change length at all. 852 00:50:52,480 --> 00:50:55,860 It effectively acts like a bar in this configuration. 853 00:50:55,860 --> 00:50:57,110 That's what this theorem says. 854 00:50:57,110 --> 00:50:58,194 And these are equivalent. 855 00:50:58,194 --> 00:50:59,610 If you want to know can I possibly 856 00:50:59,610 --> 00:51:01,290 make the strut any longer? 857 00:51:01,290 --> 00:51:03,224 You just see can I find an equilibrium stress 858 00:51:03,224 --> 00:51:04,515 for that thing that's non-zero? 859 00:51:07,070 --> 00:51:11,420 Another thing you can say-- almost equivalent to this 860 00:51:11,420 --> 00:51:15,730 or a consequence of that-- if I have some tensegrity, 861 00:51:15,730 --> 00:51:21,920 and I want to know is it infinitesimally rigid, 862 00:51:21,920 --> 00:51:26,450 that is the case if and only if two conditions hold. 863 00:51:26,450 --> 00:51:35,400 One is that every strut or cable is nonzero 864 00:51:35,400 --> 00:51:48,400 in some stress-- in some equilibrium stress-- 865 00:51:48,400 --> 00:52:03,740 and I'll say the corresponding linkage is rigid. 866 00:52:07,430 --> 00:52:10,320 So all this is saying is if you can find a stress that 867 00:52:10,320 --> 00:52:13,434 is nonzero on every particular strut or cable, 868 00:52:13,434 --> 00:52:15,350 then all of those things are effectively bars. 869 00:52:15,350 --> 00:52:18,380 So you can convert your tensegrity into a linkage 870 00:52:18,380 --> 00:52:19,957 where all the edges are bars. 871 00:52:19,957 --> 00:52:21,540 And then it's just a matter of testing 872 00:52:21,540 --> 00:52:24,640 rigidity or infinitesimal rigidity of that linkage, which 873 00:52:24,640 --> 00:52:27,710 is something we already know how to do. 874 00:52:27,710 --> 00:52:31,620 So in some sense, we already know how to do all of this, 875 00:52:31,620 --> 00:52:33,250 because this is just a linear program. 876 00:52:33,250 --> 00:52:34,010 We can solve it. 877 00:52:34,010 --> 00:52:36,352 But this is a more intuitive way of proving this. 878 00:52:36,352 --> 00:52:38,310 If you want to prove to someone that tensegrity 879 00:52:38,310 --> 00:52:41,340 is infinitesimally rigid, you give them a bunch of stresses, 880 00:52:41,340 --> 00:52:43,890 one for each strut or cable, or maybe 881 00:52:43,890 --> 00:52:46,092 you just need one stress to hit all of them. 882 00:52:46,092 --> 00:52:48,300 And then you show that the linkage is infinitesimally 883 00:52:48,300 --> 00:52:49,630 rigid, which you could do by computing 884 00:52:49,630 --> 00:52:50,963 the rank of the rigidity matrix. 885 00:52:55,130 --> 00:52:59,850 Strut can have zero stress-- the weight is zero. 886 00:53:02,800 --> 00:53:06,430 OK, let's keep going. 887 00:53:06,430 --> 00:53:09,600 Lots of a cool things to talk about, maybe over here. 888 00:53:17,380 --> 00:53:23,230 I want to do a little diversion for fun, 889 00:53:23,230 --> 00:53:34,752 something called spider webs, like this. 890 00:53:34,752 --> 00:53:36,085 You might have seen them before. 891 00:53:36,085 --> 00:53:40,895 A spiderweb is something where every edge is basically 892 00:53:40,895 --> 00:53:42,130 a cable. 893 00:53:42,130 --> 00:53:45,250 You can see under wind and tension, 894 00:53:45,250 --> 00:53:48,080 they get a little bit shorter than they're supposed to be. 895 00:53:48,080 --> 00:53:49,455 But they can't really get longer. 896 00:53:49,455 --> 00:53:53,140 They are pretty strong at preventing expansion. 897 00:53:53,140 --> 00:53:54,960 So a spiderweb is something that can 898 00:53:54,960 --> 00:53:57,810 be stressed with all positive weights. 899 00:53:57,810 --> 00:54:00,720 And the reason it holds in tension-- positive, 900 00:54:00,720 --> 00:54:04,470 yeah, cables-- all of the edges can have a positive stress, 901 00:54:04,470 --> 00:54:07,120 and it will be in equilibrium. 902 00:54:07,120 --> 00:54:09,920 And in spiderwebs, in fact, this is the same-- 903 00:54:09,920 --> 00:54:13,079 these two-- rigidity and positive stresses 904 00:54:13,079 --> 00:54:13,870 are the same thing. 905 00:54:20,300 --> 00:54:26,130 This is sort of a special case, and Connolly 906 00:54:26,130 --> 00:54:30,630 studied these in 1982. 907 00:54:30,630 --> 00:54:37,420 There's some special points in a spiderweb. 908 00:54:37,420 --> 00:54:38,976 Here they're kind of off the page. 909 00:54:38,976 --> 00:54:41,350 There's a point down here where it attaches to something, 910 00:54:41,350 --> 00:54:42,690 and up there, and up there. 911 00:54:42,690 --> 00:54:44,440 Those guys do not satisfy equilibrium, 912 00:54:44,440 --> 00:54:48,820 or you can say those edges have some negative stresses. 913 00:54:48,820 --> 00:54:51,310 Or another way to think of it is there's 914 00:54:51,310 --> 00:54:53,942 a point off to infinity, which is how this is drawn, 915 00:54:53,942 --> 00:54:55,400 and you can have a positive stress. 916 00:54:55,400 --> 00:54:58,070 And at infinity, you don't have to satisfy equilibrium. 917 00:54:58,070 --> 00:55:00,410 So there's a little something special at the boundary, 918 00:55:00,410 --> 00:55:02,870 but everywhere else-- interior and all these vertices 919 00:55:02,870 --> 00:55:06,820 in here-- you have equilibrium, and all the stresses 920 00:55:06,820 --> 00:55:08,780 are positive. 921 00:55:08,780 --> 00:55:11,290 And it turns out in this case, you're 922 00:55:11,290 --> 00:55:14,110 automatically infinitesimally rigid. 923 00:55:14,110 --> 00:55:16,784 That tensegrity is infinitesimally rigid. 924 00:55:16,784 --> 00:55:18,700 Normally, we need to also check the underlying 925 00:55:18,700 --> 00:55:22,830 linkage is rigid, but for spiderwebs, you don't have to. 926 00:55:22,830 --> 00:55:24,800 Why do I care about spiderwebs? 927 00:55:24,800 --> 00:55:30,490 Because they give us something called origami tesselations. 928 00:55:30,490 --> 00:55:32,470 This is a brand-new result from this summer 929 00:55:32,470 --> 00:55:35,730 at [? OSMI ?] by Robert Lang and Alex Bateman. 930 00:55:35,730 --> 00:55:39,260 Here's a little example of an origami tessellation, this fold 931 00:55:39,260 --> 00:55:41,990 by Jenny [? Ramsier ?], just the one 932 00:55:41,990 --> 00:55:43,460 I had hanging around in my office. 933 00:55:43,460 --> 00:55:45,090 It looks a little cooler that way. 934 00:55:45,090 --> 00:55:48,060 Let me hold it up to the light. 935 00:55:48,060 --> 00:55:49,400 I can see it great. 936 00:55:49,400 --> 00:55:50,620 You don't see the light. 937 00:55:50,620 --> 00:55:51,790 It looks pretty cool. 938 00:55:51,790 --> 00:55:55,577 It's folded from one square, and it's 939 00:55:55,577 --> 00:55:57,410 folded in some sense with a regular pattern. 940 00:55:57,410 --> 00:56:01,750 You can see regular hexagons, hexagonal pattern. 941 00:56:01,750 --> 00:56:04,375 And these guys have been around for a long time, probably 942 00:56:04,375 --> 00:56:07,340 at least the '60s, maybe earlier-- 943 00:56:07,340 --> 00:56:11,080 a lot of Japanese artists, lot of American artists. 944 00:56:11,080 --> 00:56:12,580 And there's been a lot of excitement 945 00:56:12,580 --> 00:56:15,720 about origami tesselations since the mid '90s. 946 00:56:15,720 --> 00:56:18,910 I think Chris Palmer revitalized them, and then tons of people 947 00:56:18,910 --> 00:56:20,030 are looking at them. 948 00:56:20,030 --> 00:56:23,220 And there's this cool algorithm for building them. 949 00:56:30,400 --> 00:56:33,500 So you take some tessellation like these squares, 950 00:56:33,500 --> 00:56:37,460 and triangles, and hexagons-- some collection of polygons. 951 00:56:37,460 --> 00:56:40,220 You shrink all of them a little bit, 952 00:56:40,220 --> 00:56:42,150 but all by the same amount. 953 00:56:42,150 --> 00:56:46,580 And then you twist them a little bit, all the same amount. 954 00:56:46,580 --> 00:56:48,540 So here they are twisted. 955 00:56:48,540 --> 00:56:51,150 And then you just connect the dots. 956 00:56:51,150 --> 00:56:53,472 So these two edges used to be joined to each other. 957 00:56:53,472 --> 00:56:55,930 So I'm going to connect these guys, and connect these guys. 958 00:56:55,930 --> 00:56:57,190 That's the green edges. 959 00:56:57,190 --> 00:56:58,481 And that's your crease pattern. 960 00:56:58,481 --> 00:57:02,330 You erase the red stuff, and you get your crease pattern, 961 00:57:02,330 --> 00:57:06,460 and you fold it, and you get this cool tessellation-- magic. 962 00:57:06,460 --> 00:57:09,630 Now the question is, when does this work? 963 00:57:09,630 --> 00:57:12,120 This algorithm has been around forever, as far as I know. 964 00:57:12,120 --> 00:57:16,420 I don't know exactly how old it is, or who invented it, 965 00:57:16,420 --> 00:57:18,510 but it's pretty natural. 966 00:57:18,510 --> 00:57:20,520 It's how most tesselations are folded. 967 00:57:20,520 --> 00:57:22,760 But when does it work? 968 00:57:22,760 --> 00:57:28,030 And there is a brand-new result from the summer 969 00:57:28,030 --> 00:57:32,200 that it works for some choice of those angles. 970 00:57:32,200 --> 00:57:34,230 So I had some flexibility-- how much do I shrink 971 00:57:34,230 --> 00:57:35,880 and how much do I turn? 972 00:57:35,880 --> 00:57:38,210 But this will work for some choice of turn 973 00:57:38,210 --> 00:57:42,030 and shrink amount, if and only if your graph 974 00:57:42,030 --> 00:57:48,960 or your initial tessellation is a spiderweb. 975 00:57:48,960 --> 00:57:52,350 Pretty cool-- spiderwebs have this neat property 976 00:57:52,350 --> 00:57:56,190 that you can do the shrink and twist tessellation algorithm, 977 00:57:56,190 --> 00:57:57,120 and it works. 978 00:57:57,120 --> 00:58:01,800 And here is an example of that-- a spiderweb, so to speak, 979 00:58:01,800 --> 00:58:03,710 but drawn visually. 980 00:58:03,710 --> 00:58:06,330 And this is actually a proof that-- these are basically 981 00:58:06,330 --> 00:58:08,180 all the force polygons showing that you 982 00:58:08,180 --> 00:58:11,300 can get a positive equilibrium stress. 983 00:58:11,300 --> 00:58:14,430 And you turn it into a crease pattern, fold it flat, 984 00:58:14,430 --> 00:58:15,274 and it works. 985 00:58:15,274 --> 00:58:16,690 This is, of course, in simulation, 986 00:58:16,690 --> 00:58:21,510 but you can really fold these things, and they work. 987 00:58:21,510 --> 00:58:24,400 So that's kind of fun-- a little bit origami out 988 00:58:24,400 --> 00:58:27,635 of linkages and tensegrities. 989 00:58:27,635 --> 00:58:28,135 Questions? 990 00:58:31,250 --> 00:58:33,870 All right, then we move on. 991 00:58:33,870 --> 00:58:37,010 I want to tell you one more cool thing about stresses 992 00:58:37,010 --> 00:58:52,427 and tensegrities-- yet another characterization of stresses, 993 00:58:52,427 --> 00:58:53,635 which is polyhedral liftings. 994 00:59:07,450 --> 00:59:09,990 A polyhedral lifting is going to work 995 00:59:09,990 --> 00:59:13,530 if I have a non-crossing configuration. 996 00:59:21,620 --> 00:59:27,450 So I don't want to have this-- two 997 00:59:27,450 --> 00:59:31,010 edges that cross each other. 998 00:59:31,010 --> 00:59:33,182 I only want to have pictures like this, 999 00:59:33,182 --> 00:59:34,640 where edges don't cross each other. 1000 00:59:34,640 --> 00:59:37,850 They only share endpoints. 1001 00:59:37,850 --> 00:59:40,550 Then I can define what's called a polyhedral lifting. 1002 00:59:40,550 --> 00:59:44,970 So this is a planograph, if you will. 1003 00:59:44,970 --> 00:59:47,400 Polyhedral lifting is going to be 1004 00:59:47,400 --> 00:59:56,270 an assignment of z-coordinates to the vertices. 1005 00:59:56,270 --> 01:00:01,330 So it's going to be a z-coordinate z of v 1006 01:00:01,330 --> 01:00:14,370 for each vertex v such that each face remains planar. 1007 01:00:23,660 --> 01:00:26,250 Because I forbid crossings, I end up 1008 01:00:26,250 --> 01:00:31,825 decomposing space-- the plane here-- this only works 1009 01:00:31,825 --> 01:00:32,575 in two dimensions. 1010 01:00:35,311 --> 01:00:37,060 This is one thing that does not generalize 1011 01:00:37,060 --> 01:00:39,140 to arbitrary dimension. 1012 01:00:39,140 --> 01:00:41,910 So I get a bunch of triangles here. 1013 01:00:41,910 --> 01:00:42,890 And so I want to lift. 1014 01:00:42,890 --> 01:00:44,380 I want to assign some z-coordinate 1015 01:00:44,380 --> 01:00:47,660 to each of these vertices, such that each of these triangles 1016 01:00:47,660 --> 01:00:48,350 remains planar. 1017 01:00:48,350 --> 01:00:49,766 Well, actually, that always holds. 1018 01:00:49,766 --> 01:00:51,049 Triangles are always planar. 1019 01:00:51,049 --> 01:00:53,590 But there's another face, which is the outside face out here. 1020 01:00:53,590 --> 01:00:55,320 That's a quadrilateral. 1021 01:00:55,320 --> 01:00:56,950 That one also has to remain planar. 1022 01:00:56,950 --> 01:01:03,090 So these four vertices have to be lifted onto some plane. 1023 01:01:03,090 --> 01:01:04,485 This guy can be lifted however it 1024 01:01:04,485 --> 01:01:05,860 wants in this particular picture. 1025 01:01:05,860 --> 01:01:08,290 In general, you're going to have a lot of non-triangles. 1026 01:01:08,290 --> 01:01:11,612 Those should all remain planar. 1027 01:01:11,612 --> 01:01:12,320 That's a lifting. 1028 01:01:15,260 --> 01:01:18,290 One thing you can do-- there's some freedom here. 1029 01:01:18,290 --> 01:01:20,029 If you have any lifting or, for example, 1030 01:01:20,029 --> 01:01:21,320 you could not lift them at all. 1031 01:01:21,320 --> 01:01:23,430 Set all the z-coordinates to zero. 1032 01:01:23,430 --> 01:01:24,610 That's fine. 1033 01:01:24,610 --> 01:01:26,490 You could also just lift everything 1034 01:01:26,490 --> 01:01:29,260 onto some other plane, and generally 1035 01:01:29,260 --> 01:01:31,085 have a rigid motion of freedom. 1036 01:01:33,652 --> 01:01:35,110 You can't translate around, but you 1037 01:01:35,110 --> 01:01:38,350 have one two-degree two-rotational freedoms, 1038 01:01:38,350 --> 01:01:40,840 I think. 1039 01:01:40,840 --> 01:01:43,560 And so we would just like to get rid of those. 1040 01:01:43,560 --> 01:02:03,780 So say remove rigid motions by forcing the outside face 1041 01:02:03,780 --> 01:02:10,070 to lie in z equals 0. 1042 01:02:10,070 --> 01:02:13,730 So let's say these guys all stay at 0. 1043 01:02:13,730 --> 01:02:15,450 So in this particular example, this guy 1044 01:02:15,450 --> 01:02:19,910 can go to any value, positive or negative, but that's it. 1045 01:02:19,910 --> 01:02:24,470 Now, this is a lot like stresses-- in fact, 1046 01:02:24,470 --> 01:02:28,100 it's identical to stresses. 1047 01:02:28,100 --> 01:02:29,570 It's probably not obvious, but just 1048 01:02:29,570 --> 01:02:31,653 like stresses where you could set everything to 0, 1049 01:02:31,653 --> 01:02:33,520 here you can also set everything to 0. 1050 01:02:36,720 --> 01:02:39,000 It's not a big connection, but it turns out 1051 01:02:39,000 --> 01:02:42,134 they really are the same thing for 1052 01:02:42,134 --> 01:02:43,300 non-crossing configurations. 1053 01:02:52,560 --> 01:02:55,865 This is called Maxwell-Cremona Theorem. 1054 01:02:59,730 --> 01:03:01,550 This is probably one of the oldest theorems 1055 01:03:01,550 --> 01:03:06,670 we will cover here-- I guess anywhere. 1056 01:03:06,670 --> 01:03:09,470 Well, it's not that old-- 1864. 1057 01:03:09,470 --> 01:03:11,000 That might be the oldest. 1058 01:03:11,000 --> 01:03:19,380 Maxwell proved this, or claimed it in 1864. 1059 01:03:19,380 --> 01:03:27,420 Theorem is there's a one-to-one correspondence 1060 01:03:27,420 --> 01:03:38,120 between the equilibrium stresses and polyhedral liftings. 1061 01:03:46,990 --> 01:03:56,530 And fun fact-- negative stresses correspond to valleys. 1062 01:04:00,300 --> 01:04:05,750 So valley is something like this. 1063 01:04:05,750 --> 01:04:08,582 You know what valleys are, but it's maybe a little bit subtle. 1064 01:04:08,582 --> 01:04:10,040 We're not folding all the way here, 1065 01:04:10,040 --> 01:04:12,340 so this would also be considered a valley, 1066 01:04:12,340 --> 01:04:17,170 because it has sort of negative dihedral triangle. 1067 01:04:17,170 --> 01:04:18,849 It's really hard to see. 1068 01:04:18,849 --> 01:04:20,390 What I meant was something like this. 1069 01:04:30,030 --> 01:04:33,120 That's a valley edge here. 1070 01:04:33,120 --> 01:04:38,170 This is another valley edge here-- whatever. 1071 01:04:38,170 --> 01:04:41,570 A positive stress corresponds to a mountain, 1072 01:04:41,570 --> 01:04:45,530 which is the same picture upside down. 1073 01:04:45,530 --> 01:04:52,540 A zero stress corresponds to a flat angle-- 1074 01:04:52,540 --> 01:04:55,310 doesn't have to be horizontal, but it has to be flat. 1075 01:04:55,310 --> 01:04:57,990 So it could be like this. 1076 01:05:02,760 --> 01:05:06,250 I'm going to need this in a moment proving the next thing. 1077 01:05:09,730 --> 01:05:12,240 I'm not going to prove this theorem, 1078 01:05:12,240 --> 01:05:14,390 but it would be fun to actually see it in action. 1079 01:05:14,390 --> 01:05:18,820 I've never seen it implemented, so another fun project. 1080 01:05:18,820 --> 01:05:21,214 I give you tensegrity. 1081 01:05:21,214 --> 01:05:22,880 You compute an equilibrium stress, which 1082 01:05:22,880 --> 01:05:28,570 is easy to do by linear programming, and draw-- you 1083 01:05:28,570 --> 01:05:31,859 can directly construct from that the 3D lifting, 1084 01:05:31,859 --> 01:05:33,025 which would be kind of cool. 1085 01:05:36,510 --> 01:05:38,135 I'm going to use basically everything I 1086 01:05:38,135 --> 01:05:41,452 proved today to prove a big theorem-- 1087 01:05:41,452 --> 01:05:42,660 the Carpenter's Rule Theorem. 1088 01:05:42,660 --> 01:05:44,584 It's why I'm wearing this t-shirt that 1089 01:05:44,584 --> 01:05:46,750 has nothing to do with the Carpenter's Rule Theorem. 1090 01:05:49,280 --> 01:05:52,390 And it's about non-crossing linkages. 1091 01:05:52,390 --> 01:05:53,640 So this is the beginning. 1092 01:05:53,640 --> 01:05:56,794 So far we've been allowing crossings, 1093 01:05:56,794 --> 01:05:58,210 except for this very last theorem. 1094 01:06:00,870 --> 01:06:03,240 Now we begin this section where I forbid crossings 1095 01:06:03,240 --> 01:06:09,090 between the edges, just like what that picture was. 1096 01:06:09,090 --> 01:06:14,370 Prevent this, and this is a constraint on the configuration 1097 01:06:14,370 --> 01:06:15,129 space now. 1098 01:06:15,129 --> 01:06:16,920 I'm going to look at all the configurations 1099 01:06:16,920 --> 01:06:18,450 where no two edges cross. 1100 01:06:18,450 --> 01:06:21,470 This is a smaller version of our old configuration space. 1101 01:06:21,470 --> 01:06:22,970 I'm not going to define it formally. 1102 01:06:22,970 --> 01:06:24,370 It's a bit messy. 1103 01:06:24,370 --> 01:06:26,610 It's not too nasty. 1104 01:06:26,610 --> 01:06:28,970 It's still defined by polynomial inequalities. 1105 01:06:28,970 --> 01:06:29,800 Question? 1106 01:06:29,800 --> 01:06:31,800 STUDENT: What if you have one of those diagonals 1107 01:06:31,800 --> 01:06:38,080 and switch it to be in relation to each other [INAUDIBLE]? 1108 01:06:38,080 --> 01:06:39,972 PROFESSOR: You want this picture and-- 1109 01:06:39,972 --> 01:06:41,580 STUDENT: Either one. 1110 01:06:41,580 --> 01:06:43,940 PROFESSOR: And you want to add this? 1111 01:06:43,940 --> 01:06:49,000 Or-- that's crossing-- not allowed. 1112 01:06:49,000 --> 01:06:50,900 Whatever you're saying is not allowed. 1113 01:06:50,900 --> 01:06:52,220 That's the easy answer. 1114 01:06:52,220 --> 01:06:55,974 I don't quite know what it is, but what we allow-- 1115 01:06:55,974 --> 01:06:57,390 and in this case I'm just thinking 1116 01:06:57,390 --> 01:06:59,430 about linkages for the moment. 1117 01:06:59,430 --> 01:07:03,420 It's just you can hinge at common vertices. 1118 01:07:03,420 --> 01:07:06,930 Two edges either share a vertex or not. 1119 01:07:06,930 --> 01:07:09,670 And that's it. 1120 01:07:09,670 --> 01:07:12,070 But they're not allowed to touch anywhere else. 1121 01:07:15,220 --> 01:07:18,070 And now what we care about is something 1122 01:07:18,070 --> 01:07:19,135 called a locked linkage. 1123 01:07:24,700 --> 01:07:30,970 And a linkage is locked if its configuration 1124 01:07:30,970 --> 01:07:36,165 space is disconnected. 1125 01:07:40,720 --> 01:07:44,650 So the configuration space would look something like this. 1126 01:07:44,650 --> 01:07:46,410 Maybe it has three components. 1127 01:07:46,410 --> 01:07:48,000 If I have some configuration here, 1128 01:07:48,000 --> 01:07:50,400 I can move to any other configuration here, 1129 01:07:50,400 --> 01:07:52,272 and same over here, but there's no way 1130 01:07:52,272 --> 01:07:54,480 to get from this configuration to that configuration. 1131 01:07:54,480 --> 01:07:57,360 They're disconnected from each other. 1132 01:07:57,360 --> 01:07:58,930 So this would be kind of sad news 1133 01:07:58,930 --> 01:07:59,960 if you're looking for motions. 1134 01:07:59,960 --> 01:08:02,210 It means you cannot get from everywhere to everywhere. 1135 01:08:02,210 --> 01:08:04,820 There are some locked configurations that cannot get 1136 01:08:04,820 --> 01:08:07,020 back to start. 1137 01:08:07,020 --> 01:08:09,400 However you define start and locked doesn't matter, 1138 01:08:09,400 --> 01:08:12,062 but the linkage is locked when there's two things that cannot 1139 01:08:12,062 --> 01:08:12,770 reach each other. 1140 01:08:16,020 --> 01:08:31,850 And the Carpenter's Rule Theorem is about one case of that. 1141 01:08:38,880 --> 01:08:41,520 So this was essentially my Ph.D. thesis, 1142 01:08:41,520 --> 01:08:46,649 so paper in 2000 by Bob Connolly who made that tensegrity, 1143 01:08:46,649 --> 01:08:48,569 [? Gunta ?] [? Rota ?] and me. 1144 01:08:48,569 --> 01:08:57,270 And it says that if we have a linkage, 1145 01:08:57,270 --> 01:09:00,290 and say we take a configuration of that linkage, and let's 1146 01:09:00,290 --> 01:09:07,210 say it's of maximum degree 2, so every vertex has 1147 01:09:07,210 --> 01:09:10,920 at most two edges coming out of it. 1148 01:09:10,920 --> 01:09:25,100 Then there's a motion of that linkage that straightens out-- 1149 01:09:25,100 --> 01:09:28,910 so if you have maximum degree 2, you have paths, 1150 01:09:28,910 --> 01:09:30,884 and you might have some cycles. 1151 01:09:30,884 --> 01:09:32,050 You might have many of them. 1152 01:09:39,560 --> 01:09:41,430 And it's going to straighten all the paths 1153 01:09:41,430 --> 01:09:42,749 and convexify all the cycles. 1154 01:09:55,160 --> 01:09:58,270 And it's also expansive. 1155 01:10:02,420 --> 01:10:04,440 But before I get to that, this is essentially 1156 01:10:04,440 --> 01:10:06,260 showing that these configuration's bases 1157 01:10:06,260 --> 01:10:07,119 are connected. 1158 01:10:07,119 --> 01:10:09,160 It doesn't quite imply it the way I've worded it. 1159 01:10:09,160 --> 01:10:13,659 But for example, for paths, I take some path. 1160 01:10:13,659 --> 01:10:15,700 I want to know, can I get from this configuration 1161 01:10:15,700 --> 01:10:16,866 to some other configuration? 1162 01:10:19,320 --> 01:10:20,890 Well, I could take this one, find 1163 01:10:20,890 --> 01:10:22,886 a motion that straightens the chain. 1164 01:10:22,886 --> 01:10:24,386 I could take this one, find a motion 1165 01:10:24,386 --> 01:10:26,110 that straightens the chain. 1166 01:10:26,110 --> 01:10:29,180 So here I've drawn it straight. 1167 01:10:29,180 --> 01:10:30,000 I take this motion. 1168 01:10:30,000 --> 01:10:30,840 I apply it forwards. 1169 01:10:30,840 --> 01:10:31,631 I take this motion. 1170 01:10:31,631 --> 01:10:34,430 I apply it backwards, and I get from here to here. 1171 01:10:34,430 --> 01:10:37,300 So if I can straighten all the paths, 1172 01:10:37,300 --> 01:10:42,330 I can definitely get from anywhere to anywhere. 1173 01:10:42,330 --> 01:10:44,800 For convex cycles, it's a little less obvious, 1174 01:10:44,800 --> 01:10:46,260 but it's also true. 1175 01:10:46,260 --> 01:10:48,990 There's one catch which I didn't say here. 1176 01:10:48,990 --> 01:10:50,845 I need to add outermost. 1177 01:10:54,630 --> 01:10:57,750 When you have nesting like this, you're in trouble. 1178 01:10:57,750 --> 01:11:00,050 This guy is not going to get straightened out. 1179 01:11:00,050 --> 01:11:01,010 It could be super long. 1180 01:11:01,010 --> 01:11:03,020 It may not have room to straighten out 1181 01:11:03,020 --> 01:11:05,839 inside that convex chamber. 1182 01:11:05,839 --> 01:11:07,630 So these guys will come along for the ride, 1183 01:11:07,630 --> 01:11:09,338 but they won't actually get straightened. 1184 01:11:09,338 --> 01:11:14,700 The outermost guys will get straightened and convexified. 1185 01:11:14,700 --> 01:11:16,446 The other fun property-- and this 1186 01:11:16,446 --> 01:11:18,070 is how we actually proved the theorem-- 1187 01:11:18,070 --> 01:11:19,445 so this was open for a long time. 1188 01:11:19,445 --> 01:11:21,030 People thought this was true. 1189 01:11:21,030 --> 01:11:28,690 And the key to proving it is by making the theorem stronger, 1190 01:11:28,690 --> 01:11:39,410 which is that all pairwise distances between vertices 1191 01:11:39,410 --> 01:11:44,010 increase or stay the same. 1192 01:11:47,004 --> 01:11:49,420 Some of them have to stay the same, because they're edges. 1193 01:11:49,420 --> 01:11:50,560 They are bars in there. 1194 01:11:50,560 --> 01:11:52,890 They can't change in length. 1195 01:11:52,890 --> 01:11:56,000 But everything else will increase. 1196 01:11:56,000 --> 01:11:59,190 Now there's a couple reasons why this is useful. 1197 01:11:59,190 --> 01:12:04,880 One is that it says you don't have to worry about crossings. 1198 01:12:04,880 --> 01:12:08,440 If I have some edges that initially don't cross, 1199 01:12:08,440 --> 01:12:11,790 and I'm worried about them crossing, 1200 01:12:11,790 --> 01:12:13,490 that can't happen if you're expansive. 1201 01:12:13,490 --> 01:12:16,800 If I say, well, this distance has to increase, 1202 01:12:16,800 --> 01:12:18,374 and this distance has to increase, 1203 01:12:18,374 --> 01:12:19,790 there's no way that this vertex is 1204 01:12:19,790 --> 01:12:22,170 going to cross over that edge. 1205 01:12:22,170 --> 01:12:24,330 One of them would have to get shorter. 1206 01:12:24,330 --> 01:12:25,970 So this essentially says, everything's 1207 01:12:25,970 --> 01:12:26,940 flying away from each other. 1208 01:12:26,940 --> 01:12:28,440 So if initially you're non-crossing, 1209 01:12:28,440 --> 01:12:30,400 you will be non-crossing forever. 1210 01:12:30,400 --> 01:12:32,400 That really makes life easier, because crossings 1211 01:12:32,400 --> 01:12:34,040 are hard to think about. 1212 01:12:34,040 --> 01:12:35,880 This lets you not worry about crossings. 1213 01:12:35,880 --> 01:12:37,530 You just have to worry about distances. 1214 01:12:37,530 --> 01:12:39,280 How do I worry about distances increasing? 1215 01:12:49,420 --> 01:12:55,820 Tensegrities-- struts-- struts will 1216 01:12:55,820 --> 01:12:58,210 force things to be expansive. 1217 01:12:58,210 --> 01:13:03,270 If I want to model this picture, all I need to do 1218 01:13:03,270 --> 01:13:06,310 is add a whole of struts. 1219 01:13:06,310 --> 01:13:07,650 Let's go over here. 1220 01:13:09,624 --> 01:13:11,540 So we're going to prove this theorem in, like, 1221 01:13:11,540 --> 01:13:13,550 five minutes-- easy. 1222 01:13:13,550 --> 01:13:18,300 Once you build all this technology, which was existing, 1223 01:13:18,300 --> 01:13:19,930 you can prove this theorem, once you 1224 01:13:19,930 --> 01:13:21,200 realize this is the theorem you want 1225 01:13:21,200 --> 01:13:22,449 to prove-- this expansiveness. 1226 01:13:27,291 --> 01:13:29,290 So what we're going to do is build a tensegrity. 1227 01:13:35,580 --> 01:13:43,586 And it's going to have a bar for every edge of the given 1228 01:13:43,586 --> 01:13:44,085 linkage. 1229 01:13:47,910 --> 01:13:50,530 So that's just the same thing as we had given. 1230 01:13:53,750 --> 01:13:57,375 It's also going to have a strut between every other pair 1231 01:13:57,375 --> 01:14:01,415 of vertices-- heck, every pair of vertices. 1232 01:14:01,415 --> 01:14:03,940 It's kind of redundant for the bars, 1233 01:14:03,940 --> 01:14:07,770 but every pair of vertices. 1234 01:14:07,770 --> 01:14:11,770 That says that all pairwise distances must increase or stay 1235 01:14:11,770 --> 01:14:14,150 the same. 1236 01:14:14,150 --> 01:14:15,170 So this is a tensegrity. 1237 01:14:15,170 --> 01:14:18,220 What I want to prove is that this tensegrity is flexible. 1238 01:14:18,220 --> 01:14:20,794 If I can prove that it's always flexible-- 1239 01:14:20,794 --> 01:14:23,085 well, until the end, which is when everybody's straight 1240 01:14:23,085 --> 01:14:25,043 or convex-- all the outermost guys are straight 1241 01:14:25,043 --> 01:14:29,490 or convex-- then I'll have proved this theorem. 1242 01:14:29,490 --> 01:14:31,980 So while this theorem is about actual connectivity 1243 01:14:31,980 --> 01:14:34,870 of configuration spaces, it says paths and cycles 1244 01:14:34,870 --> 01:14:36,370 have connected configuration spaces. 1245 01:14:36,370 --> 01:14:37,790 You get from everywhere to everywhere. 1246 01:14:37,790 --> 01:14:39,456 It even gives you an algorithm for doing 1247 01:14:39,456 --> 01:14:41,580 that, which we'll talk about next class. 1248 01:14:41,580 --> 01:14:45,920 We use just, is this thing rigid or flexible at all? 1249 01:14:45,920 --> 01:14:49,460 And that's the power of all this rigidity stuff, just telling 1250 01:14:49,460 --> 01:14:51,790 whether something can move a little bit, 1251 01:14:51,790 --> 01:14:54,490 and then just doing that over and over again, 1252 01:14:54,490 --> 01:14:56,630 you will be able to find that you can actually 1253 01:14:56,630 --> 01:15:00,444 go all the way, and get to straight or convex. 1254 01:15:00,444 --> 01:15:02,110 But how do we actually prove this thing? 1255 01:15:06,040 --> 01:15:15,190 So the point is, claim this tensegrity is infinitesimally 1256 01:15:15,190 --> 01:15:20,800 flexible, meaning it is not infinitesimally rigid. 1257 01:15:23,860 --> 01:15:26,450 And that will imply that there's at least 1258 01:15:26,450 --> 01:15:28,200 an infinitesimal expansive motion. 1259 01:15:28,200 --> 01:15:31,926 And then you have to use some fancy tricks-- not fancy, 1260 01:15:31,926 --> 01:15:33,550 some tricks I don't want to talk about. 1261 01:15:33,550 --> 01:15:36,340 You basically integrate that vector field, 1262 01:15:36,340 --> 01:15:40,000 and that will give you an actual expansive motion. 1263 01:15:40,000 --> 01:15:41,340 Let's not worry about that. 1264 01:15:41,340 --> 01:15:44,260 The interesting part is show that at least infinitesimally, 1265 01:15:44,260 --> 01:15:48,330 this tensegrity moves a little bit. 1266 01:15:48,330 --> 01:15:50,640 So what do know? 1267 01:15:50,640 --> 01:15:55,809 Duality-- if I want to show not that it's rigid-- 1268 01:15:55,809 --> 01:15:57,225 I want to show that it's flexible. 1269 01:16:00,190 --> 01:16:05,780 But it's rigid if and only if this is true and this is true. 1270 01:16:05,780 --> 01:16:07,590 This will actually always be true-- 1271 01:16:07,590 --> 01:16:09,450 the corresponding linkage is rigid-- 1272 01:16:09,450 --> 01:16:12,080 because I put in every edge is in there. 1273 01:16:12,080 --> 01:16:15,260 If I turn them all into bars, this thing's not moving at all. 1274 01:16:15,260 --> 01:16:18,170 So fact, this second condition doesn't really matter. 1275 01:16:18,170 --> 01:16:20,860 What matters is the stresses. 1276 01:16:20,860 --> 01:16:24,236 If I want to show that it's flexible, not rigid. 1277 01:16:24,236 --> 01:16:25,985 I want to show these stresses don't exist. 1278 01:16:25,985 --> 01:16:27,830 Now stresses always exist. 1279 01:16:27,830 --> 01:16:29,380 I could set all the stresses to be 0. 1280 01:16:29,380 --> 01:16:32,310 But I claim actually pretty much all the 1281 01:16:32,310 --> 01:16:35,470 stresses have to be 0, at least on the cables and the struts, 1282 01:16:35,470 --> 01:16:37,760 which is what I care about here. 1283 01:16:37,760 --> 01:16:40,390 They have to be 0. 1284 01:16:40,390 --> 01:16:48,040 So this will be implied by every equilibrium 1285 01:16:48,040 --> 01:16:59,200 stress is 0 on all struts and cables. 1286 01:17:02,000 --> 01:17:04,290 So you can never get this thing to hold 1287 01:17:04,290 --> 01:17:06,650 for any of the struts and the cables. 1288 01:17:06,650 --> 01:17:09,570 And therefore, in some sense, none of them are fixed, 1289 01:17:09,570 --> 01:17:12,730 and therefore, you're actually flexible. 1290 01:17:12,730 --> 01:17:16,850 That's implied by this duality statement. 1291 01:17:16,850 --> 01:17:20,050 OK, stresses are a little hard to think about. 1292 01:17:20,050 --> 01:17:24,400 I prefer to think about polyhedral liftings, let's say. 1293 01:17:24,400 --> 01:17:27,630 OK, the key here is to plug together all the right results. 1294 01:17:31,050 --> 01:17:38,090 This will be true if and only if every polyhedron lifting 1295 01:17:38,090 --> 01:17:38,600 is flat. 1296 01:17:46,180 --> 01:17:48,070 So I guess in our case, it will be 0, 1297 01:17:48,070 --> 01:17:51,340 because the outside face sets all the z-coordinates to 0, 1298 01:17:51,340 --> 01:17:53,910 so everything else will have to be in that plane. 1299 01:17:53,910 --> 01:17:58,662 So all the z-coordinates will be 0. 1300 01:17:58,662 --> 01:18:00,120 So these are equivalent statements. 1301 01:18:00,120 --> 01:18:03,170 All I need to prove is that every polyhedral lifting 1302 01:18:03,170 --> 01:18:03,685 is flat. 1303 01:18:05,941 --> 01:18:08,190 So we're going to prove this theorem by contradiction. 1304 01:18:20,670 --> 01:18:24,570 Suppose there was a non-flat polyhedron lifting. 1305 01:18:24,570 --> 01:18:25,570 What could it look like? 1306 01:18:31,390 --> 01:18:33,120 Did I just erase what I wanted? 1307 01:18:33,120 --> 01:18:34,960 Probably. 1308 01:18:34,960 --> 01:18:40,372 Greater than or equal to 0 for cables, less than 1309 01:18:40,372 --> 01:18:41,714 or equal to 0 for struts. 1310 01:18:41,714 --> 01:18:42,880 That's the one I care about. 1311 01:18:42,880 --> 01:18:43,838 Who cares about cables? 1312 01:18:48,020 --> 01:18:50,580 All right, so this is the stress. 1313 01:18:50,580 --> 01:18:53,170 And equilibrium stress has to be less than 1314 01:18:53,170 --> 01:18:56,130 or equal to 0 for every strut. 1315 01:18:56,130 --> 01:18:58,750 Less than or equal to 0 corresponds 1316 01:18:58,750 --> 01:19:02,670 to a valley edge or flat edge. 1317 01:19:02,670 --> 01:19:06,340 Now in this linkage, almost all the edges are struts. 1318 01:19:06,340 --> 01:19:08,240 There's a few that are bars, this, 1319 01:19:08,240 --> 01:19:10,190 like, little path is a bar. 1320 01:19:10,190 --> 01:19:11,690 Those could be valleys or mountains. 1321 01:19:11,690 --> 01:19:12,980 We don't know. 1322 01:19:12,980 --> 01:19:16,070 But everything else has to be a valley or flat. 1323 01:19:16,070 --> 01:19:17,130 For flat, we're good. 1324 01:19:17,130 --> 01:19:17,640 We're happy. 1325 01:19:17,640 --> 01:19:19,530 We want all the edges to be flat. 1326 01:19:19,530 --> 01:19:23,700 So how could it be that almost every edge in this picture 1327 01:19:23,700 --> 01:19:26,470 is a valley? 1328 01:19:26,470 --> 01:19:29,540 That seems a little tricky. 1329 01:19:29,540 --> 01:19:32,770 And we're going to show it can't happen. 1330 01:19:32,770 --> 01:19:35,640 If everything's a valley, something's 1331 01:19:35,640 --> 01:19:38,020 going to go wrong at the top picture, 1332 01:19:38,020 --> 01:19:41,360 because you've got to have mountains, like, turn around. 1333 01:19:41,360 --> 01:19:43,660 So let's look at the top. 1334 01:19:43,660 --> 01:19:45,370 Look at the maximum z-coordinate. 1335 01:19:48,997 --> 01:19:51,330 Now this could actually look like many different things, 1336 01:19:51,330 --> 01:19:54,690 but I'm going to consider one case-- the easy case-- where 1337 01:19:54,690 --> 01:19:56,940 you have, in the maximum z-coordinate, 1338 01:19:56,940 --> 01:19:58,640 you have one point. 1339 01:19:58,640 --> 01:20:02,250 And then around that, everything descends. 1340 01:20:02,250 --> 01:20:04,610 OK, these are all the edges incident to that point. 1341 01:20:04,610 --> 01:20:13,580 You form some kind of-- OK, so this is maximum z. 1342 01:20:13,580 --> 01:20:14,520 This is another plane. 1343 01:20:14,520 --> 01:20:19,730 I'm going to slice that, which is maximum z minus epsilon-- 1344 01:20:19,730 --> 01:20:22,940 slightly below the maximum z-coordinate. 1345 01:20:22,940 --> 01:20:27,550 And in a sort of typical case, we're going to get a polygon. 1346 01:20:27,550 --> 01:20:30,730 Now note that this polygon has this nice property, 1347 01:20:30,730 --> 01:20:35,050 that wherever it has a convex angle, you get a mountain here. 1348 01:20:35,050 --> 01:20:37,770 Wherever you have a reflex angle, like this one, 1349 01:20:37,770 --> 01:20:39,360 you get a valley edge here. 1350 01:20:39,360 --> 01:20:42,920 You can see that 3-dimensional picture. 1351 01:20:42,920 --> 01:20:47,260 Every polygon has at least three convex vertices. 1352 01:20:47,260 --> 01:20:49,710 That means there are at least three mountains incident 1353 01:20:49,710 --> 01:20:53,650 to this maximum z-coordinate But mountains 1354 01:20:53,650 --> 01:20:55,960 have to correspond to positive stresses. 1355 01:20:55,960 --> 01:20:59,450 Positive stresses have to correspond to bars, 1356 01:20:59,450 --> 01:21:03,280 because struts can't carry positive stresses. 1357 01:21:03,280 --> 01:21:06,410 So that means you have at least three bars 1358 01:21:06,410 --> 01:21:08,000 incident to that edge. 1359 01:21:08,000 --> 01:21:13,360 But I assumed I was maximum degree 2-- contradiction. 1360 01:21:13,360 --> 01:21:15,429 Isn't that cool? 1361 01:21:15,429 --> 01:21:17,095 It's very easy when you set it up right. 1362 01:21:20,820 --> 01:21:24,750 This works almost always, but there is another situation 1363 01:21:24,750 --> 01:21:27,270 which can happen, which is, like, you have-- 1364 01:21:27,270 --> 01:21:29,560 in the maximum z-coordinate you might 1365 01:21:29,560 --> 01:21:32,400 have a couple of bars at the top. 1366 01:21:32,400 --> 01:21:33,210 That's a worry. 1367 01:21:33,210 --> 01:21:35,402 This is all in maximum z. 1368 01:21:35,402 --> 01:21:37,360 And so when you slice below, you don't actually 1369 01:21:37,360 --> 01:21:38,790 get a whole polygon. 1370 01:21:38,790 --> 01:21:44,530 You might actually only get something around here. 1371 01:21:44,530 --> 01:21:46,200 But again, you can't get from here 1372 01:21:46,200 --> 01:21:49,770 to around there without some mountain. 1373 01:21:49,770 --> 01:21:52,010 It's hard to even imagine, because it can't happen. 1374 01:21:52,010 --> 01:21:53,968 But this is a mountain, and this is a mountain, 1375 01:21:53,968 --> 01:21:57,310 and you want to somehow slope a surface below this plane, 1376 01:21:57,310 --> 01:22:02,230 and get around to over here with only valleys-- ain't happening. 1377 01:22:02,230 --> 01:22:05,020 You've got to have another mountain in here. 1378 01:22:05,020 --> 01:22:09,270 And so that's the general picture. 1379 01:22:09,270 --> 01:22:12,050 And the only thing that can happen 1380 01:22:12,050 --> 01:22:15,750 is you actually prove that all of this stuff has to be flat. 1381 01:22:15,750 --> 01:22:17,250 So that's the one way it can happen. 1382 01:22:17,250 --> 01:22:20,980 You can't have strict valleys, but you could have them all 0. 1383 01:22:20,980 --> 01:22:25,900 So in fact, the one case where you can have stress 1384 01:22:25,900 --> 01:22:29,600 is when you have all of this outside stuff flat. 1385 01:22:29,600 --> 01:22:31,640 And then inside you don't know. 1386 01:22:31,640 --> 01:22:34,280 I can prove, using this generalized lemma, 1387 01:22:34,280 --> 01:22:36,231 that all of these regions are locally flat. 1388 01:22:36,231 --> 01:22:38,480 And therefore, this whole outside face has to be flat. 1389 01:22:38,480 --> 01:22:39,563 Therefore, I'm particular. 1390 01:22:39,563 --> 01:22:43,219 I can't have a reflex vertex, because then this side 1391 01:22:43,219 --> 01:22:44,510 would have to all be flattened. 1392 01:22:44,510 --> 01:22:46,160 So then the whole thing is flattened. 1393 01:22:46,160 --> 01:22:48,020 The only way the whole thing can't be flat 1394 01:22:48,020 --> 01:22:52,570 is if your polygon is already convex, and then we're done. 1395 01:22:52,570 --> 01:22:55,320 Also straight this can happen. 1396 01:22:55,320 --> 01:22:57,730 I think with straight, you don't get any stress. 1397 01:22:57,730 --> 01:22:59,517 Here you can actually have a lifting. 1398 01:22:59,517 --> 01:23:01,600 Actually, all these guys would be below the plane, 1399 01:23:01,600 --> 01:23:03,200 because everything's a valley. 1400 01:23:03,200 --> 01:23:08,260 This would be like an actual valley, 1401 01:23:08,260 --> 01:23:10,644 where you have a village or whatever. 1402 01:23:10,644 --> 01:23:13,060 That can happen, but only when the boundary of your valley 1403 01:23:13,060 --> 01:23:13,720 is convex. 1404 01:23:16,330 --> 01:23:18,180 And so that proves the theorem. 1405 01:23:18,180 --> 01:23:20,260 And that is the Carpenter's Rule Theorem. 1406 01:23:20,260 --> 01:23:22,676 Next time, we're going to talk about the other situations. 1407 01:23:22,676 --> 01:23:27,020 This was two dimensions, and maximum degree 2. 1408 01:23:27,020 --> 01:23:28,939 We can think about what happens with degree 3. 1409 01:23:28,939 --> 01:23:30,230 Then you can get locked things. 1410 01:23:30,230 --> 01:23:31,340 What happens in three dimensions? 1411 01:23:31,340 --> 01:23:32,210 Then you can get locked things. 1412 01:23:32,210 --> 01:23:33,920 What happens in four dimensions? 1413 01:23:33,920 --> 01:23:36,290 Then you can't get locked things, and other fun things 1414 01:23:36,290 --> 01:23:36,790 like that. 1415 01:23:39,130 --> 01:23:43,380 Oh, and why is it called the Carpenter's Rule Theorem? 1416 01:23:43,380 --> 01:23:46,490 Because this is a carpenter's rule. 1417 01:23:46,490 --> 01:23:49,260 And in a carpenter's rule, actually, all the edge lengths 1418 01:23:49,260 --> 01:23:50,024 are the same. 1419 01:23:50,024 --> 01:23:51,440 But as far as we know that doesn't 1420 01:23:51,440 --> 01:23:53,550 make this theorem any easier to prove. 1421 01:23:53,550 --> 01:23:55,950 And also in the carpenter's rule, you can have crossings, 1422 01:23:55,950 --> 01:23:59,910 but other than that, it's just like a carpenter's rule. 1423 01:23:59,910 --> 01:24:01,990 So there you go. 1424 01:24:01,990 --> 01:24:03,620 So if you've never played with one, 1425 01:24:03,620 --> 01:24:08,077 this is what people used before flexible measuring tape. 1426 01:24:08,077 --> 01:24:09,910 They still use them a lot in Europe, but not 1427 01:24:09,910 --> 01:24:11,440 so much in the US, but you can still 1428 01:24:11,440 --> 01:24:13,850 buy them at the hardware store. 1429 01:24:13,850 --> 01:24:15,540 That's it.