题意:有两个树,求两棵树连线上是否存在垂线,求垂线两个端点的左边。
思路:其实题目的意思,就好比是四个点构成一个正方形,类似的,就是要求其他两个端点的坐标,我用的是向量旋转,求另外两点。
公式就是(xcost - ysint,xsint + ysint),这里正好t为直角,所以就是旋转之后的向量是(-y, x)
#include<stdio.h>
int main(){
double x1, y1, x2, y2;
double ax1, ay1, ax2, ay2;
while (scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2) != EOF){
if (x1 == x2 && y1 == y2){
printf("Impossible.\n");
continue;
}
double n, m;
n = (x1 + x2) / 2.0;
m = (y1 + y2) / 2.0;
ax1 = n - (y1 - m);
ay1 = m - (n - x1);
ax2 = 2 * n - ax1;
ay2 = 2 * m - ay1;
printf("%.10lf %.10lf %.10lf %.10lf\n", ax1, ay1, ax2, ay2);
}
return 0;
}