Line.lua 1.2 KB
cc.exports.Line = class("Line")

function Line:ctor(startPoint, endPoint) 
	self.startPoint = startPoint;
	self.endPoint = endPoint;
	return self
end
function Line:getAngle()
	return math.atan2(self.endPoint.y - self.startPoint.y, self.endPoint.x - self.startPoint.x);
end

local function distance(p1,p2)
    local dx = math.abs(p2.x - p1.x);
    local dy = math.abs(p2.y - p1.y);
    return math.sqrt(dx * dx + dy * dy)
end
--	/**
--	 * 获得线的长度
--	 * @return 
--	 */
function Line:getLength()
    return Point.distance(self.startPoint, self.endPoint); 
end

--	/**
--	 * 根据步长获取直线上平均分布的点
--	 * @return 
--	 */
function Line:getSegmentPointsByStep(_step)
	local _time = self:getLength()/_step;
	local _arr = {};
	for i=1,_time do
		local _p = self:getPoint(i/_time);
		_arr[#_arr+1] = _p;
	end
	return _arr;
end
--	/**
--	 * 按比例获得线上某点的坐标
--	 * @param time	在线上的比例位置	
--	 **/
function Line:getPoint(time)
	local point = {};
	point.x = self.startPoint.x + (self.endPoint.x - self.startPoint.x)*time;
	point.y = self.startPoint.y + (self.endPoint.y - self.startPoint.y)*time;
	return point;
end
return Line