Kennnnnnji / Intersect

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

个人项目作业

实现一个能求解简单几何形状之间交点的控制台程序。

给定 N 条直线,询问平面中有多少个点在至少 2 条给定的直线上。题目输入保证答案只有有限个。

输入格式

  • 第 1 行:一个自然数 N >= 1,表示输入的直线的数目。:具体的 N 的限制参见评分规则。
  • 第 2 行至第 N + 1 行:每行描述一条直线。具体格式如下:
    • 直线:L ,表示通过点 (x1, y1) 和 (x2, y2) 的直线。输入保证给定两点不重合。

所有直线参数均为整数,范围为 (-100000, 100000)。

输出格式

共 1 行,输出平面中满足需求的点的数目。

算法

m条直线的交点数 = r条平行线与m-r条直线交叉的交点数+ m-r条直线本身的交点数 = r*(m-r) + m-r条直线之间的交点数。

计算2条直线交点

若某一直线为水平直线,斜率为0,此时交点纵坐标直接取水平线上两点任一点的纵坐标。(该情况不会引起程序错误,因此未加考虑)

若某一直线为竖直直线,斜率不存在,此时交点横坐标直接取竖直线上两点任一点的横坐标。(代码考虑L2可能存在该情况)

若两条直线均水平或均竖直,则无交点。(代码未考虑该情况)

About


Languages

Language:C++ 95.6%Language:C 4.4%