Path任意点垂直线计算
如上图所示,需要计算Path上任意点的垂线;
首先得到PathMeasure
PathMeasure pathMeasure = new PathMeasure(mPath, false);
我们先看下pathMeasure中的
boolean getPosTan (float distance, float[] pos, float[] tan)
tan 用来描述 Path 上某一点的切线方向,两个数值 tan[0] 和 tan[1] 来描述这个切线的方向(切线方向与x轴夹角) ,看上面公式可知 tan 既可以用 对边/邻边 来表述,也可以用 sin/cos 来表述,此处用两种理解方式均可以(注意下面等价关系)
tan[0] = cos = 邻边(单位圆x坐标) tan[1] = sin = 对边(单位圆y坐标)
所以我们可以算出该点的斜率k = tan[1] / tan[0]
两个斜率乘积为-1关系证明了两条直线相互垂直。斜率计算ax+by+c=0中,k=-a/b
所以可以得到垂线的斜率k1 = -1 / k
然后根据直线方程 y = kx+b 且过交点,所以可以算出b = y - kx,,,得到b,,,
这样就得到了垂线方程中的k和b,
发布评论
热门评论区: