| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3394 人关注过本帖
标题:如何用C语言解出多条线段的交点坐标?求大师赐教!
只看楼主 加入收藏
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
以下是引用宇宙规律在2014-5-8 18:49:11的发言:

求出线段的交点后(x1,y1),(x2,y2),(x3,y3),...(xn,yn),还需要按照 x1,x2,x3,...xn的大小排序,如果x1>x3>xn>x2,要求输出顺序是(x1,y1),(x3,y3),(xn,yn),(x2,y2);
同时,每条线段ab的长度取值范围是:N*ab ;
上面回得太粗疏。循环可用双重循环,即
for (i=0; i<n; i++) {
    for (j=i+1; j<n; j++) {
        ......
    }
}
至于按大小输出,也就是将所有交点用点坐标结构数组表示,再对数组排序并输出的问题,用 qsort() 可以实现(需自定义比较函数)。
至于 N*ab,N 是一个浮点常量,那么 a b 又是怎么定义的?
2014-05-08 19:04
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
ab代表的是线段上的两个点,a(x,y),b(x,y)
2014-05-08 19:20
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
以下是引用宇宙规律在2014-5-8 19:20:41的发言:

ab代表的是线段上的两个点,a(x,y),b(x,y)
N*ab又何解呢?是指N乘以ab两点的距离吗?是否你是要限制取点的范围?ab两个点又是如何确定出来的呢?
2014-05-08 19:24
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
N*ab代表的是每条线段的长度的取值范围,即每条线段最长是N*ab
2014-05-08 19:27
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
已知:每条线段上两个点的坐标,例如:线段ab,a(x,y),b(x,y),线段cd,c(x,y),d(x,y),...
      每条线段的长度最长是   N*线段
2014-05-08 19:32
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
以下是引用宇宙规律在2014-5-8 19:27:28的发言:

N*ab代表的是每条线段的长度的取值范围,即每条线段最长是N*ab
所以你的意思是只判断ab线段乘以一个常量的范围内与其他线段的交点?但这个乘以N后起止点又如何取值?

另外你还是没有回答, a b 点是如何确定出来的?
2014-05-08 19:33
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
点a(x,y),点b(x,y)的坐标是已知条件,只判断ab线段乘以一个常量的范围内与其他线段的交点;

乘以N后,起点还是a(x,y),线段终点横坐标是 N*x,线段终点纵坐标是 kN*x+e,假设线段ab的一次函数是 y=kx+e
2014-05-08 19:46
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
循环可用双重循环,即
for (i=0; i<n; i++) {
    for (j=i+1; j<n; j++) {
        ......
    }
}
2014-05-08 19:49
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
上面回得太粗疏。循环可用双重循环,即
for (i=0; i<n; i++) {
    for (j=i+1; j<n; j++) {
        ......
    }
}

2014-05-08 19:50
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
明白了。这么说就只是从解析几何上把计算式确定好。逻辑大概为:
1、根据已知每条线段起止点坐标,求得其斜率和偏移(也不记得如何称呼y=kx+b里面的b了),及长度为N的延长线段的起止点。
2、用双重循环求每两条线段之间的交点(既然是线段,可能没交点)。
3、对所有交点排序并输出。
建议可用多个结构数组描述点坐标、斜率和偏移。
2014-05-08 20:03
快速回复:如何用C语言解出多条线段的交点坐标?求大师赐教!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016559 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved