猫史档案馆


【不是少院士教程】中心缩放

用户:I桔汁糖浆II桔汁糖浆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

贼困,匿了



回复

上一页1 页 / 共 1下一页
I桔汁糖浆II桔汁糖浆I

那个程序(教案)里最后一个角色是我脑抽加进去的,在该程序中没有用处,请忽视emmmm


点赞0


评论


幻_想幻_想

先来混个脸熟

点赞0


评论


幻_想幻_想

涨芝士了~蟹蟹,桔汁……喵,上海大佬~

点赞0


评论


幻_想幻_想

顶一下

点赞0


评论


浪日子的鲸浪日子的鲸

厉害啊!



点赞0


评论


I桔汁糖浆II桔汁糖浆I

不是少院士没有喵啊!

点赞0


评论


梁沛琦梁沛琦

鼓掌鼓掌

点赞0


评论


小猪配飞行棋小猪配飞行棋

给你顶赞一下 虽然我看不懂

点赞0


评论


a_AwA_aa_AwA_a

那如何加入缓冲效果?不然显得太过生硬。

这有没有超出你的能力范围?

点赞0


评论