load_success = (api) => {
api.start(function () {
api.addEventListener("viewerready", function () {
api.getNodeMap(function (err, nodes) {
const end_effector = getNodeByName(nodes, end_effector_ID);
const L1A = getNodeByName(nodes, L1A_ID);
const L2A = getNodeByName(nodes, L2A_ID);
const L1B = getNodeByName(nodes, L1B_ID);
const L2B = getNodeByName(nodes, L2B_ID);
(function initialize() {
updateMatrix();
})();
[x, y].forEach(slider => {
slider.addEventListener('input', updateMatrix);
slider.addEventListener("mousedown", () => {
setTimeout(updateMatrix, 100);
});
slider.addEventListener("change", updateMatrix);
});
function updateMatrix() {
mutable x_value = x.value;
mutable y_value = y.value;
mutable y_value_offset = mutable y_value - y_offset - y_offset_model;
translateNode(api, end_effector.instanceID, [mutable x_value, 0, -mutable y_value_offset]);
const angle1A = -degToRad(theta_1_A.value);
const angle1B = -degToRad(theta_1_B.value);
const angle2A = -degToRad(theta_2_A.value - theta_2_offset_model);
const angle2B = -degToRad(theta_2_B.value + theta_2_offset_model);
rotateNode(api, L1A.instanceID, angle1A, 0, 1, 0);
rotateNode(api, L1B.instanceID, angle1B, 0, 1, 0);
rotateNode(api, L2A.instanceID, angle2A, 0, 1, 0);
rotateNode(api, L2B.instanceID, angle2B, 0, 1, 0);
}
});
});
});
};