找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4744|回复: 26

[求助] [求助]:过一不规则图形的一点,怎么平分这个图形面积?

[复制链接]
发表于 2005-9-13 14:41:43 | 显示全部楼层 |阅读模式

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

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

×
由于这边的人讲究风水,
有些东西必须放在地块面积等分线上。
哪个高手能把这个问题解决一下?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-9-14 11:57:51 | 显示全部楼层
你的一点是什么点?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-15 11:10:26 | 显示全部楼层
最初由 littlecong 发布
[B]你的一点是什么点? [/B]

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

使用道具 举报

发表于 2005-9-15 16:07:59 | 显示全部楼层
下面是一个测试程序,纯粹抛砖引玉:),请高手帮忙改进
作用,画出面积平分线

[PHP]
;;by snoopychen ,Guangzhou
;;找出过区域内某点的某封闭区域的面积平分线测试版


;;main program
(defun c:test ()
  (setvar "osmode" 0)
  (command "undo" "BE")
  (setq pa (getpoint "域内一点"))
  (setq dis (getdist "区域内部最窄处的大概距离"))
;  (setq lstarea nil)
  (setq areaall (mj pa))
  (setq n 16 te nil)
  (setq lstres (rep 0.0 360.000000000))
  (while (= te nil)
    (setq ang_s (caddr lstres))
    (setq ang_all (cadddr lstres))
    (setq lstres (rep ang_s ang_all))
    (if (< (cadr lstres) 0.01)
      (progn
        (setq te 1)
        (command "xline" "a" (caddr lstres) pa "")
      )
    )
  )
  (command "undo" "E")
)

;;根据16分或者n分求出割线某一边的面积离总面积一般最接近的位置
(defun rep (ang-s ang-all / i ang-i ssxl pa90)
  (setq lstarea nil i 0)
  (repeat n
    (setq ang-i (+ (- ang-s (/ ang-all 2)) (* (/ ang-all n) i)))
   
    (command "xline" "a" ang-i pa "")
    (setq ssxl (ssget "l"))
    (setq pa90 (polar pa (+ (DTR ang-i) (* pi 0.5)) (/ dis 3)))
    (grdraw (list 0 0 0) pa90 1)
    (setq mj1 (mj pa90))
    (setq lstarea (append
                    lstarea
                    (list mj1)
                  )
    )
    (command "erase" ssxl "")
    (grdraw (list 0 0 0) pa90 0)
    (setq i (1+ i))
  )
  (setq lstarea1 (mapcar
                   '(lambda (x)
                      (abs (- (/ areaall 2) x))
                    )
                   lstarea
                 )
  )
  (setq index (min-index-list lstarea1))
  (setq indexarea (nth index lstarea1))
  (setq indexangle (+ (- ang-s (/ ang-all 2)) (* (/ ang-all n) index)))
  (setq allangle (* (/ ang-all n) 2))
  (list index indexarea indexangle allangle)
)

;;域内求面积
(defun mj (point / a)                       
  (command "bpoly" point "" "y")
  (command "region" "l" "")
  (command "area" "o" "l")
  (command "erase" "l" "")
  (prompt "\n the area is ")
  (setq a (getvar "area"))
  a
)

;;找出表最小值项所处位置
(defun min-index-list (lst / a b flag i)
  (setq a (nth 0 lst)
        i 0
        flag 0
  )
  (while (< i (length lst))
    (setq b (nth i lst))
    (if (< b a)
      (setq a b
            flag i
      )
    )
    (setq i (1+ i))
  )
  flag
)


;角度到弧度
(defun DTR (d)
  (* pi (/ d 180.0))
)

[/PHP]

缺点不少,大概有
1.命令行中提示太多,效率很低,不知道有什么好的子程序来求面积
2.容错功能没有怎么作
3.因为是自动查找boundary找面积,所要划分的区域不能有
  其他实体,要选择的点最好先用point画出。
4.只能针对域内的点,因为点假如在域外,思路不一样的
5.对于有多个面积平分线,比如正多边形,没法求出多条平分线
6.由于编程技术比较差,程序比较罗嗦



说明:

编程的思路:比较直接,硬来的,先用16分线,或者更多
割图形,求出某一边的面积,总有一个和真正的半面积最解决
于是,再在这个角度附近,进行再搜索,直到找到精确(<0.1)的为止。

里面有一个叫“区域内部最窄处的大概距离”,是因为boundary建立
时候经常会出错而定的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-15 23:20:35 | 显示全部楼层
有这么麻烦吗?在CAD中不是可以查到一个平面图的重心吗???
先用多义线勾出这个图,再形成面域,查询他的属性啊?找到质心,再将己知点与这个质心相连就可以啊@@@
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2005-11-13 21:27:36 | 显示全部楼层
对,假如是正多边形的话应该有比较多的解,圆形有无数解
不知道其他情况下多于两个解的会有什么其他几何特征

这个网站是刚刚找到的,似乎他的程序功能挺全的
http://www.geometricad.com/app.php?id=3&lang=en
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

发表于 2005-11-14 00:01:07 | 显示全部楼层
楼主应该说明一下,你对什么样的解有兴趣,才能有针对的编程
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-14 09:43:16 | 显示全部楼层
中心可以确定,质心不好确定,特别是凹多边形
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

发表于 2005-11-14 13:30:46 | 显示全部楼层
最初由 WHGF 发布
[B]中心可以确定,质心不好确定,特别是凹多边形 [/B]

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

使用道具 举报

发表于 2005-11-14 17:48:57 | 显示全部楼层
面积的平分是不是质心有点关系!!,我证明不出来,,郁闷...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-11-14 23:08:38 | 显示全部楼层
其实不知道大家有没有考虑也有无解的情况呢?
比如特殊凹多边形...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-14 23:21:47 | 显示全部楼层
最初由 舟自横 发布
[B]其实不知道大家有没有考虑也有无解的情况呢?
比如特殊凹多边形... [/B]

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-6 06:34 , Processed in 0.186305 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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