2017-10-11 10 views
0

人!ルア "LookAt"機能を簡略化

私はルア語で書かれた "LookAt"という名前の作業関数を持っています。

この機能のコードとロジックに間違いはありません。

しかし、私は数学ロジックを単純化できると信じています。

function LookAt(target) 
    local origin = Vec3.New(Engine.ClientData.Origin) 
    local direction = origin - target 

    Engine.Pitch = math.deg(math.atan(direction.Z, math.sqrt((direction.X^2) + (direction.Y^2)))) 
    Engine.Yaw = math.deg(math.atan(direction.Y, direction.X)) - 180.0 
end 
+0

'Engine.Yaw = math.deg(math.atan(-direction.Y、-direction.X))' –

答えて

0

私はずっとあなたがに数学のロジックを簡素化に行うことができますが、ないと思います。ここでは冗長性はほとんどありません。しかし、これを次のように分割することができます:

function atan_deg(y, x) 
    return (math.deg(math.atan(y, x))) 
end 

function hypotenuse(x, y) 
    return (math.sqrt(x^2 + y^2)) 
end 

function LookAt(target) 
    local origin = Vec3.New(Engine.ClientData.Origin) 
    local direction = origin - target 
    local X, Y, Z = direction.X, direction.Y, direction.Z 

    Engine.Pitch = atan_deg(Z, hypotenuse(X, Y)) 
    Engine.Yaw = atan_deg(Y, X) - 180.0 
end