I did a quick investigation. EZrotate will not return a Euler angle with a Y value from 0-360. It seems to return the same value as DBP, but you can use it's AxisAngles rotation system to derive the angle you're specifically after. Here's a little demo. You can't run it, but you can see how easy it is:
set display mode 1024,768,32,0
autocam off
sync on: sync rate 30
phy start
make object sphere 1,10
position object 1,0,5,0
phy make rigid body dynamic sphere 1
make object box 2,100,10,100
position object 2,0,-5,0
phy make rigid body static box 2
position camera 0,100,100
point camera 0,0,0
do
`Spin sphere
phy set rigid body angular velocity 1,0,1,0
TweakAngleWithEzRotate()
`Display sphere yangle
text 1,1,"DBP Angle Y: " + str$(object angle y(1))
phy update
sync
loop
function TweakAngleWithEzRotate()
EZRo_SetEuler object angle x(1),object angle y(1),object angle z(1)
EZRo_FindAxisAngles
text 1,21,"EZRo Angle Y: " + str$(EZRo_GetAxisAngleY())
endfunction
Here's the EZRotate definition for axis angles:
Quote: "Axis angles are defined by an XYZ angle value. The Y angle defines the global Heading angle (0-360 degrees) of the forward axis (Z). The X angle value defines pitch (-90 to 90 degrees) of the forward axis (z). The Z angle defines the amount of “roll” on the axis defined by the Y and X angle values."
This is actually much how people expect DB Euler angles to work, and lots of peeps over the years have questioned if DBs angles were buggy. Well, they were at one point, but they're not now. It's just Euler angles mess with your head.
EZRotates axis angles seem like a good way to work with angles in 3D in a way that makes sense. Then all you do is call the EZRo_FindEuler command, and rotate your object in DBP using the calculated Euler angles. Easy stuff.
I've had EzRotate for a while now, but not really used it. It's definitely proving its worth each time I do though.