co = co or {} local co = co local CoVector2 = CoVector2 local math = math --返回一个CoVector2 function co.Vector2(x, y) -- print(debug.traceback("")) -- print("111111111111co.Vector2") return CoVector2.New(x, y) end co.free_vector2_list = co.free_vector2_list or {} co.free_vector2_num = co.free_vector2_num or 0 function co.TempVector2(x, y) local free_num = co.free_vector2_num -- print("获取TempVector2:", free_num) if free_num > 0 then local v = co.free_vector2_list[free_num] co.free_vector2_list[free_num] = nil co.free_vector2_num = free_num - 1 v.x, v.y = x, y return v else local v = CoVector2.New(x, y) return v end end function co.InitTempVectorArray() for i=co.free_vector2_num, 90 do local v = CoVector2.New(0, 0) v:DeleteV() end end function co.Vector2FromTable(t) return CoVector2.New(t.x, t.y) end function co.RadianToDegree(radian) return radian / math.pi * 180 end function co.DegreeToRadian(degree) return degree / 180 * math.pi end function co.TableXY(x, y) return {x=x, y=y} end function co.PointDistance(t1, t2) local xl = math.abs(t1.x - t2.x) local yl = math.abs(t1.y - t2.y) return math.sqrt(xl*xl + yl*yl) end function co.TableXYZ(x, y, z) return {x=x, y=y, z=z} end function co.TableXYFromPos(pos) return {x=pos.x, y=pos.y} end --把一个{x=.., y=..}的table归1化 function co.NormaliseXYTable(v) local l = math.sqrt(v.x * v.x + v.y * v.y) if l >= 1e-6 then local f = 1 / l v.x = v.x * f v.y = v.y * f end return l end --把一个{x=.., y=..},z=..的table归1化 function co.NormaliseXYZTable(v) local l = math.sqrt(v.x * v.x + v.y * v.y + v.z*v.z) if l >= 1e-6 then local f = 1 / l v.x = v.x * f v.y = v.y * f v.z = v.z * f end return l end function co.MulXYTable(t1, t2) return {x = t1.x*t2.x, y = t1.y*t2.y} end function co.SubtractXYTable(t1, t2 ) return {x=t1.x-t2.x, y=t1.y-t2.y} end function co.AddXY(t1, t2 ) return {x= t1.x + t2.x, y = t1.y+t2.y} end function co.AddXYZ(t1, t2 ) return {x= t1.x + t2.x, y = t1.y+t2.y, z = t1.z + t2.z} end function co.MoveXYTable(t1, dir, dist) t1.x = t1.x + dir.x * dist t1.y = t1.y + dir.y * dist end co.NegativeYAix = co.Vector2(0, -1) co.XAix = co.Vector2(1, 0)