1、线段与线段求交点
已知线段的起点和终点,求交点,这个比较简单,解2个二元一次方程可以求出。
a、我这里的算法是判断2条线段的定义域和值域是否有重合地方,有则进行下一步判断,没有这返回空,表示没有交点。
b、根据直线方程2点式y - y1 = (y2 - y1) / (x2 - x1)(x - x1),进行解方程,不过这之前先进行对斜率判段,分为斜率k不存在,k=0,k存在三种情况,
当然这里也可以分为2种情况,斜率存在与不存在。
c、最后解方程,求出根后,进行验证,验证是否在其值域和定义域内。
2、线段和圆弧求交点
已知线段的起点和终点,圆弧的圆心,弧的起点和弧长所对应角度(角度大于0表示逆时针偏移角度)
分析:圆弧有优弧和劣弧,顺时针和逆时针之别,所以这里用到一个带符号的角度来表示顺时针和逆时针。由于圆弧属于圆上的一段,我这里先用线段和圆的方程求交点,
再判断交点是否在圆弧上得出。
a、首先求圆弧的圆心到直线(线段)的距离d = (Ax0 + By0 + C) / (A^2 + B^2),这里要先求出线段的直线方程,这里我们用的是直线的一般方程表示,
就暂时用考虑斜率的问题了。
直线方程的一般式:Ax + By + C = 0;