CGL_2_C: Cross Point
交点を求める問題
これはやった
って前も言った気がしないでもないけど今回は大丈夫じゃないかな
交わるっていう条件がついてたし、外積でなんかいい感じにできてたし
昔の名残でintersection_ratio
っていう関数が残ってたのを
intersects
から呼ばなくなったからintersection
にまとめて
整理してしまう
def intersection(self, other: 'Segment') -> Point:
a = self.vector()
b = other.vector()
c = self.p1 - other.p1
s = b.cross(c) / a.cross(b)
return self.p1 + s * a
うん、十分に正解になれるシンプルさ
mainは前とほとんど同じ
def main() -> None:
q = int(input())
for _ in range(q):
x0, y0, x1, y1, x2, y2, x3, y3 = \
[int(x) for x in input().split()]
s1 = Segment(Point(x0, y0), Point(x1, y1))
s2 = Segment(Point(x2, y2), Point(x3, y3))
p = s1.intersection(s2)
print(p.x, p.y)
AC
解説と見比べる
だいぶ違う図を描いてるなあ
ヒントを見たとき、なんかそんな気もしなくはなかったけど
式もほんとに同じことを言っているのかわからない程度には違う
でもまあいいや