题目大意:输入 A , O , B 三个点的坐标,输出 K1 , K2 , K3 分别为角 AOB 四等分线上的点
题目分析:吐了吐了,这个题想到了一种解法,但是在实现的时候被高中的向量知识卡住了,要是这个题能过的话这次的红包应该能领不少呜呜呜
说回题目,借题目的图一用:
为了方便讲解,就将三条四等分线从左到右称为 XP , XC , XQ ,其中点 O 被我替换成了点 X
一开始想过可以求出角 AOB 的大小,然后除以四,每次将直线 XA 沿着点 X 旋转这么个角度就行了,不得不说思路很好,实现很难,放弃
接下来就想,既然是四等分点,求两次角平分线不就行了,那么我们可以先求出 XA 和 XB 的角平分线 XC ,然后再求出 XC 和 XA 的角平分线就是 XP 了,同理求出 XQ ,有了这个三个四等分线的直线方程,再令其与直线 AB 求交点,求出来的就是答案了
求角平分线有一种非常简单的方法,以 XA 和 XB 为例,可以先求出 XA 和 XB 代表的单位向量,根据向量的加法的特殊性质, XC 恰好就是 XA + XB ,这样一来题目就变的很简单了
好巧不巧,之前一直在用的 kuangbin 大牛的几何模板中,恰好有一个函数就是可以直接求单位向量的
需要注意的地方是,一开始是直线 XA ,其向量就是 ( OA - OX ) ,这里的 O 就是坐标原点
还有一点就是,直接这样求出来的 XC 是单位向量!!需要借助点 X 转换回 XC 这条直线才能进行后续操作,这里需要借助的知识就是,知道单位向量和直线上的一个点的坐标后如何得到直线方程,因为点 X 肯定在直线上的,所以点 X + XC 肯定也是在直线上,两点确定一条直线,这样直线得方程就确定好了
剩下的就是调用模板里的函数了
代码: