※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

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

AOJ再挑戦81~85 - (2014/02/02 (日) 18:14:06) の編集履歴(バックアップ)


問81 A Symmetric Point


解法
数学の歴史に変換や特定の条件を満たす点を求めるための計算式のリストをひたすら作るというものがありました。
線対称な点を求めるというのもその一つで行列演算にしたがえばいいだけです。


#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);
	}
}