Lua - 相机运动,计算Z.

时间:2016-05-16 10:38:01

标签: lua camera

我有一个我无法解决的数学问题。

我在Lua制作模型浏览器,鼠标移动连接到摄像机位置,摄像机位置有2种模式:固定和自由,自由工作完美无瑕,而固定似乎有计算正确Z的问题。

X和Y正确计算并且没有任何问题,但是Z似乎与X,Y方式一起扩展太多,如下所示:http://puu.sh/oTN1v/5846343f82.webm(每当我点击鼠标右键时会发生这些相机扭曲即使我不移动鼠标

function self:RightMouseClick()
local cx, cy = mousepos()
local radius = math.sqrt( math.pow( campos.x, 2 ) + math.pow( campos.y, 2 ) )
local ang = ( camorigin - campos ):Angle()

function self:Think()
    if input.IsMouseDown( MOUSE_RIGHT ) then
        local x = camorigin.x + radius * math.cos( math.rad( 1 ) * ( 180 + ang.yaw + ( cx - mousex() ) * 0.5 ) )
        local y = camorigin.y + radius * math.sin( math.rad( 1 ) * ( 180 + ang.yaw + ( cx - mousex() ) * 0.5 ) )
        local z = camorigin.z + radius * math.sin( math.rad( 1 ) * ( ang.pitch + ( cy - mousey() ) * 0.5 ) )

        campos = Vector( x, y, z )
    end
end

@Edit:如果您不知道此代码的含义,您还可以告诉我如何正确计算Z轴相机在轴周围的移动

1 个答案:

答案 0 :(得分:1)

从计算x,y,z中去除camorigin。