center4Pose

by Tim C. Lueth, SG-Lib Toolbox: SolidGeometry 5.6 - 4Bar/Linkages
Introduced first in SolidGeometry 4.5, Creation date: 2019-01-31, Last change: 2025-09-14

return center points for 3 poses (position and orientation)

Description

The center4Pose function uses the center3Pose function to calculate in the following way:
The center3Pose function searches the center of rotation/circle center for the three starting points of a pose. The function also searches for the center of rotation/circle center for the three end points of a pose. These rotation centers are the attachment points for the crank and for the four-joint swingarm, while the distance between the attachment points defines the minimum length of the coupling. For the three pose synthesis, however, the later can freely choose the coupling length, since each point along the pose lines can theoretically be chosen as attachment points for the crank and for the swingarm. This is not the case with four pose synthesis. In four-pose synthesis, a point must be found on the coupling line where the circular arc of the three-point synthesis a selected k runs randomly on the first three coupling lines through the corresponding k-point on the fourth coupling line. This can be approximated by a numerical search. If it is possible to find at least two such points, at least one can realize a coupling. Whether all four poses are reachable in the same joint configuration and whether all four poses are reachable in the same angular segment and in the correct order can only be checked afterwards.
======================================================================
center3Pose is a very powerful function for the design of fourbar linkages under a variety of optimization criterias.
k stands for the distance of the coupler point to the poses
r stands for the radius of the crank
C stands for the base of the crank
d stands for the distance of coupler to pose
w stand for angle deviation of coupler to pose
e stands for the distance error of the found solution
For a fourbar linkage it is necessary to select two k points to get two center points for crank and follower.
======================================================================
THIS FUNCTION IS PART OF THE SEQUENCE
1. Create Poses as List of Startpoints A and Endpoints B uses Posesample or Poseui:
>> PS=Poseui(3,.2); SGfigure; Poseplot(PS);
>> PS.A=[-0.00 0.00; 0.00 1.00; 1.00 3.00]; PS.B=[ 1.00 0.00; 1.00 1.00; 1.71 2.29];
2. Calculate a set of parameter variations for possible Solutions:
>> center3Pose(PS.A,PS.B,-20:20,-20:5:20,-3:.2:3); S=ans; whos C;
3. Calculate and analyze all possible permutations of the parameter variation:
>> checkfourbar3Posepermutation(PS.A,PS.B,S); FP=ans;
>> checkfourbar3Pose(PS.A,PS.B,S); % if there is only one assembly
4. Limit the Solution to your needs by limiting the permutations, for example
FULL ROTATION 'u',0 DIMENSION 'l1l2rd',[5 8]
checkfourbar3Posepermutation(PS.A,PS.B,FP,'','u',0,'l1l2rd',[2 4]);
OR FULL ROTATION 'u',0 BASES INSIDE AN AREA
checkfourbar3Posepermutation(PS.A,PS.B,FP,'','cpl',PLcircle(2)+[3 3],'l1l2rd',[0 3]);
======================================================================
All those functions are based on
invkinplan2 - that calculates both configurations for a planar 2bar linkage

See Also: center3P , center3Pose , checkfourbar3Pose , Posesample , Poseplot , TofPose , Posenorm , Poseui

Example Illustration

 missing image of center4Pose(A,B,k,dall,wall,CPL);

Syntax

[S,rs,Sall,PSall,dw]=center4Pose([A,B,k,dall,wall,CPL]);

Input Parameter

A: List of at least 3 points that define a pose
B: List of at least 3 points that define a direction in combination with A
k: list of checking values for a point along the line A+k*(B-A)/|(B-A)|
dall: displacement orthogonal to pose line; default is 0
wall: turning angle of the pose relative to pose; default is 0;
CPL: Optional area for solutions

Output Parameter

S: [k C r d w]
rs: real solutions if CPL is used
Sall: All Solutions S=Sall(rs,:)
PSall: All Poses
dw:

Examples


PS=Posesample(7), center3Pose(PS.A,PS.B,[-20:20])
PS=Posesample(10), center3Pose(PS.A,PS.B,[-20:20])
PS=Posesample(10), center4Pose(PS.A,PS.B,[-20:20])

PS=Posesample(10); PS.B(4,:)=PS.B(4,:)+[0 0]; SGfigure; Poseplot(PS);
center4Pose(PS.A,PS.B,[-200:.1:200]); axis([-10 40 -20 20])




Copyright 2019-2025 Tim C. Lueth. All rights reserved. The code is the property of Tim C. Lueth and may not be redistributed or modified without explicit written permission. This software may be used free of charge for academic research and teaching purposes only. Commercial use, redistribution, modification, or reverse engineering is strictly prohibited. Access to source code is restricted and granted only under specific agreements. For licensing inquiries or commercial use, please contact: Tim C. Lueth

Last html export of this page out of FM database by TL: 2025-09-21