// SPDX-License-Identifier: MIT // Copyright (c) 2026 Incoprea // Move a pose partway along its shortest rotation // Not compiled or tested in-world // Setup: Use a spare owned prim. Set Euler START/END and T0..1. Touch for private calculations. // Stop / restore: Disable/remove. No camera or object settings are changed. // Notes: This uses the shortest relative rotation; it cannot preserve a deliberately requested extra revolution. // License: see LICENSE in this distribution. // Original Incoprea. MIT. Transform planning only. vector START=<10.0,20.0,350.0>; vector END=<40.0,-10.0,15.0>; float T=0.5; default { touch_start(integer detectedCount) { if(llDetectedKey(0)!=llGetOwner())return; if(T<0.0||T>1.0) { llOwnerSay("T must be0..1."); return; } rotation a=llEuler2Rot(START*DEG_TO_RAD); rotation b=llEuler2Rot(END*DEG_TO_RAD); rotation relative=b/a; float angle=llRot2Angle(relative); rotation partial=ZERO_ROTATION; if(angle>0.000001)partial=llAxisAngle2Rot(llRot2Axis(relative),angle*T); llOwnerSay("Interpolated rotation="+(string)(partial*a)); } }