return function(R)
	require("./3d/geom")(R)

	R.Cam={}

	function R.Cam:new(pos,aim,up)
		local o={
			pos=pos,
			aim=aim,
			up=up,
		}
		setmetatable(o,self)
		self.__index=self
		return o
	end

    -- pos is a V4
    function R.Cam:setPos(pos)
        self.pos=pos
    end
    
    -- aim is a V4
    function R.Cam:setAim(aim)
        self.aim=aim
    end

    -- up is a V4
    function R.Cam:setUp(up)
        self.up=up
    end

	function R.Cam:getM44()
		return R.NewM44LookAt(self.pos,self.aim,self.up)
    end
end
