EL_JAY 发表于 2015-5-3 08:12:37

【求助】三维实体的投影二维轮廓(算法原理)

三维实体的投影二维轮廓(算法原理)
求助一个算法,已知三维实体的各个面的轮廓点。求出它的投影轮廓。
也就是:已知三维轮廓点的List,求出投影二维轮廓的算法原理。
本该在算法板块发的,在这发帖是因为看Lisp板块比较活跃,关键是不少算法高手在此。
图示以正方体为例:


vectra 发表于 2015-5-3 08:54:23

只是求点的投影还是很方便的,但如果你要求外轮廓就不是那么容易了。

.net里可以用Point3d的Convert2d方法,
lisp可以研究一下trans函数,坛子里有专门的文章介绍这个函数。

ivde 发表于 2015-5-3 09:37:03

点到平面的投影 Point3d.OrthoProject

EL_JAY 发表于 2015-5-3 09:41:25

主要是求外轮廓

ivde 发表于 2015-5-3 09:46:32

command slice

鱼与熊掌 发表于 2015-5-3 09:56:41

论坛里的高飞鸟讨论过这个问题黄工已经给出了源代码.
具体思路是根据物体的矩阵.先转换回世界坐标系.获取get~~bpx之后
在转回原来的位置. 实现求得外框.

EL_JAY 发表于 2015-5-3 10:46:27

本帖最后由 EL_JAY 于 2015-5-3 11:06 编辑

精确外轮廓,不是要外框。不知道这么理解对不对?
主要是三维实体的面轮廓投影后有点,线,面 三个情况,去掉点,线,利用面域合并。
可以实现轮廓。因为我会是CAD之外用,不能用面域合并。看看高手们有没有好的算法

Gu_xl 发表于 2015-5-4 09:51:43

加载XLRX_API:
(defun c:tt ()
(setq e (car (entsel "\n选择三维实体:")))
(xlrx-copy e)
(setq s (xlrx-explode e))
(setq s (xlrx-region->poly s))
(setq s (XLRX-Curve-GetOutPoly s))
(setq pt (getpoint "\n基点:"))
(if (null pt)
    (setq pt (getvar 'lastpoint))
)
(xlrx-move s
             (trans pt 1 0)
             (trans (getpoint pt "\n位置点:") 1 0)
)
(princ)
)

【KAIXIN】 发表于 2015-5-4 15:03:24

极少用CAD整3维

999999 发表于 2020-8-21 01:02:21

谢谢楼主分享
页: [1]
查看完整版本: 【求助】三维实体的投影二维轮廓(算法原理)