exports.transformPoint = function(tfm, pt){
	return {
		onCurve: pt.onCurve || false,
		cubic: pt.cubic || false,
		subdivided: pt.subdivided || false,
		x : pt.x * tfm.xx + pt.y * tfm.yx + tfm.x,
		y : pt.x * tfm.xy + pt.y * tfm.yy + tfm.y
	}
}
exports.inverse = function(tfm){
	var denom = tfm.xx * tfm.yy - tfm.xy * tfm.yx;
	return {
		xx : tfm.yy / denom,
		yx : -tfm.yx / denom,
		xy : -tfm.xy / denom,
		yy : tfm.xx / denom,
		x : -(tfm.x * tfm.yy - tfm.y * tfm.yx) / denom,
		y : -(-tfm.x * tfm.xy + tfm.y * tfm.xx) / denom,
	}
}
exports.untransform = function(tfm, pt){
	var xx = pt.x - tfm.x
	var yy = pt.y - tfm.y
	var denom = tfm.xx * tfm.yy - tfm.xy * tfm.yx
	return {
		onCurve: pt.onCurve || false,
		cubic: pt.cubic || false,
		subdivided: pt.subdivided || false,
		x : (xx * tfm.yy - yy * tfm.yx) / denom,
		y : (yy * tfm.xx - xx * tfm.xy) / denom
	}
}