首页 > 试题广场 >

两直线交点

[编程题]两直线交点
  • 热度指数:8327 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}你需要实现一个函数,接受的参数为两条直线 AB、CD,返回值为点类型的两直线的交点。
\hspace{15pt}
\hspace{15pt}函数接收的参数为:
{\hspace{20pt}}_\texttt{1.}\,由点 A 和点 B 构成的直线 AB
{\hspace{20pt}}_\texttt{2.}\,由点 C 和点 D 构成的直线 CD

\hspace{15pt}你需要实现的函数的返回值为:
\hspace{23pt}\bullet\,由直线 AB 和直线 CD 相交而得到的交点 P。若两直线交点不唯一,则返回点 (-1,-1)

输入描述:
\hspace{15pt}提供输入格式只是方便您在代码出错时进行调试,你只需要按照题目描述实现函数即可,并不需要关心数据的实际输入格式。

\hspace{15pt}输入包含两行:
\hspace{23pt}\bullet\,第一行包含四个正整数,分别为点 A 的横纵坐标的点 B 的横纵坐标。
\hspace{23pt}\bullet\,第二行包含四个正整数,分别为点 C 的横纵坐标的点 D 的横纵坐标。
\hspace{15pt}数据保证点 A 和点 B 不重合,点 C 和点 D 不重合,且若交点 P 存在则其横纵坐标的绝对值均在 10^4 以内。


输出描述:
\hspace{15pt}提供输出格式只是方便您在代码出错时进行调试,你只需要按照题目描述实现函数即可,并不需要关心数据的实际输出格式。

\hspace{15pt}输出一行两个实数,分别为直线 AB 直线 CD 交点 P 的横纵坐标。特别的,如果两直线交点不唯一,则输出  \text{-1 -1}
\hspace{15pt}注意,只要您的答案与标准答案之差在 10^{-6} 以内,就会被认为是正确的。
示例1

输入

0 0 1 1
0 2 2 0

输出

1.000000 1.000000

说明


按照输入格式,点 A 为 (0,0)点 B 为 (1,1)点 C 为 (0,2)点 D 为 (2,0)
图中绿线表示直线 AB,红线表示直线 CD,两直线交于点 P (1,1),此时点 P 与点 B 重合。

这道题你会答吗?花几分钟告诉大家答案吧!