找回密码
 注册
Simdroid-非首页
查看: 716|回复: 12

[建模专区] 求助:pfc2D中range可以对复杂形状的范围用么?

[复制链接]
发表于 2011-12-5 17:00:01 | 显示全部楼层 |阅读模式 来自 湖北武汉
建模的时候用到比较复杂的颗粒形状,但是帮助文档中的range用法太简单了,有哪位大神对range比较熟的求解惑额~
发表于 2011-12-6 21:28:41 | 显示全部楼层 来自 江苏南京
Simdroid开发平台
搭车同求!要是能定义一些不规则的区域该多好啊~
回复 不支持

使用道具 举报

 楼主| 发表于 2011-12-10 10:32:11 | 显示全部楼层 来自 湖北武汉
囧,看来没人知道~
回复 不支持

使用道具 举报

发表于 2011-12-10 13:08:40 | 显示全部楼层 来自 江苏南京
lz贴一个具体点的问题啊。。。复杂区域太笼统了点吧
回复 不支持

使用道具 举报

 楼主| 发表于 2011-12-11 09:32:48 | 显示全部楼层 来自 湖北武汉
正八边形如何?
回复 不支持

使用道具 举报

发表于 2011-12-11 10:44:09 | 显示全部楼层 来自 江苏南京
本帖最后由 benbenmoon 于 2011-12-11 11:44 编辑



八边形好像还不是太难 分成这么三块 用fish通过坐标判断在不在区域里面,然后给在区域里面的小球赋个啥参数(比如颜色),然后把这个参数的小球归为一个range/group。。。

编了一小段 :
new
gen id 1 1960  x -3 3 y -3 3  rad 0.05 0.05

def groupp
    bp=ball_head
    t=2^0.5
    y1=1+t
    y2=-1-t
    x1=1+t
    x2=-1-t
    loop while bp # null


       if b_x(bp)>-1                   ;中间区域
           if b_x(bp)<1
               if b_y(bp)>y2
                   if b_y(bp)<y1
                          b_color(bp)=1
                   end_if
               end_if
           end_if                        
       end_if

        if  b_x(bp)>1              ;右边区域
            if b_x(bp)<x1
                yy1=1+(x1-b_x(bp))
                yy2=-yy1
                if b_y(bp)>yy2
                     if b_y(bp)<yy1
                          b_color(bp)=1
                     end_if
                end_if
            end_if
        end_if


        if  b_x(bp)>x2       ;左边区域
            if b_x(bp)<-1
                yy1=1+(x1-(-b_x(bp)))
                yy2=-yy1
                if b_y(bp)>yy2
                     if b_y(bp)<yy1
                          b_color(bp)=1
                     end_if
                end_if
            end_if
        end_if

        bp=b_next(bp)
    end_loop
end
groupp
group abc range color 1
plot add group
plot add axe green
plot show







我想到的思路就是这样   估计lz的问题要比这复杂  可能还有更好的方法吧~




本帖子中包含更多资源

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

×
回复 不支持

使用道具 举报

 楼主| 发表于 2011-12-11 18:47:40 | 显示全部楼层 来自 湖北武汉
多谢楼上热心人~
回复 不支持

使用道具 举报

发表于 2014-9-30 17:27:06 | 显示全部楼层 来自 甘肃兰州
谢谢,好东西啊、、、、
回复 不支持

使用道具 举报

发表于 2014-10-5 20:17:28 | 显示全部楼层 来自 武汉大学
现在这个问题就很好解决了,用几个平面plane(2D中是line)将该复杂形状的范围包围起来就可以了,然后定义为一个range,这种方法对于不规则形状的区域范围十分有效
回复 不支持

使用道具 举报

发表于 2014-12-29 20:35:45 | 显示全部楼层 来自 江苏苏州
收藏,qqqqqqqqqqqqqqqqqqqqqq
回复 不支持

使用道具 举报

发表于 2014-12-29 20:40:14 | 显示全部楼层 来自 江苏苏州
收藏啊啊啊啊啊啊啊啊啊啊啊啊啊
回复 不支持

使用道具 举报

发表于 2015-7-5 09:57:17 | 显示全部楼层 来自 中国
收藏了,谢谢楼主
回复 不支持

使用道具 举报

发表于 2015-7-19 16:50:28 | 显示全部楼层 来自 湖南衡阳
应该可以的,只是范围定义比较麻烦吧
回复 不支持

使用道具 举报

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

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-6 10:35 , Processed in 0.039149 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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