local function ensure_equipped(ptype, item) local cur = peripheral.getType"left" print(cur) if cur == ptype then return true end for i = 1,16 do local det = turtle.getItemDetail(i) if det and det.name == item then turtle.select(i) return turtle.equipLeft() end end return false, "couldn't find "..item end local function ensure_modem() return ensure_equipped("modem","computercraft:wireless_modem_normal") end local function ensure_scanner() return error("aaa") end assert(ensure_modem()) local POS = vector.new(gps.locate()) local function get_facing() while turtle.detect() do turtle.turnRight() end turtle.forward() local newpos = vector.new(gps.locate()) turtle.back() return newpos - POS end local FACING = get_facing() local function moveby_y(delta) local fn = turtle.up if delta < 0 then fn = turtle.down delta = -delta end for i=1,delta do fn() end end local function rotatev(v,nq) -- rotates v by n quarters nq = nq%4 if nq == 0 then return vector.new( v.x, v.y, v.z) elseif nq == 1 then return vector.new(-v.z, v.y, v.x) elseif nq == 2 then return vector.new(-v.x, v.y, -v.z) elseif nq == 3 then return vector.new( v.z, v.y, -v.x) end end local v = vector.new(1,0,2) for i=0,4 do print(i,rotatev(v,i)) end local function moveby_xz(dv) -- y component of dv is ignored end local datum = vector.new(-18, 128, -1837)