当前位置:编程学习 > C#/ASP.NET >>

已经两个点的坐标,求垂直线另外一点的坐标。哪位大哥可以帮帮忙啊??





RT --------------------编程问答-------------------- 哪位大哥看到了,帮忙一下吧 --------------------编程问答-------------------- 顶一个~~~ --------------------编程问答--------------------
引用 1 楼 qq373591361 的回复:
哪位大哥看到了,帮忙一下吧


可以试试:


假设第一条线的方程: y1=kx1+a
    第二条线的方程: y2=(1/k)x2+b

然后把前两个点的坐标(x1,y1)带入第一个方程,把垂直线上的点(x2,y2)带入第二个方程,解出三个参数k、a、b。 --------------------编程问答-------------------- 垂直线上的点A即在第一个线上也在第二个线上。 --------------------编程问答-------------------- 算出AB两点之间坐标和长度的比例,然后再算出50米所对应的坐标偏移值即可。不过是在A的基础上加还是减就不一定了,要看是在北半球还是南半球 --------------------编程问答--------------------
引用 4 楼 sp1234 的回复:
垂直线上的点A即在第一个线上也在第二个线上。

大哥,能不能把代码写一段给我看看,我数学差,那个方程我看不懂?拜托了。 --------------------编程问答--------------------
引用 5 楼 zhoujk 的回复:
算出AB两点之间坐标和长度的比例,然后再算出50米所对应的坐标偏移值即可。不过是在A的基础上加还是减就不一定了,要看是在北半球还是南半球

固定是北半球的,大哥能不能贴点代码给我看看呢??? --------------------编程问答-------------------- 没研究过、 顶顶 --------------------编程问答-------------------- 没有长度能求出来吗? --------------------编程问答-------------------- 兰州是做GIS的吧? --------------------编程问答-------------------- 貌似这个还得考虑 球面坐标系的投影问题..
不然经纬度 和 50米 这个不好对应啊 --------------------编程问答--------------------
引用 10 楼 walkghost 的回复:
兰州是做GIS的吧?

gps,算不算gis就不知道了? --------------------编程问答--------------------
引用 3 楼 sp1234 的回复:
引用 1 楼 qq373591361 的回复:

哪位大哥看到了,帮忙一下吧


可以试试:


假设第一条线的方程: y1=kx1+a
    第二条线的方程: y2=(1/k)x2+b

然后把前两个点的坐标(x1,y1)带入第一个方程,把垂直线上的点(x2,y2)带入第二个方程,解出三个参数k、a、b。


两条直线垂直 斜率相乘应该为 -1 吧!! --------------------编程问答--------------------
引用 3 楼 sp1234 的回复:
引用 1 楼 qq373591361 的回复:

哪位大哥看到了,帮忙一下吧


可以试试:


假设第一条线的方程: y1=kx1+a
  第二条线的方程: y2=(1/k)x2+b

然后把前两个点的坐标(x1,y1)带入第一个方程,把垂直线上的点(x2,y2)带入第二个方程,解出三个参数k、a、b。

如果只是方程的话,两个点,三个参数解不出来吧? --------------------编程问答--------------------
引用楼主 qq373591361 的回复:
RT

既然是地球经纬度,C点的纵坐标跟A点的纵坐标一样吧?C点的横坐标等于A点的横坐标+或者-50。。。
不是这样么? --------------------编程问答--------------------
引用 15 楼 guxiaobei 的回复:
引用楼主 qq373591361 的回复:
RT

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

是的当AB跟AC和经纬度平行的时候会有这样的情况出现,但是不平行的情况比平行的情况要多很多。 --------------------编程问答-------------------- 如果知道了C到A的距离,那么找出AB线上一点D,从A到D的距离等于A到C的距离,即AC=AD;
然后D旋转90度(顺时针或者逆时针),即可得到你要的C点坐标了呀!! --------------------编程问答--------------------
引用 17 楼 lkr2380869 的回复:
如果知道了C到A的距离,那么找出AB线上一点D,从A到D的距离等于A到C的距离,即AC=AD;
然后D旋转90度(顺时针或者逆时针),即可得到你要的C点坐标了呀!!


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);
            }
        } --------------------编程问答-------------------- else if (angle == 2700)   
改一下: else if (angle == 270)   
--------------------编程问答--------------------
引用 19 楼 lkr2380869 的回复:
else if (angle == 2700)  
改一下: else if (angle == 270)

大哥,你那个是D旋转90度的方法吗?那找D点有没有方法?望指教 --------------------编程问答-------------------- D点很容易找啊!!
AB线与水平角度可以知道吧??(Yb-Ya)/(Xb-Xa)
D点坐标:(A点的X坐标+AC距离*Cos角度,A点的Y坐标+AC距离*sin角度)
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,