已知2点坐标,求经过点

LoginOut 2010-02-02 09:34:10
X Y
-176.3501 -52.60973
-115.5118 -52.9807

差别不多是一条Y坐标不变,X坐标右移的直线,
想得好的结果如下:
X
-176.3501
-175.3501
-174.3501
-173.3501
.........
-115.5118

也是是说每次坐标-1

x y
-175.9791 -52.60973
-5.335123 -54.46456
-5.706088 -42.59367

直线类似如下:
|
|
----------------------------

该如何处理呢?
...全文
245 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
重返春季 2010-02-02
  • 打赏
  • 举报
回复
根据2点确定一条直线,来计算出公式。上面几个朋友已经写了,我就不用写了,帮楼主顶一下!
折腾的生活 2010-02-02
  • 打赏
  • 举报
回复
我帮你算了下方程:
y=((y1-y2)/ (x1 - x2)) * x + (x2 * y1 - x1 * y2) / (x2 -x1)
colin_pxx 2010-02-02
  • 打赏
  • 举报
回复
楼主是要java代码还要是数学式子啊
LoginOut 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 icy_csdn 的回复:]
哦,对了。我写的是伪代码。应该是:
(int((X2-X1)/step)) + ((X2-X1)=0?0:1 )
[/Quote]


public void testPoint() {
float x1 = -176.3501f;
float x2 = -115.5118f;
float y1 = -52.60973f;
float y2 = -52.9807f;
int step = 2;
int x = ((int) (x2 - x1)) / step + ((int) (x2 - x1)) < 1 ? 0 : 1;
System.out.println(x);
int y = ((int) (y2 - y1)) / step + ((int) (y2 - y1)) < 1 ? 0 : 1;
System.out.println(y);
}


得到的x,y有什么用呢?
折腾的生活 2010-02-02
  • 打赏
  • 举报
回复
这不是数学中的直线方程嘛,y=ax+b,把已知两点带入求出a和b,剩下的点只要在已知两点范围内,知其一就能求其二了嘛
icy_csdn 2010-02-02
  • 打赏
  • 举报
回复
哦,对了。我写的是伪代码。应该是:
(int((X2-X1)/step)) + ((X2-X1)=0?0:1 )
icy_csdn 2010-02-02
  • 打赏
  • 举报
回复
嗯,我看了你的需求
X
-176.3501
-175.3501
-174.3501
-173.3501
.........
-115.5118

-176.3501 -> ..... -> 115.3501 -> -115.5118
看最后一步,115.3501不是最终目标,还需要再移动到115.5118,这应该也需要一步的。当然你可以根据你的要求,可以不计算这一步。
LoginOut 2010-02-02
  • 打赏
  • 举报
回复
先计算X横向移动经过的点;int((X2-X1)/step) + (X2-X1)=0?0:1计算出横向移动的步数

不是很明白,为什么要这样算?
int((X2-X1)/step)
这样不就可以算出来移动的步数?
为什么还是+(X2-X1)?

int((X2-X1)/step) + (X2-X1)=0?0:1
这个结果不是1就是0,有什么用处呢?


feitian124 2010-02-02
  • 打赏
  • 举报
回复
我不知道我的理解是否有误,但是:
2点可以确定一条直线,也就是说可以用你2点坐标求出直线方程,然后用方程可以求出任意的X,Y了啊...这个高中还是初中的了.我回忆下,利用斜率相等求直线方程
(x-(-176.3501))/(y-(-115.5118))=(x-(-52.60973))/(y-(-52.9807))


应该是这样,我也很久没碰几何了,错了莫喷,思路是这样
LoginOut 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 icy_csdn 的回复:]
如果只是这样,只需要计算直线距离就可以了,这样会比较简单。
算法:任意两点间之间,先经过X横向移动,再经过Y纵向移动。
1. 确定你的坐标移动的粒度,根据你的描述应该是1(step),也就是说每次最小移动1个粒度(最后一步排除,小于1的计1);
2. 先计算X横向移动经过的点;int((X2-X1)/step) + (X2-X1)=0?0:1计算出横向移动的步数
3. 再计算Y纵向移动经过的点;int((Y2-Y1)/step) + (Y2-Y1)=0?0:1计算出纵向移动的步数

这样,就很空间得知所经过的坐标。当然你也可以通过循环计算得到。

注意,计算时符点数的运算要考虑精度。

[/Quote]

是这个意思,
谢谢啦,我仔细看看,不懂再向您请教
icy_csdn 2010-02-02
  • 打赏
  • 举报
回复
如果只是这样,只需要计算直线距离就可以了,这样会比较简单。
算法:任意两点间之间,先经过X横向移动,再经过Y纵向移动。
1. 确定你的坐标移动的粒度,根据你的描述应该是1(step),也就是说每次最小移动1个粒度(最后一步排除,小于1的计1);
2. 先计算X横向移动经过的点;int((X2-X1)/step) + (X2-X1)=0?0:1计算出横向移动的步数
3. 再计算Y纵向移动经过的点;int((Y2-Y1)/step) + (Y2-Y1)=0?0:1计算出纵向移动的步数

这样,就很空间得知所经过的坐标。当然你也可以通过循环计算得到。

注意,计算时符点数的运算要考虑精度。

Defonds 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 loginout 的回复:]
引用 1 楼 vs_lizhi 的回复:
sf,不明白!


这样说吧,任意2点不是可以画一条直线吗?
现在给出2点坐标,如何求这条线的左右坐标
[/Quote]左右坐标?横坐标小的左。
LoginOut 2010-02-02
  • 打赏
  • 举报
回复
现在给出2点坐标,如何求这条线的左右坐标
应该是
现在给出2点坐标,如何求这条线的所有坐标
LoginOut 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vs_lizhi 的回复:]
sf,不明白!
[/Quote]

这样说吧,任意2点不是可以画一条直线吗?
现在给出2点坐标,如何求这条线的左右坐标
折腾的生活 2010-02-02
  • 打赏
  • 举报
回复
sf,不明白!
icy_csdn 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 loginout 的回复:]
得到的x,y有什么用呢?
[/Quote]
大概意思如下:



for( int i=0; i<x; i++){
Systemp.out.print("["+ (x1+i*step) +"," + y1 +"]")
)
if ((x2 - x1)==0) {
Systemp.out.print("["+ (x2) +"," + y1 +"]")
}
for( int i=0; i<y; i++){
Systemp.out.print("["+ x2 +"," + (y1+step*i) +"]")
)
if ((y2 - y1)==0) {
Systemp.out.print("["+ x2 +"," + y2 +"]")
}


LoginOut 2010-02-02
  • 打赏
  • 举报
回复
谢谢大家了,基础没打牢

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