AOJ0081 A Symmetric Point
問題リンク A Symmetric Point
- 解法
直線P1P2と直線QRの交点Pをもとめて、QPを倍伸ばしたところがRだと思ってやってみたがWAをくらい、じゃあもういいよ!って手計算で点Rを計算しました。
QRの中点はP1P2上にある
QRとP1P2は直交する
の2つの条件から連立方程式を解きました。
- ソース
import java.util.Scanner; //A Symmetric Point public class AOJ0081 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String[] s = sc.next().split(","); double x1 = Double.parseDouble(s[0]); double y1 = Double.parseDouble(s[1]); double x2 = Double.parseDouble(s[2]); double y2 = Double.parseDouble(s[3]); double x3 = Double.parseDouble(s[4]); double y3 = Double.parseDouble(s[5]); if(x1==x2){ x3 = x3+(x1-x3)*2; System.out.println(x3+" "+y3); } else if(y1==y2){ y3 = y3+(y1-y3)*2; System.out.println(x3+" "+y3); } else{ double alpha = (y1-y2)/(x1-x2); double beta = y1-x1*alpha; double x = (2*y3*alpha-2*alpha*beta+x3-alpha*alpha*x3)/(alpha*alpha+1); double y = (x3-x)/alpha+y3; System.out.println(x+" "+y); } } } }