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)
|