问题描述:
以起点(x1,y1)和已知点(x2,y2)的直线上,求从起点开始,长度为r的点(所要求的点)的坐标
解决方案:
1.根据直线方程y=kx+b,可以求出k、b的值
2.根据圆的一般方程(x-a)^2+(y-b)^2=r^2,加上上面的公式,就可以计算出来了
实现代码:
public static short[] getStraightLinePoint(int x1, int y1, int x2, int y2,
int radius) {
short x3 = 0;
short y3 = 0;
float k = 0;
float b = 0;
if ((x2 - x1) == 0 && (y2 - y1 == 0)) {
return null;
}
if ((x2 - x1) == 0) {
if (y2 > y1) {
x3 = (short) x1;
y3 = (short) (y1 + radius);
return new short[] { x3, y3 };
} else {
x3 = (short) x1;
y3 = (short) (y1 - radius);
return new short