Tidy up drawing and limit iteration
- Limit FABRIK iteration to 100 - Fill background to GREEN for greenscreen purposes - Draw circles at joints to smooth out the inter-jointsmaster
parent
4ee7208651
commit
3d1a4e7cd8
11
joints.c
11
joints.c
|
@ -15,7 +15,7 @@ Body* init_body(int N, float link_length, float root_x, float root_y){
|
||||||
body->current_length = link_length * (N - 1);
|
body->current_length = link_length * (N - 1);
|
||||||
body->target = (Vector2){root_x, body->total_length};
|
body->target = (Vector2){root_x, body->total_length};
|
||||||
body->final_target = (Vector2){root_x, body->total_length};
|
body->final_target = (Vector2){root_x, body->total_length};
|
||||||
body->angle_limit = PI/6;
|
body->angle_limit = PI;
|
||||||
|
|
||||||
body->root_pos = (Vector2){root_x, root_y};
|
body->root_pos = (Vector2){root_x, root_y};
|
||||||
|
|
||||||
|
@ -106,9 +106,12 @@ void update_body(Body *body){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Perform FABRIK
|
||||||
double error = 1;
|
double error = 1;
|
||||||
|
int iterations = 0;
|
||||||
Vector2 prev_pos;
|
Vector2 prev_pos;
|
||||||
while (error > 1e-2){
|
while (error > 1e-2 && iterations < 100){
|
||||||
|
++iterations;
|
||||||
prev_pos = body->joints[body->N-1].pos;
|
prev_pos = body->joints[body->N-1].pos;
|
||||||
|
|
||||||
// Backward Pass
|
// Backward Pass
|
||||||
|
@ -156,9 +159,13 @@ void draw_body(Body* body){
|
||||||
DrawLineEx(body->joints[i].pos, body->joints[i+1].pos, body->N - i, BLACK);
|
DrawLineEx(body->joints[i].pos, body->joints[i+1].pos, body->N - i, BLACK);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
DrawCircleV(body->joints[i].pos, 5, BLUE);
|
DrawCircleV(body->joints[i].pos, 5, BLUE);
|
||||||
|
#else
|
||||||
|
DrawCircleV(body->joints[i].pos,(int)((body->N - i) / 2), BLACK);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
DrawCircleV(body->target, 3, RED);
|
DrawCircleV(body->target, 3, RED);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void free_body(Body *body){
|
void free_body(Body *body){
|
||||||
|
|
Loading…
Reference in New Issue