当前位置:编程学习 > JAVA >>

请教高手一个问题!!!!!!

二维坐标中  已知任意两点坐标(x1,y1),(x2,y2),如何求出这两点连线上所有点的坐标(四舍五入取整数) --------------------编程问答-------------------- 貌似只需要求x1-x2区间的所有整数和y1-y2区间的所有整数,然后将结果按顺序配对为坐标就可以了 --------------------编程问答-------------------- 求高效率的算法 --------------------编程问答-------------------- y=(y1-y2)*x/(x1-x2) 保证x1!=x2
针对x1和x2之间的整数x,求y。
当然也可以反过来。就看你希望那个坐标准一点 --------------------编程问答-------------------- 求出这两点连线的斜率,然后根据x坐标求出y坐标。 --------------------编程问答--------------------
--------------------编程问答-------------------- 没有这么简单吧,比如一条比竖向垂直稍微斜一点的线(X轴方向移动的很少,Y轴方向移动的很多),如果这样按X轴方向每次取一个,那么这样采集的点 Y轴之间的间隔就会很大,所以还要考虑一个采点率最多的一个算法,点越密越好 --------------------编程问答--------------------
引用 6 楼 cv0205mnk 的回复:
没有这么简单吧,比如一条比竖向垂直稍微斜一点的线(X轴方向移动的很少,Y轴方向移动的很多),如果这样按X轴方向每次取一个,那么这样采集的点 Y轴之间的间隔就会很大,所以还要考虑一个采点率最多的一个算法,点越密越好

那就看斜率范围啊,更接近哪个轴,就以哪个轴作为采点依据。 --------------------编程问答-------------------- 能具体说说吗 --------------------编程问答-------------------- 分2种方式考虑 
1.x1==x2||y1==y2(是否为垂直 或者水平)
2.就是斜线 勾股定理        --------------------编程问答--------------------
引用 8 楼 cv0205mnk 的回复:
能具体说说吗

(y1-y2)/(x1-x2)得到斜率k
k>1或k<-1说明这条线更接近y轴,那就遍历y1到y2之间的y,求x
-1<k<1说明更接近x轴,就遍历x1到x2之间的x,求y。
这样不就能取到尽可能多得点了么。 --------------------编程问答-------------------- 也不用多麻烦
由两点算出两直角边的比值,也就是正切值.
然后,从x1到x2依次取出之前所有整数,顺便乘以这个正切值算取每一个x对应的y值并四舍五入.这样就有N个坐标值了;
同理,从y1到y2由上面的方面算出所有点的坐标值.
将这些坐标值放到set中去掉重复的就可以了.

速度也不慢
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,