Uva--10250 (简单几何)

2014-06-12 21:31:35

题意&思路:哎,yy多了浪费时间,静下心来细心推导5分钟便可出。简单题不多说。

#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;

int main(){
    double x1,y1,x2,y2,x3,y3,C,xa,ya,xb,yb;
    while(cin >> x1 >> y1 >> x2 >> y2){
        x3 = (x1 + x2) / 2;
        y3 = (y1 + y2) / 2;
        if(y1 == y2){
            double d = fabs(x1 - x2);
            xa = xb = x3;
            ya = y1 + d / 2;
            yb = y1 - d / 2;
        }
        else if(x1 == x2){
            double d = fabs(y1 - y2);
            ya = yb = y3;
            xa = x1 - d / 2;
            xb = x1 + d / 2;
        }
        else{
            C = ((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) / 4;
            xa = sqrt(C * (y2 - y1) * (y2 - y1) / ((y2 - y1) * (y2 - y1) + (x1 - x2) * (x1 - x2))) + x3;
            ya = (xa - x3) * (x1 - x2) / (y2 - y1) + y3;
            
            xb = 2 * x3 - xa;
            yb = 2 * y3 - ya;

        }
        printf("%.10lf %.10lf %.10lf %.10lf\n",xa,ya,xb,yb);
    }
    return 0;
}

 

 

转载于:https://www.cnblogs.com/naturepengchen/articles/3784714.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值