用户:
I桔汁糖浆I查看:0 回复:9 评论:0 创建时间:2017-12-21T22:20:10
大家好我是上海
之前的那个桔子已经被我吃掉了所以请你们暂时忘了他吧hhh
==========================隙间==========================
嗯这个玩意是我打算搞一个战争模拟的游戏时想研究出来的,只不过一直没有头绪。直到前几天在课堂上面学到了位似,突然灵光一现:哎好像用位似可以解决中心缩放这个问题哎!然后放学后马上回家用IDE试了一下,的确可以实现。至于为什么现在才做出这个教程……因为我懒啊嘿嘿嘿
请看下面的程序:
相信大家通过实际操作可以发现:这三个粉喵形在缩放的时候锚点永远是在中心。
那么我们该怎么实现呢?别急,我先给你们讲讲什么是位似:
位似是特殊的相似。位似图形对应边平行,对应点的连线交于一点,这一点是位似中心。已知两个几何图形A和A',若二者之间存在一个一一对应,且每一双对应点P和P'都与一定点O共线,同时OP/OP'=k(k>0是常数),则称A和A'位似,而点O叫做位似中心,k是位似比。(摘自360百科)
当两个图形为位似图形时,他们每条对应边以及每个对应点到位似中心O的距离的比都相等(相似比相等)。
从上面两段文字中我们可以归纳出一个公式:OP/OP'=AB/A'B'=BC/B'C'=······=k
那么,我们只要把点O设置在中心,运用位似,即可做出如上程序的效果。
首先,我们需要定下一个相似比k,这个k的数值你可以随便弄,只要你不晕掉就行,因为当
0<k<1
和
k>1
时,效果是不一样的
不要把k设置成负数!虽然我没试过,但直觉告诉我这样会很鬼畜……
定下k的值后,我们就要用这个k来求出每个图形的位置:
由OP'=OP/k可推断出代码:将角色的X(Y)轴坐标设置为<自己的X(Y)坐标>/k
反向:由OP=OP'*k可推断出代码:将角色的X(Y)轴坐标设置为<自己的X(Y)坐标>*k
当然,光知道位置了还不行,还得知道大小:
由A'B'=AB/k可推断出代码:将角色的大小设置为<自己的大小>/k
反向:由AB=A'B'*k可推断出代码:将角色的大小设置为<自己的大小>*k
最后,把这些代码复制粘贴到想要进行中心缩放的角色就可以了
至于怎么触发、限位,我。。。我懒,你们自己想,想出来了就独乐乐不如众乐乐,放出来吧hhh
虽然这个方法治标不治本,但是也是没办法的办法是吧?要自己拼出图形来。。嘛,怎么说也实现了。。先许个愿吧,希望编程猫能够出改锚点的积木(请技术喵看到这句话不要当真,我那天去猫厂悄喵看了一圈,深知你们的辛苦emmmmm)
该程序教案:
https://ide.codemao.cn/p/jRmhjJcRJiAviN4U7DHQPUk4crmC0r
贼困,匿了