「AOJ再挑戦81~85」の編集履歴(バックアップ)一覧に戻る

AOJ再挑戦81~85 - (2014/02/02 (日) 18:21:14) の1つ前との変更点

追加された行は青色になります

削除された行は赤色になります。

 *問81 A Symmetric Point
 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0081
+線対称な点を計算せよという問題。
 
 解法
 数学の歴史に変換や特定の条件を満たす点を求めるための計算式のリストをひたすら作るというものがありました。
 線対称な点を求めるというのもその一つで行列演算にしたがえばいいだけです。
-
+まあ線対称くらいなら行列演算してもいいけれど。
+点によっては(19世紀の幾何の話を探るとあるのだけれど)x座標一つを求める式が30行くらいになる問題とかざら。
+それくらいになると公式をプログラムに翻訳するだけでもバグが入りそうで怖い。
 
  #include<stdio.h>
  int main(){
   	double x1,y1,x2,y2,x3,y3,dx2,dy2,dx3,dy3,ab,ansX,ansY;
  	while(scanf("%lf,%lf,%lf,%lf,%lf,%lf",&x1,&y1,&x2,&y2,&x3,&y3)!=EOF){
  		dx2=x2-x1;
  		dy2=y2-y1;
  		dx3=x3-x1;
  		dy3=y3-y1;
  		ab=dx2*dx2+dy2*dy2;
   		ansX=(dx3*(dx2*dx2-dy2*dy2)+dy3*2*dx2*dy2)/ab;
  		ansY=(dx3*2*dx2*dy2+dy3*(dy2*dy2-dx2*dx2))/ab;
  		printf("%lf %lf\n",ansX+x1,ansY+y1);
  	}
  }