数据源 和 格式如下:
1,33751.5314,32287.3624,100.234,DCM1
2,33755.7775,32284.7221,101.234,DCM2
3,33760.0235,32282.0817,102.234,DCM3
4,33764.2696,32279.4413,103.234,DCM4
5,33768.091,32277.065,104.234,DCM5
6,33771.4878,32274.9527,105.234,DCM6
7,33773.5272,32273.6881,106.234,DCM7
8,33775.3112,32272.5795,107.234,DCM8
9,33771.6662,32331.6078,108.234,DCM9
10,33740.8297,32294.0172,109.234,DCM10小弟需要构建一个数组,里面存储直线。上面数据中的每一行中的第二,三列分别是 x和y坐标。直线数组是由 上面的点按照 顺序连成的, 比如 1和2 连,2和3连,一直练到最后一个,不用连回头。  然后计算某一个点到这些线的距离。碰到难题了,请求帮助。
class myLine{
Point p0, p1, p2;

myLine(Point p1, Point p2){

}

//calculate the distance between p0 and line(p1,p2)
public void p2LineDist()
{

}
}

解决方案 »

  1.   

    点到线的距离?
    直线方程 ax+b = y
    经过(p1,p2)
    a*p1.x + b = p1.y;
    a*p2.x + b = p2.y;
    可以求出a,b来吧?假设垂直焦点 ph
    a*ph.x + b = ph.y由于k1*k2 = -1;
    所以(p0.x-ph.x)(p1.x-p2.x)+(p0.y-ph.y)(p1.y-p2.y) = 0;
    求出ph的x,y距离也就出来了。
    a*ph.x + b = ph.y//a,b可以由前面两个算式算出来
    (p0.x-ph.x)(p1.x-p2.x)+(p0.y-ph.y)(p1.y-p2.y) = 0;
    2个方程 ,2个一元一次参数,必定能解出来。你把公式倒一下就出来了吧,反正有点头疼,要去直接去网上找个公式对一对被,应该有现成。
    搜索三角形高的计算