I’m about ready to turn the Beta Linkage program into the official production version. The only problem is that I still want to do more work on it. It feels incomplete if it can’t move a cam to make it meet a follower. In other words, the follower connector and its link can be positioned based on the current position of the cam but if the follower is being moved into position by some other elements then a “free floating” cam should move to match.
The curved slider path sample above is an example of the follower moving and the cam then moving to match it. If this were created using a spline as that curve, the mechanism would not work. I can create an example in the Linkage program but I can’t simulate it like the mechanism above. You can try this mechanism by opening the Samples from the File menu and selecting this by its image.
Here is what I want to work before I release a new production version of the software:
This should not be too difficult but it is the case that every variation of how a sliding connection works is handled by either small conditional pieces of code or sometimes entirely new functions. In this case, I think I will start with a copy of the function for handling a follower that is moved into position based on the position of a spline and then rework it to handle this case. Then I can see how much of the code is still exactly the same as the original case and build a single function with the code differences selected at runtime. In other words, I will create a copy of the code and modify it to see if it stays roughly similar to the unmodified version or if it is different enough to leave it as its own separate function. I prefer to have no redundancy so the goal is always to have as little source code as possible.
Here’s a good time to mention that I actually am wondering if the splines should be dotted if they are being used as cams. Or should the curved slider path, which is not its own element, be drawn as part of the link with a solid line? I think the latter makes more sense but the dotted line does server to tell the user that they can’t select the link by clicking on that curve – it’s purely a decoration.
Oh wait — point 2 — you can …. Background. Found it.!
Can scale (which is great) but can’t move the image x/y. So can’t line the image up with the set coordinates. Any chance of making that happen some day?
Dave, do you think the cam function will be able to simulate automotive valve timing cams — a revolving circle with a lobe? That would open up a whole world.
Also, do you think the ability to project a bitmap image behind the workspace canvas will be possible some day? That would allow working directly off a design sketch.
The cam shaps are designed using splines of straight lines and Bezier curves so it is possible to create a shape that would somewhat work for an automotive cam. But it would not be the process done by cam designers in the automotive industry. The automotive cam is designed to accelerate the valve at some optimum rate from closed to open and to keep it there until it is then accelerated at some optimum rate to be closed. There’s no real need for the flexibility of keeping it more open vs. less open like could be done with splines. Splines are also a bit hard to use when a perfectly circular shape is needed, such as for the fully closed and fully open positions of the automative cam.
I have experimented with automotive cam “design” (https://www.rectorsquid.com/circletest.php?circletangent2 and https://www.rectorsquid.com/circletest.php?runningcam) and these cams I generated use an inside radius, transition radius, and outside radius, just like some automotive cams (as far as I remember from when I did this work but I’m no expert on automobile cams). I ended up just using the spline technique for the Linkage software because the software is more aimed at toy and automata makers than it is for serious engineers of auto engines.
So you can fake it by using the splines to get a similar shape to an automobile cam but it won’t be quite right for a finished product. I’ll have to investigate the state of auto cam design and see if I could add a type of cam that does get generated using things like inside radius, transition radius, and outside radius. It would be cool for sure, to have such a feature,
Oh, I don’t intend to have the background moveable. The best option is to just move the mechanism and hopefully be able to deal with the possibly non-integer locations of your connectors.