kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

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

解説と見比べる
だいぶ違う図を描いてるなあ
ヒントを見たとき、なんかそんな気もしなくはなかったけど
式もほんとに同じことを言っているのかわからない程度には違う
でもまあいいや