(rands, width = 50)
| 64 | } |
| 65 | |
| 66 | export function generateEyePoints(rands, width = 50) { |
| 67 | |
| 68 | let P0_upper = [-width / 2 + rands.P0_upper_randX * width / 16, rands.P0_upper_randY * rands.height_upper / 16]; |
| 69 | let P3_upper = [width / 2 + rands.P3_upper_randX * width / 16, rands.P3_upper_randY * rands.height_upper / 16]; |
| 70 | let P0_lower = P0_upper;// Starting at the same point as the upper eyelid |
| 71 | let P3_lower = P3_upper;// Ending at the same point as the upper eyelid |
| 72 | let eye_true_width = P3_upper[0] - P0_upper[0]; |
| 73 | |
| 74 | // Upper eyelid control points |
| 75 | let P1_upper = [P0_upper[0] + rands.offset_upper_left_x, P0_upper[1] + rands.offset_upper_left_y]; // First control point |
| 76 | let P2_upper = [P3_upper[0] - rands.offset_upper_right_x, P3_upper[1] + rands.offset_upper_right_y]; // Second control point |
| 77 | |
| 78 | |
| 79 | // Lower eyelid control points |
| 80 | let P1_lower = [P0_lower[0] + rands.offset_lower_left_x, P0_lower[1] - rands.offset_lower_left_y]; // First control point |
| 81 | let P2_lower = [P3_lower[0] - rands.offset_lower_right_x, P3_lower[1] - rands.offset_lower_right_y]; // Second control point |
| 82 | |
| 83 | // now we generate the points for the upper eyelid |
| 84 | let upper_eyelid_points = []; |
| 85 | let upper_eyelid_points_left_control = []; |
| 86 | let upper_eyelid_points_right_control = []; |
| 87 | let upper_eyelid_left_control_point = [P0_upper[0] * (1 - rands.left_converge0) + P1_lower[0] * rands.left_converge0, P0_upper[1] * (1 - rands.left_converge0) + P1_lower[1] * rands.left_converge0]; |
| 88 | let upper_eyelid_right_control_point = [P3_upper[0] * (1 - rands.right_converge0) + P2_lower[0] * rands.right_converge0, P3_upper[1] * (1 - rands.right_converge0) + P2_lower[1] * rands.right_converge0]; |
| 89 | for (let t = 0; t < 100; t++) { |
| 90 | upper_eyelid_points.push(cubicBezier(P0_upper, P1_upper, P2_upper, P3_upper, t / 100)); |
| 91 | upper_eyelid_points_left_control.push(cubicBezier(upper_eyelid_left_control_point, P0_upper, P1_upper, P2_upper, t / 100)); |
| 92 | upper_eyelid_points_right_control.push(cubicBezier(P1_upper, P2_upper, P3_upper, upper_eyelid_right_control_point, t / 100)); |
| 93 | } |
| 94 | |
| 95 | for (let i = 0; i < 75; i++) { |
| 96 | let weight = ((75.0 - i) / 75.0) ** 2 |
| 97 | upper_eyelid_points[i] = [upper_eyelid_points[i][0] * (1 - weight) + upper_eyelid_points_left_control[i + 25][0] * weight, upper_eyelid_points[i][1] * (1 - weight) + upper_eyelid_points_left_control[i + 25][1] * weight] |
| 98 | upper_eyelid_points[i + 25] = [upper_eyelid_points[i + 25][0] * weight + upper_eyelid_points_right_control[i][0] * (1 - weight), upper_eyelid_points[i + 25][1] * weight + upper_eyelid_points_right_control[i][1] * (1 - weight)] |
| 99 | } |
| 100 | |
| 101 | |
| 102 | // now we generate the points for the upper eyelid |
| 103 | let lower_eyelid_points = []; |
| 104 | let lower_eyelid_points_left_control = []; |
| 105 | let lower_eyelid_points_right_control = []; |
| 106 | let lower_eyelid_left_control_point = [P0_lower[0] * (1 - rands.left_converge0) + P1_upper[0] * rands.left_converge0, P0_lower[1] * (1 - rands.left_converge0) + P1_upper[1] * rands.left_converge0]; |
| 107 | let lower_eyelid_right_control_point = [P3_lower[0] * (1 - rands.right_converge1) + P2_upper[0] * rands.right_converge1, P3_lower[1] * (1 - rands.right_converge1) + P2_upper[1] * rands.right_converge1]; |
| 108 | for (let t = 0; t < 100; t++) { |
| 109 | lower_eyelid_points.push(cubicBezier(P0_lower, P1_lower, P2_lower, P3_lower, t / 100)); |
| 110 | lower_eyelid_points_left_control.push(cubicBezier(lower_eyelid_left_control_point, P0_lower, P1_lower, P2_lower, t / 100)); |
| 111 | lower_eyelid_points_right_control.push(cubicBezier(P1_lower, P2_lower, P3_lower, lower_eyelid_right_control_point, t / 100)); |
| 112 | } |
| 113 | |
| 114 | for (let i = 0; i < 75; i++) { |
| 115 | let weight = ((75.0 - i) / 75.0) ** 2 |
| 116 | lower_eyelid_points[i] = [lower_eyelid_points[i][0] * (1 - weight) + lower_eyelid_points_left_control[i + 25][0] * weight, lower_eyelid_points[i][1] * (1 - weight) + lower_eyelid_points_left_control[i + 25][1] * weight] |
| 117 | lower_eyelid_points[i + 25] = [lower_eyelid_points[i + 25][0] * weight + lower_eyelid_points_right_control[i][0] * (1 - weight), lower_eyelid_points[i + 25][1] * weight + lower_eyelid_points_right_control[i][1] * (1 - weight)] |
| 118 | } |
| 119 | for (let i = 0; i < 100; i++) { |
| 120 | lower_eyelid_points[i][1] = -lower_eyelid_points[i][1] |
| 121 | upper_eyelid_points[i][1] = -upper_eyelid_points[i][1] |
| 122 | } |
| 123 |
no test coverage detected