将Autocad的图形填充(Hatch)转化为三角形

目前在研究通过DirectX 或者OpenGL来显示Dwg图纸,一些基本的功能已经完成,但是对于图形填充遇到了一些问题。

DirectX中基本的元素只有三角形,但是Autocad的图形填充可以是任意几何图形,所以我们需要将Autocad的图形填充转换为三角形。


虽然有很多图形计算理论,但是以前没做这一块,决定还是找现有的类库来完成这个过程。

由于Hatch的定义为若干个Loop之间的运算,目前看来是Xor 计算,所以,第一步为确定图块计算的类库。考虑到图块计算基于点线,而结果也是点线,暂时排除了C# 默认的System.Drawing里面的Geometry和WPF 里面的Path类库。而是采用了Clipper(http://angusj.com/delphi/clipper.php#features)。

参考代码如下:

     Clipper cpr = new Clipper();
            int idx = 0;
            foreach (var subitem in item.SubItems) {
                var path = new Path();
                foreach (var p in subitem.Points) {
                    path.Add(new IntPoint(p.X, p.Y));
                }
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值