1070[Hansel and Grethel]

来源:互联网 发布:免费淘宝店标在线制作 编辑:程序博客网 时间:2024/05/19 04:03

题目鬼长的。

意思就是给出两已知点坐标,还有目的坐标与这两点坐标的角度值,求出目的坐标。

一下想到的是坐标系上两线交叉的位置即目的坐标

但是再求斜率的时候遇上了麻烦- -

于是就找了一份代码研究~

下面放代码,然后再解释:

#include <stdio.h>#include <math.h>#define PI acos(-1.0) //圆周率int main(){int t;double x1,y1,d1,x2,y2,d2; //我第一次用float,结果会WAdouble x,y,k1,k2;int i;scanf("%d", &t);for(i = 0; i < t; i++){scanf("%lf %lf %lf", &x1,&y1,&d1);scanf("%lf %lf %lf", &x2,&y2,&d2);k1 = tan((90-d1)*PI/180); //计算斜率k2 = tan((90-d2)*PI/180);x = (y2 - y1 + k1 * x1 - k2 * x2) / (k1 - k2); //列方程解出来的表达式y = (k1 * k2 * x2 - k1 * k2 * x1 + k2 * y1 - k1 * y2) / (k2 - k1);printf("%.4lf %.4lf\n", x,y);}return 0;}

输出也可用cout~不过有小数点什么的还是printf最方便了~

define是精切定义PI的值

弧度=角度*PI/180

斜率=tan(与x轴的角度)=tan((90-d1)*PI/180)

因为在计算机定义中,tan,cos这些函数后边要接的是弧度不是角度。

剩下的就好理解了~

最后输出!

虽然不是自己写出来的~不过又重新复习了一下斜率啊tan啊这些初中就学的东西。

原创粉丝点击