题目鬼长的。
意思就是给出两已知点坐标,还有目的坐标与这两点坐标的角度值,求出目的坐标。
一下想到的是坐标系上两线交叉的位置即目的坐标
但是再求斜率的时候遇上了麻烦- -
于是就找了一份代码研究~
下面放代码,然后再解释:
#include <stdio.h>
#include <math.h>
#define PI acos(-1.0) //圆周率
int main()
{
int t;
double x1,y1,d1,x2,y2,d2; //我第一次用float,结果会WA
double 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啊这些初中就学的东西。