找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
打印 上一主题 下一主题

[题目] 阵列(1分)

[复制链接]
101
发表于 2005-10-13 01:10:08 | 只看该作者
我的关系式:(以方块的阵列为例)
a=idx1-floor(idx1/9)*9
memb_v=(abs(a-5)+a-5)*10+(10-(abs(5-a)+5-a))*10-floor(a/5)*90
memb_v=floor(a/5)*20+floor(idx1/9)*40
下面我来讲解一下:
先不管其中一个方向的变化,我们可以把这个阵列看做是一个数列
0,1,2,3,4,5,6,7,8,9,10...
根据题目的要求,我们要得到的数列为
0,1,2,3,4,0,1,2,3,0,1...
那么我们现在来找规律,不难发现我们要得到的数列是0,1,2,3,4,0,1,2,3这样9个一组的无限循环下去的
那我们可以把这个数列按9个一组来划分
a=idx1-floor(idx1/9)*9(这种算法很多阵列里都可以用得到,大家可以体会一下)
这样就把数列分成了9个一组!
下面我们再来把这9个数字做拆分,很显然的0,1,2,3,4一组,0,1,2,3一组,即要把数列X(0,1,2,3,4,5,6,7,8)变为数列Y(0,1,2,3,4,0,1,2,3)
如果用IF,我们可以写成
if a<5
memb_v=a
else
memb_v=a-5
endif
但是题目要求不用IF,所以我们要找出它的通项公式
memv_v=m+n
当a<5时m为0,n不为0,当a>=5时n为0,m不为0,如何实现
于是我想到了memb_v= (abs(a-5)+a-5+abs(5-a)+5-a)/2,正好可以满足
但是问题来了,当a>=5时,a-5正好是数列Y后面的部分,当a<5时,5-a却不对
于是我改了一下memb_v=(abs(a-5)+a-5+10-(abs(5-a)+5-a))/2
然后我做了阵列,我发现跟我想要的结果不一致
仔细琢磨后,发现当a>=5时,后面的部分始终为10
于是我加了个补偿值memb_v=(abs(a-5)+a-5+10-(abs(5-a)+5-a)-floor(a/5)*10)/2,这样一来就对了
另外一个方向比较好理解,大家可以自己考虑一下!
其实我觉得类似的阵列就是找规律,然后用关系式来实现它
我一般做这种类型的阵列都会先想想有什么规律,或者干脆在纸上先随便画画,有了大致的思路后,然后再到破衣里来实现,但往往一开始并不会得到自己想要的结果,这时候可以根据阵列的结果来慢慢考虑那里有问题,一步步的来修正,有的东西要想一眼就看出真的很难!
其实以前的很多题目,大家都给了PRT,可能会有人还不太理解别人的思路,那么你可以把别人PRT的模型树打开,一个个特征的点下来,就可以看到别人阵列的走向,从而理解别人的关系式!

[ 本帖最后由 sq8073 于 2005-10-13 08:37 编辑 ]
102
发表于 2005-10-13 01:25:56 | 只看该作者

这个题目如果用关系式阵列,不用IF,也是可以做的,很简单的!
大家可以考虑一下!

[ 本帖最后由 sq8073 于 2005-10-13 10:00 编辑 ]

本帖子中包含更多资源

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

x
103
发表于 2005-10-13 01:26:14 | 只看该作者
下面就看13828748407兄弟,袖珍天使兄弟的了!

[ 本帖最后由 sq8073 于 2005-10-13 10:03 编辑 ]
104
发表于 2005-10-13 06:51:18 | 只看该作者
有空做做
105
发表于 2005-10-13 10:51:37 | 只看该作者
楼上的:你在打广告呀!
当心点哦!
106
发表于 2005-10-13 10:52:28 | 只看该作者
哎!!!!!!
关系式呀关系式!
我占了位还没有做出来,只有仔细虚心请教了!
107
发表于 2005-10-13 12:02:46 | 只看该作者
sq8073兄弟仔细分析了他的推导,下面我也来分析一下我的:

首先,要确定的是,像这样的阵列是不可能用双向阵列做出来的,是单向阵列做的.

