Google Classroom
GeoGebraGeoGebra Classroom

Sinusoid Approximation using Bezier Curves

Explanation for how this was made: First off, regarding the Peaucellier-Lipkin linkages, imagine them as a replacement of slider joints. So any point where you see being guided along a straight line could be replaced with a slider. I used Peaucellier-Lipkin linkages because I wanted to keep this purely linkage [Fig 1: https://youtu.be/_HN1Q29F2Zg?t=232] Connecting two of these 'sliders' can solve for the "intersection point" of two links. This linkage is manifested from De Casteljau's Algorithm to draw a Bézier curve. There's a great video on it by Freya Holmér called "The Beauty of Bézier Curves" which I 100% recommend checking out if you haven't already:https://youtu.be/aVwxzDHniEw?t=112 (1m53s to 3m57s is all you need to understand the following explanation). So this was the order in which I figured things out: 1. LERPing lines change length. This one was easy enough. You can just have a bar connected to two joints, with one being a revolute joint and the other a prismatic joint. Then make it jut out on one side and then disregard it. 2. Performing a LERP on a variable length line: When performing a LERP (linear interpolation) on a point, the line it rests on can change in length. So, I had to find a way such that no matter how much the line it goes along changes in size, it's able to figure out how far along the line my desired point is. I solved this with a geometric property of similar triangles: when you scale a triangle, the angles are preserved, but the sides can change. This means that I can encode an input -- our desired LERP -- into a beam which swings a specific angle. Then, I can translate this angle into all of the other other LERPs in which I will need, even for the ones where the line is dynamically changing. [Fig 3: https://i.imgur.com/mScI130.mp4] 3. Construct the Core LERPs These were easy, as I could just attach the Peaucellier-Lipkin linkages performing their respective LERPs together by their crank, as none of them moved and none of them had to do any dynamic scaling. 4. Finding where the "translator" angle should be located. First off, I wanted to use an angle that would be easy to construct, and I found that 90 degrees would be really easy to work with. In turn, I used a right isosceles triangle as my translator. I solved for a right isosceles triangle using geometric constructions. What I found out for the yellow and green LERP's was that this was very conveniently another straight line which uses the same LERP. The magenta one was more difficult, though I found a mechanism that was capable of finding the midpoint between the ends of the LERP (pantograph), then copy one of the points and move it around the midpoint 90 degrees in order to get the position (using two bell-cranks). 5. LERPing lines change angle. This was a bit difficult to figure out but I got it in the end. If you fix your view on just one of the angle translators of the moving guides (green, yellow, pink), you'll see that it just scales up and down and the link swings regularly. But now we also have to deal with the whole system's angle relative to the rest of the mechanism. To do this, you're adding two angles together: the angle translator, and the angle of the whole LERP-ing mechanism. [Fig 4: https://i.imgur.com/xRORXHe.mp4] To do this, we'll look to the deltoid (kite) shape, which has a single line of symmetry. You can create this in linkage using the idea I presented in problem 1. With this, it means that the line of symmetry bisects the angles it crosses through, finding the "middle angle" of two input angles. You can flip this on its head to create a doubler as well by just making the line of symmetry one of the inputs. Now you can figure this out algebraically. The midpoint of two values can also be described as its average. e.g. The midpoint of 5 and 7 is 6. The average = (5 + 7) / 2 = 6 Notice how there's a plus there? That's what we're looking after. So we have to get rid of the divide by 2. (5 + 7) / 2 * 2 = 5 + 7 So you use the line of symmetry of a deltoid (which is hooked to the angle translator and the body of the main) to get the bisected angle, then you double said angle using another deltoid to add the angles together. And voilà! That's everything there is to making the cubic Bézier linkage. As for making it into a converter between linear to rotational, you can project the horizontal component of the approximate sine wave onto a line, and project the vertical component onto a circle. And that's it!