已经两个点的坐标,求垂直线另外一点的坐标。哪位大哥可以帮帮忙啊??
RT --------------------编程问答-------------------- 哪位大哥看到了,帮忙一下吧 --------------------编程问答-------------------- 顶一个~~~ --------------------编程问答--------------------
可以试试:
假设第一条线的方程: y1=kx1+a
第二条线的方程: y2=(1/k)x2+b
然后把前两个点的坐标(x1,y1)带入第一个方程,把垂直线上的点(x2,y2)带入第二个方程,解出三个参数k、a、b。 --------------------编程问答-------------------- 垂直线上的点A即在第一个线上也在第二个线上。 --------------------编程问答-------------------- 算出AB两点之间坐标和长度的比例,然后再算出50米所对应的坐标偏移值即可。不过是在A的基础上加还是减就不一定了,要看是在北半球还是南半球 --------------------编程问答--------------------
大哥,能不能把代码写一段给我看看,我数学差,那个方程我看不懂?拜托了。 --------------------编程问答--------------------
固定是北半球的,大哥能不能贴点代码给我看看呢??? --------------------编程问答-------------------- 没研究过、 顶顶 --------------------编程问答-------------------- 没有长度能求出来吗? --------------------编程问答-------------------- 兰州是做GIS的吧? --------------------编程问答-------------------- 貌似这个还得考虑 球面坐标系的投影问题..
不然经纬度 和 50米 这个不好对应啊 --------------------编程问答--------------------
gps,算不算gis就不知道了? --------------------编程问答--------------------
两条直线垂直 斜率相乘应该为 -1 吧!! --------------------编程问答--------------------
如果只是方程的话,两个点,三个参数解不出来吧? --------------------编程问答--------------------
既然是地球经纬度,C点的纵坐标跟A点的纵坐标一样吧?C点的横坐标等于A点的横坐标+或者-50。。。
不是这样么? --------------------编程问答--------------------
是的当AB跟AC和经纬度平行的时候会有这样的情况出现,但是不平行的情况比平行的情况要多很多。 --------------------编程问答-------------------- 如果知道了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)
--------------------编程问答--------------------
大哥,你那个是D旋转90度的方法吗?那找D点有没有方法?望指教 --------------------编程问答-------------------- D点很容易找啊!!
AB线与水平角度可以知道吧??(Yb-Ya)/(Xb-Xa)
D点坐标:(A点的X坐标+AC距离*Cos角度,A点的Y坐标+AC距离*sin角度)
补充:.NET技术 , C#