明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: yanguangfei

求闭合多段线的心【不是一般的心】(望高手出手)感激不尽(已解决)

    [复制链接]
发表于 2012-12-12 00:06:57 | 显示全部楼层
本帖最后由 highflybir 于 2012-12-12 00:08 编辑
highflybir 发表于 2012-12-11 23:56
你的那个心没有什么一定的标准,很模糊,仅仅满足在内部和尽量接近就行了的话,这样的点有很多个。
而且你 ...


http://zh.wikipedia.org/wiki/%E5%87%A0%E4%BD%95%E4%B8%AD%E5%BF%83
如果对质心存在不同见解的话,参考上面链接。
这是我对质心的理解。 英语称为Centroid ,CAD也是通过vla-get-centroid方式获得质心的。
如果你既要质心或者形心,又要在内部,有时候就会发生矛盾。
发表于 2012-12-12 10:26:53 | 显示全部楼层
这个什么 心 有啥用?没看出规律

点评

简单的应用 复杂的闭合多段线里 写面积 好理解吧 文字不能出多边形  发表于 2012-12-12 21:00
发表于 2012-12-12 12:08:20 | 显示全部楼层
我也遇到这样的问题了,让求出多边形的中心,多边形很多,当然大部分是四边形,我没有更好的办法求出,难道真的不能求出吗?

点评

能是一定的 Map 3D 就实现了啊  发表于 2012-12-12 20:12
发表于 2012-12-12 12:25:54 | 显示全部楼层
我想多边形最大内接圆的圆心应该是楼主要找的所谓心!
求该心请参见高飞鸟的帖子:
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=95761
发表于 2012-12-12 12:53:00 | 显示全部楼层
yanguangfei 发表于 2012-12-11 23:03
先谢过 嘿嘿

(defun GE_centroid (vlist / segno n ttl_area basex basey p1 p2 x1 x2 y1 y2
                                        t_x t_y t_area t_xm t_ym r_x r_y r_area r_xm r_ym Mx My)

(setq
        vlist    (append vlist (list (car vlist)))
        segno    (1- (length vlist))    ; no of segments  没有的部份
        n        0
        Ttl_Area 0.0                        ; total area   总面积
        Mx       0.0                        ; Sum of moment to basex line   X方向归纳
        My       0.0                        ; Sum of moment to basey line   Y方向归纳
        basex    (car  (nth 0 vlist))        ; arbitrary axes (will reduce error for large numbers)任意轴(减少数字的大小误差)
        basey    (cadr (nth 0 vlist))
)

(repeat segno
        (setq
                p1 (nth n vlist)        ; process current segment  当前第一行
                p2 (nth (1+ n) vlist)
                x1 (car p1)
                y1 (cadr p1)
                x2 (car p2)
                y2 (cadr p2)

                ; For the triangle   三角形的
                t_x    (- (* (+ x2 x2 x1) 0.333333) basex)                ; cg of trianlge  三角形的中心
                t_y    (- (* (+ y1 y1 y2) 0.333333) basey)
                t_area (* (- y2 y1) (- x2 x1) 0.5)                        ; area of triangle  三角形的面积
                t_xm   (* t_area t_x)                                        ; moment to Basex   到X
                t_ym   (* t_area t_y)                                        ; moment to basey   到Y
       
                ; For the rectangle  矩形的
                r_x    (- (/ (+ x1 x2) 2) basex)                        ; CG of rectangle      矩形的中心
                r_y    (- (/ (+ basey y1) 2) basey)
                r_area (* (- x2 x1) (- y1 basey))                        ; area of rectangle    矩形的面积
                r_xm   (* r_area r_x)                                        ; moment to basex
                r_ym   (* r_area r_y)                                        ; moment to basey

                Ttl_Area (+ Ttl_Area t_area r_area)
                Mx       (+ Mx  t_xm r_xm)                                ; adds up moments to basex
                My       (+ My  t_ym r_ym)                                ; adds up moments to basey
                n        (1+ n)
        )
)
(list (+ (/ Mx Ttl_Area) basex) (+ (/ My Ttl_Area) basey) 0.0)
)

点评

还是取的质心吧  发表于 2012-12-12 20:44
 楼主| 发表于 2012-12-12 21:03:50 | 显示全部楼层
Gu_xl 发表于 2012-12-12 12:25
我想多边形最大内接圆的圆心应该是楼主要找的所谓心!
求该心请参见高飞鸟的帖子:
http://bbs.mjtd.com/ ...

不是想要的   往闭合多段线里写面积  要尽可能在中心  这个函数是出不了多边形 但是考中心太远了
发表于 2012-12-13 13:18:16 | 显示全部楼层
xiabin68 发表于 2012-12-12 12:53
(defun GE_centroid (vlist / segno n ttl_area basex basey p1 p2 x1 x2 y1 y2
                                        t_x t_y t_area t_ ...

对,,,是G版给我的,,我在用的时候感觉还可以哈,,,

点评

和俺的需求差点  发表于 2012-12-13 19:18
发表于 2012-12-13 19:46:50 | 显示全部楼层
不知这个要求用在什么行业
发表于 2012-12-13 21:37:48 | 显示全部楼层
同上。。没弄明白用处
发表于 2012-12-14 21:41:04 | 显示全部楼层
楼主是要往多边形内写文字,文字尽量在多边形中部,且不能跑出多边形,是这个意思吧?

点评

恩啊  发表于 2012-12-15 00:41
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-23 13:29 , Processed in 0.181843 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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