CGL_1_B: Reflection
こんどは直線について対称な点を求める問題
前回の問題とそっくり
こうでしょ
これでもう計算はできてしまうけど、もっと簡単な式にできるかもしれない
というところはちょっと気になる
まあでも、ACとれればいいんでしょ?(開き直り
Segmentクラスにひとつメソッドを追加して
def reflection(self, p: Point) -> Point:
x = self.projection(p)
return p + 2 * (x - p)
main()のprojection
をreflection
に変えるだけ
def main() -> None:
x1, y1, x2, y2 = [int(x) for x in input().split()]
p1 = Point(x1, y1)
p2 = Point(x2, y2)
l = Line(p1, p2)
q = int(input())
for _ in range(q):
x, y = [int(x) for x in input().split()]
p = Point(x, y)
a = l.reflection(p)
print(a.x, a.y)
AC
解説もこれ以上式変形はしてなかった
ところでreflectionはSegmentクラスのメソッドじゃなくて
Pointクラスのメソッドだったんじゃないかという気がしないでもない
a = l.reflection(p)
じゃなくて
a = p.reflection(l)
だったのでは、ということ
なんとなく、だけど