NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 36618|回复: 56
打印 上一主题 下一主题

[VB & C#] 3d 凸包 ghx已传上

[复制链接]
跳转到指定楼层
1m
发表于 2010-1-21 03:02:53 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 panhao1 于 2010-1-22 17:04 编辑

3000ms
扫描算法是网上的 请高人指点
基本上没有用处
算法相当蛮力
弄出几乎可能出现的所有的面 然后逐面进行判定
19个点就存在16*16*16=4096个面 判定4096次 很恐怖的
{:3_63:}
以前2d hull的算法也很糟糕 请高手指点
这里贴上2d hull的代码
Private Sub RunScript(ByVal x As List(Of On3dPoint), ByRef A As Object)
    'your code goes here…
    Dim list As  New List (Of On3dPoint)
    Dim firstPt As New On3dPoint(x(0))
    Dim j As Integer = 0
    For i As Integer = 1 To x.count - 1
      If x(i).x < firstPt.x Then
        firstPt = x(i)
        j = i
      End If
    Next
    list.Add(firstpt)
    Dim firstPt1 As New On3dPoint(firstpt)
    'first is correct
    Dim listPt As New List (Of On3dPoint)(x)
    listPt.RemoveRange(j, 1)
    Dim sign As Integer = 0
    While sign = 0
      'print(jj)
      For ii As Integer=0 To listpt.Count - 1
        If ispt(firstPt, listpt(ii), listpt, ii) = True Then
          If listpt(ii) = firstpt1 Then
            sign = 1
            Exit For
          Else
            print(ispt(firstPt, listpt(ii), listpt, ii))
            Dim newlistpt As New List (Of On3dPoint)(x)
            newlistpt = removeitem(firstpt, newlistpt)
            print(newlistpt.count)
            firstPt = listpt(ii)
            list.Add(firstpt)
            newlistpt = removeitem(firstpt, newlistpt)
            print(newlistpt.count)
            listpt = newlistpt
            Exit For
          End If
        End If
      Next
    End While
    a = list







  End Sub
  '<Custom additional code>
  Function ispt(first, second, list, i)
    Dim list1 As New list(Of On3dpoint)
    list1 = list
    Dim second1 As New On3dpoint
    second1 = second
    Dim vector As New On3dVector
    vector = first - second
    Dim v As New On3dVector(0, 0, 1)
    vector.Rotate(1.5708, v)
    Dim third As New list(Of On3dPoint)(list1)
    third.removerange(i, 1)
    Dim sign As Double = 0
    '____________________________________________
    For j As Integer=0 To third.count - 1
      Dim forth As New On3dVector
      forth = first - third(j)
      Dim v1 As New On3dVector(vector)
      Dim v2 As New On3dVector(forth)
      v1.unitize()
      v2.unitize()
      Dim dot As Double
      dot = OnUtil.ON_DotProduct(v1, v2)
      If (dot > 1) Then dot = 1
      If (dot < -1) Then dot = -1
      dot = math.Acos(dot)
      If dot < 1.571 Then
        sign = 1
        Exit For
      End If
    Next
    '______________________________
    If sign = 0 Then
      ispt = True
    Else
      ispt = False
    End If
  End Function
  Function removeitem(item, list)
    Dim newlist As New list(Of On3dPoint)
    For i As Integer=0 To list.count - 1
      If  list(i) <> item Then
        newlist.add(list(i))
      End If
    Next
    removeitem = newlist
  End Function


效果视屏已传上

2d hull.part1.rar

480 KB, 下载次数: 58, 下载积分: 照度 -1 lux

2d hull.part2.rar

447.57 KB, 下载次数: 48, 下载积分: 照度 -1 lux

3dqhull.part1.rar

480 KB, 下载次数: 36, 下载积分: 照度 -1 lux

3dqhull.part2.rar

444.82 KB, 下载次数: 53, 下载积分: 照度 -1 lux

售价: 5 lux照度  [记录]

3dhull.ghx

109.86 KB, 下载次数: 37, 下载积分: 照度 -1 lux

售价: 20 lux照度  [记录]

3dhull的扫描算法.txt

9.93 KB, 下载次数: 45, 下载积分: 照度 -1 lux

评分

参与人数 1强度 +3 照度 +50 收起 理由
skywoolf + 3 + 50 很有启发

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享分享
57m
发表于 2014-2-16 11:44:03 | 只看该作者
不错,感谢楼主分享!
56m
发表于 2013-10-11 19:04:30 | 只看该作者
感谢楼主啊
55m
发表于 2013-10-11 15:32:17 | 只看该作者
很好的教程,多谢楼主分享!~~
54m
发表于 2013-10-11 14:25:18 | 只看该作者
感谢楼主啊
53m
发表于 2011-12-27 18:43:52 | 只看该作者
网络举报、社会事件发帖,举报爆料曝光℡182{8611}9596,UV
举报专业发帖,检举爆料曝光,还社会一个公道。152+1122_238  182{8611}9596,UV 点击百度快照
假设看不到信息,请点击右下角“百度百度快照”。本团队是网络专业举报发帖,由8人组成,日手工发帖量6000,有24万论坛的数据。可以让你需要传播的信息2天之内发送到各大搜索引擎(如百度,谷歌等)。有无数热心的网友关注转载。
本团队自2008年创办,已有3年的历史和经验,为一些正规渠道无法上报,无法让公众知晓的事件发帖曝光。 为整个社会更加公平公正贡献一份力量。
152+1122_238  182{8611}9596,UV
52m
发表于 2011-12-10 17:02:03 | 只看该作者
与神在交流,嘿嘿
51m
发表于 2011-12-5 10:54:53 | 只看该作者
这个技术贴,,,都是大侠- -
50m
发表于 2011-11-14 21:50:34 | 只看该作者
真的很不错哟~~
49m
发表于 2011-11-7 21:08:22 | 只看该作者
不知道说啥
48m
发表于 2011-11-5 10:29:10 | 只看该作者
下载下来 学习学习
47m
发表于 2011-11-5 09:48:45 | 只看该作者
这个完全不懂啊
楼主
46m
发表于 2011-11-5 09:46:21 | 只看该作者
怎么总是看不到呢
45m
发表于 2011-11-5 07:06:51 | 只看该作者
1~3折售ONLY_H&M_杰克琼斯_ZARA等知名品牌服装(专柜新品 与市场同步 假一罚十) :13132208878

天津地区送货上门货到付款,发现质量问题无条件退全款,批发零售皆可。

所有商品均为原单,数量有限清版即止,欲购从速。

13132208878  QQ 78130933
44m
发表于 2011-8-2 14:37:14 | 只看该作者
真的很蠻力阿....
43m
发表于 2011-5-27 23:31:25 | 只看该作者
望楼主降价啊
42m
发表于 2011-5-27 23:30:59 | 只看该作者
这么贵??
41m
发表于 2011-4-10 12:49:34 | 只看该作者
强悍啊!!!!11
40m
发表于 2011-4-4 13:38:18 | 只看该作者
感谢楼主分享 分享了
39m
发表于 2011-4-4 13:25:50 | 只看该作者
支持3d……

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-11-26 18:58 , Processed in 0.073692 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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