已经两个点的坐标,求垂直线另外一点的坐标。哪位大哥可以帮帮忙啊?? RT 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以试试:假设第一条线的方程: y1=kx1+a 第二条线的方程: y2=(1/k)x2+b然后把前两个点的坐标(x1,y1)带入第一个方程,把垂直线上的点(x2,y2)带入第二个方程,解出三个参数k、a、b。 算出AB两点之间坐标和长度的比例,然后再算出50米所对应的坐标偏移值即可。不过是在A的基础上加还是减就不一定了,要看是在北半球还是南半球 既然是地球经纬度,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点很容易找啊!!AB线与水平角度可以知道吧??(Yb-Ya)/(Xb-Xa)D点坐标:(A点的X坐标+AC距离*Cos角度,A点的Y坐标+AC距离*sin角度) 【Winform】2个Form之间的状态栏传值 怎么编写flash播放器,我as懂一点点 简单问题。速度解决 c#的string中包括特殊字符的问题 希望能得到帮助 无法将类型“void”隐式转换为“object” 关于DataTable的两个问题一直没解决 怎么发布cs 应用程序 C#中数据库语句的问题(急,在线等) 如何把二维数组的某一整行取出来! 疑难问题——DataGrid中的模板列怎么绑定数据???(WebForm) c#中如何设置权限 大家推举基本.net方面的测试书籍(基于vs.net测试项目的)
可以试试:
假设第一条线的方程: y1=kx1+a
第二条线的方程: y2=(1/k)x2+b然后把前两个点的坐标(x1,y1)带入第一个方程,把垂直线上的点(x2,y2)带入第二个方程,解出三个参数k、a、b。
不是这样么?
然后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 == 270)
AB线与水平角度可以知道吧??(Yb-Ya)/(Xb-Xa)
D点坐标:(A点的X坐标+AC距离*Cos角度,A点的Y坐标+AC距离*sin角度)