How to caculate the a b c towers for delta printer
I have a program I setup to calculate the corners for a delta printer, to move to the A B C tower centers.
but I don't think I am getting the correct results.
this is how I am doing the math
void modify(mStruct *v,double build_radius)
{
double x_theta = 210,y_theta = 330,z_theta = 90;
v->A_towerx = build_radius * cos(x_theta);
v->A_towery = build_radius * sin(x_theta);
v->B_towerx = build_radius * cos(y_theta);
v->B_towery = build_radius * sin(y_theta);
v->C_towerx = build_radius * cos(z_theta);
v->C_towery = build_radius * sin(z_theta);
}
it seems to be off by a few mm's I suck at math so I assume I am going abut it wrong...
any suggestions?
Thanks gary
Comments
what I am trying to do is get the correct travel to the a b c towers to do the paper test in each corner.
as far as I know I only needed the to know that they are at 210 330 and 90 and than the, print radius or a little less than
the actual print radius which should give me the x y distance for each tower to start the calibration..
thanks gary
an example is I think if I use 100 for the radius the z corner c tower should be x 0 y 100
but with the math I entered in the c program the x 0 is coming out way off and so is the y.
so I assume my math calculation is not correct just looking to see if anyone knows the correct way to
do the math...
thanks gary
double x_theta = 210,y_theta = 330,z_theta = 90;
v->A_towerx = build_radius * cos(x_theta);
v->A_towery = build_radius * sin(x_theta);
v->B_towerx = build_radius * cos(y_theta);
v->B_towery = build_radius * sin(y_theta);
v->C_towerx = build_radius * cos(z_theta);
v->C_towery = build_radius * sin(z_theta);
when I cout<< the values with a radius of 100 I get
A corner x= -88.3877
A corner y= 46.7719
B corner x= -99.1199
B corner y= -13.2382
C corner x= -44.8074
C corner y= 89.3997
there defiantly not right but I'm not sure what your formula is ?
thanks gary
A corner x= -86.6025
A corner y= -50
B corner x= 86.6025
B corner y= -50
C corner x= 4.66906e-012
C corner y= 100
That worked fine I used a radius of 100 the only incorrect value was the C corner x should = 0
Thanks for you help
gary
thanks got it working ended up using
std::cout.precision(4);
cout <<"C corner x= "<<std::fixed<<towers.C_towerx<<endl;
now I get 0 correct awnser
Thanks gary