找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4979|回复: 28

[求助] 由点坐标生成多段线

[复制链接]
发表于 2016-2-24 14:47:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
现在有一组坐标点:按x从小到大排列,可能是x的等差数列,y坐标随机。多段线的拐点不一定在这些坐标中
想要的结果,根据y坐标值自动判断各段直线的交点,并生成多段线
看有什么好的思路没?

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 264个

财富等级: 日进斗金

发表于 2016-2-24 14:52:15 来自手机 | 显示全部楼层
看不明白,能用图说明吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-24 15:05:03 | 显示全部楼层
本帖最后由 aywuguangan9818 于 2016-2-24 15:07 编辑

看看下面的图吧
这个是由线等x距截取的点,就是想反向进行

点坐标图

点坐标图

生成后的多段线图

生成后的多段线图
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2016-2-24 15:12:23 来自手机 | 显示全部楼层
你这个只要按 X 排序即可

点评

还要考虑y值得吧  详情 回复 发表于 2016-2-24 15:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-24 15:25:43 | 显示全部楼层
本帖最后由 aywuguangan9818 于 2016-2-24 15:28 编辑
iLisp 发表于 2016-2-24 15:12
你这个只要按 X 排序即可

还要考虑y值得吧 2条线的交点不一定就在某个点上

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2016-2-24 15:36:26 来自手机 | 显示全部楼层
本帖最后由 iLisp 于 2016-2-24 15:38 编辑

图示只需要按 (vl-sort pts '(lambda(x1 x2) (< (car x1) (car x2))))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-24 16:41:11 | 显示全部楼层
本帖最后由 aywuguangan9818 于 2016-2-24 16:43 编辑

早就排好了
就是画线,看线的端点坐标,因为按照2条线的角度,其交点不一定正好是已有的坐标,比如倒数第2、5个点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2016-2-24 17:13:22 | 显示全部楼层
你贴个点文件

点评

((0,10)(10,20)(20,30)(30,35)(40,45)(50,55)(60,75)(70,75)(80,75)(90,88)(100,105)(110,122)(120,125)(130,140)(140,140))  详情 回复 发表于 2016-2-25 10:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2016-2-25 09:24:30 | 显示全部楼层
单单用点连多段线是简单的,但你表述中有“多段线的拐点不一定在这些坐标中”,由此就需要有一个关于多段线的规则,比如长度不能小于多少,否则是多解。就如你的贴图中的倒数第五点,你的画法是一种,而从倒数第五点直接连到下一点,再连到下一点,这也是一种连法。
原则上,以每个点作为多段线的拐点,就是最常规的解,也是最简单的解,如果加一些条件,比如在一线上的多个点连成一个整段,多段线每段间的长度不能小于多少等,相对就比较复杂些,但一般都是可解的,不过首先得命题条件完整。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2016-2-25 09:52:55 来自手机 | 显示全部楼层
看这个算法是否适用
http://www.cnblogs.com/heaad/archive/2010/12/20/1911614.html
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-25 10:45:48 | 显示全部楼层
本帖最后由 aywuguangan9818 于 2016-2-25 10:59 编辑

说明一下我的用处:在施工中,需要先修建施工平台(平台高程不同,所以y不同),之后按照设计给定的桩号进行孔位的标记后施工。一般来说孔距是不变的(x是等差数列)。现在就是想根据这些孔位的坐标点来还原施工平台(桩号和高程)。因此说拐点不一定正好在孔位的点上(也就是给定的坐标)。
施工平台是有一段一段的直线组成,大体是2边高,中间低的山谷,但也有可能出现反坡。也有可能出现某段线上只有一个点位的情况(这样的话我建议选用水平或者2边直线倾角的平均值又或者使用样条曲线和多段线结合?)
坐标点:((0,10)(10,20)(20,30)(30,35)(40,45)(50,55)(60,75)(70,75)(80,75)(90,88)(100,105)(110,122)(120,125)(130,140)(140,140))
那个网址我看了一下,有些类似,但是不太合适似的
@eachy @ll_j  @st788796
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-25 10:46:51 | 显示全部楼层

((0,10)(10,20)(20,30)(30,35)(40,45)(50,55)(60,75)(70,75)(80,75)(90,88)(100,105)(110,122)(120,125)(130,140)(140,140))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-28 18:55:53 | 显示全部楼层
没有人给个建议吗?:Q
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2016-2-29 09:47:12 | 显示全部楼层
aywuguangan9818 发表于 2016-2-28 18:55
没有人给个建议吗?

  1. (defun sortpt (pts)
  2.   (vl-sort pts
  3.            '(lambda (x1 x2)
  4.               (if (equal (cadr x1) (cadr x2) 1e-3)
  5.                 (> (car x1) (car x2))
  6.                 (> (cadr x1) (cadr x2))
  7.               )
  8.             )
  9.   )
  10. )
  11. (defun c:tt (/ pts)
  12.   (setq
  13.     pts        (sortpt        '((0 10)
  14.                   (10 20)
  15.                   (20 30)
  16.                   (30 35)
  17.                   (40 45)
  18.                   (50 55)
  19.                   (60 75)
  20.                   (70 75)
  21.                   (80 75)
  22.                   (90 88)
  23.                   (100 105)
  24.                   (110 122)
  25.                   (120 125)
  26.                   (130 140)
  27.                   (140 140)
  28.                  )
  29.                
  30.         )
  31.   )
  32.   (command ".pline")
  33.   (foreach x pts (command x))
  34.   (command "")
  35.   (princ)          
  36. )

点评

谢谢你! 不过你的这个程序应该是达到了部分功能(现有的点即时拐点),并且也没考虑极端情况(反坡) 不知我说的对不对?  详情 回复 发表于 2016-3-3 14:53
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1336个

财富等级: 财源广进

发表于 2016-2-29 11:21:24 | 显示全部楼层
学习了,好久没来了:lol
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-24 10:25 , Processed in 0.477950 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表