RT

解决方案 »

  1.   


    可以试试:
    假设第一条线的方程: y1=kx1+a
        第二条线的方程: y2=(1/k)x2+b然后把前两个点的坐标(x1,y1)带入第一个方程,把垂直线上的点(x2,y2)带入第二个方程,解出三个参数k、a、b。
      

  2.   

    算出AB两点之间坐标和长度的比例,然后再算出50米所对应的坐标偏移值即可。不过是在A的基础上加还是减就不一定了,要看是在北半球还是南半球
      

  3.   

    既然是地球经纬度,C点的纵坐标跟A点的纵坐标一样吧?C点的横坐标等于A点的横坐标+或者-50
    不是这样么?
      

  4.   

    是的当AB跟AC和经纬度平行的时候会有这样的情况出现,但是不平行的情况比平行的情况要多很多。
      

  5.   

    如果知道了C到A的距离,那么找出AB线上一点D,从A到D的距离等于A到C的距离,即AC=AD;
    然后D旋转90度(顺时针或者逆时针),即可得到你要的C点坐标了呀!!
      

  6.   


    public static void RotatePoint(ref double pX, ref double pY, int angle)
            {
                double fpx, fpy;
                double tmp;            while (angle < 0)
                    angle += 360;            while (angle >= 360)
                    angle -= 360;            if (angle == 0)
                    return;            if (angle == 90) 
                {
                    tmp = pX;
                    pX = pY;
                    pY = -tmp;
                }
                else if (angle == 180)    
                {
                    pX = -pX;
                    pY = -pY;
                }
                else if (angle == 2700)    
                {
                    tmp = pX;
                    pX = -pY;
                    pY = tmp;
                }
                else
                {
                    fpx = (pY * Math.Sin(angle * Math.PI / 180)) + (pX * Math.Cos(angle * Math.PI / 180));
                    fpy = (pY * Math.Cos(angle * Math.PI / 180)) - (pX * Math.Sin(angle * Math.PI / 180));                pX = (int)Math.Round(fpx);
                    pY = (int)Math.Round(fpy);
                }
            }
      

  7.   

    else if (angle == 2700)   
    改一下: else if (angle == 270)   
      

  8.   

    D点很容易找啊!!
    AB线与水平角度可以知道吧??(Yb-Ya)/(Xb-Xa)
    D点坐标:(A点的X坐标+AC距离*Cos角度,A点的Y坐标+AC距离*sin角度)