我们要做的是两行的个数相差1,用sq8073兄弟的例子吧,就是一行是5个、一行4个、一行5个、一行4个……而我们的阵列方向控制变量idx1、idx2都是0,1,2,3……开始的有限数列.单向数列,那就是要想办法把idx1这个数列变个样子,进行一个转换,以使我们能够把它按5个/4个/5个/4个……的进行分段.这个转换,其实就是数学问题了,根据各人的经验,可能有很多不同的转换法,只要转换成功,问题就解决了一半了.

Sq8073兄弟的转换是一种办法.下面说说我的办法:

研究一下0,1,2,3,4,5,6,7,8,9,10,11,12…..这个数列,它除以一个奇数N,结果是:0,1/N,2/N,3/N,4/N,5/N,6/N,7/N,8/N,9/N,10/N,11/N,12/N……,这个新的数列就不再全都是整数了,而是0后面有N-1个小数数,之后是1,1后面又有N-1个小数数,之后是2,2后面又有N-1个小数数,之后是3……而N是奇数,故N-1是偶数,取其中一段N-1个小数数字来看,前(N-1)/2个是小于K.5(K=0,1,2,3…)的,后(N-1)/2个是大于K.5(K=0,1,2,3…)的.
再把0,1/N,2/N,3/N,4/N,5/N,6/N,7/N,8/N,9/N,10/N,11/N,12/N……这个数列的乘以2,产生的新数列是0,2/N,4/N,6/N,8/N,10/N,12/N,14/N,16/N,18/N….,这个数列有什么特征呢?它是0后面有N-1个小数数,之后是2,2后面又有N-1个小数数,之后是4,4后面又有N-1个小数数,之后是6…..,取其中一段N-1个小数数字来看,前(N-1)/2个是小于K(K=1,3,5,7…)的,后(N-1)/2个是大于K(K=1,3,5,7…)的.
OK,这个数列就是我们要的数列了,用一下floor或ceil看看.比如N=9,

Floor:00000 1111  22222 3333  44444 5555  66666 7777
Ceil:0 1111 22222 3333 44444 5555 66666 7777


(上面两行我故意调整了一下空格,只为了看起来清楚点)
这不,Floor这个数列不就正好是我们所要的吗.
于是用关系:

A=floor(idx1/4.5)  (注意啦,除以9又乘以2,所以分母是4.5啦!)
memb_v=lead_v+idx1*B  (第一个尺寸,行方向,B是增量)
memb_v=lead_v+A*C  (第二个尺寸,列方向,C是增量)
阵列后看看?原来行方向是一行的行头接前一行的行尾跑了.

[ 本帖最后由 袖珍天使 于 2005-10-13 12:14 编辑 ]

本帖子中包含更多资源

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

x
108
发表于 2005-10-13 12:02:54 | 只看该作者
因此,行方向的关系里还要加个补偿量,把每一行的头一个子特征向回拉,怎么加,如下:
Memb_v=lead_v+idx1*B-A*4.5*B  (这里的4.5就是A的那个分母)
看一下图,OK!

[ 本帖最后由 袖珍天使 于 2005-10-13 12:15 编辑 ]

本帖子中包含更多资源

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

x
109
发表于 2005-10-13 12:03:01 | 只看该作者
那么,要改一下的话,比如改成本题要求的最初的数,9/8/9/8/9/8….那么A的分母是多少?A的分母就是(8+9)/2,其它的也一样,总之,就是两行个数为M/M-1/M/M-1/M/M-1/……交替的话,A的分母就是(M+M-1)/2.(M为奇数)
看一下M=9时的图:

[ 本帖最后由 袖珍天使 于 2005-10-13 12:15 编辑 ]

本帖子中包含更多资源

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

x
110
发表于 2005-10-13 12:03:07 | 只看该作者
其实,像sq8073兄弟说的那样,做阵列就是一个找规律的问题.一般都是先在纸上画一下最后应做成的效果,研究各个子特征之间到底有什么变化,这些变化又是按什么样的规律变化的,这个”规律”,就是我们要找的.找到了规律,再看怎么样去实现这些规律,用关系式的话,就是去研究如何把idx1/idx1这两个数列进行变换,使其各数列子项分而符合前面的”规律”,不用关系的话,就是去研究草绘与参照的技巧,这类技巧,也一样五花八门.大家自己想想吧,有什么好招记得分享哦!

[ 本帖最后由 袖珍天使 于 2005-10-13 12:16 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-1-29 14:10 , Processed in 0.025687 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

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