function baseRotate(x, y, rz)
local x2 = x * cos(rz) - y * sin(rz)
local y2 = x * sin(rz) + y * cos(rz)
return x2, y2
end
-- ZYX rotation
function rotate(x, y, z, rx, ry, rz)
y, z = baseRotate(y, z, rx)
x, z = baseRotate(-x, z, ry)
x = -x
x, y = baseRotate(x, y, rz)
return x, y, z
end
function setTurnVelocityAlong(vehElement, x, y, z, v)
-- Normalize vector
local r = sqrt(x * x + y * y + z * z)
local x2, y2, z2 = x * v / r, y * v / r, z * v / r
-- Rotate vector
local rx, ry, rz = getElementRotation(vehElement, "ZYX")
x, y, z = rotate(x2, y2, z2, math.rad(rx), math.rad(ry), math.rad(rz))
-- Set turn velocity
return setVehicleTurnVelocity(vehElement, x, y, z)
end
{"text":"text","html5":"html","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"lua","bash":"sh","erlang":"erlang","go":"golang","c":"c_cpp","cpp":"c_cpp","diff":"diff","latex":"latex","sql":"sql","xml":"xml","0":"text","abap":"abap","actionscript":"actionscript","actionscript3":"actionscript","ada":"ada","apache":"apache_conf","applescript":"applescript","asm":"assembly_x86","autohotkey":"autohotkey","closure":"closure","cobol":"cobol","coffeescript":"coffee","cpp-winapi":"c_cpp","c_loadrunner":"c_cpp","c_mac":"c_cpp","c_winapi":"c_cpp","csharp":"csharp","d":"d","dart":"dart","dot":"dot","eiffel":"eiffel","fortran":"fortran","groovy":"groovy","haskell":"haskell","haxe":"haxe","ini":"ini","io":"io","java":"java","java5":"java","make":"makefile","matlab":"matlab","mysql":"mysql","objc":"objectivec","ocaml":"ocaml","pascal":"pascal","perl":"perl","perl6":"perl","postgresql":"pgsql","powershell":"powershell","prolog":"prolog","properties":"properties","rails":"ruby","rust":"rust","scala":"scala","scheme":"scheme","smarty":"smarty","tcl":"tcl","vala":"vala","vb":"vbscript","verilog":"verilog","vhdl":"vhdl","yaml":"yaml"}