关于百叶窗的对齐问题

前言

If translation needed,please click the translation button at the bottom of this page.

After a rough morning of finishing a test and failing m […]

The Venetian Blinds Enigma

以上是lachrymaL的思路。


以下是我的思路。
(无公式预警)

一、一些关于百叶窗效果预备知识

  1. AE的百叶窗默认从正中心(中间)开始;
  2. 百叶窗的“方向”是表示从+y方向顺时针转过的角度;
  3. 百叶窗的“过渡完成”是反过来的,打个比方,如果角度是45°,那么从0%到100%的过渡完成是从左上向右下扫过去的;
  4. 百叶窗的“宽度”指的是100%“过渡完成”下“方向”法向的长度;
  5. 在表达式中,AE默认使用的角度用的弧度制。

二、制作思路

先把之后会用到的各个量提前表示出来(注意大小写):

注意在下面一个特殊说明以前,全部不是正规的表达式写法。

对于百叶窗的施加体:
Position , HEIGHT , WIDTH
p.x = Position.x , p.y = Postion.y
h = HEIGHT , w = WIDTH

对于百叶窗效果:
angle , width
a = angle , dw = width

在表达式中出现的:
不定整数 l = lambda
表示为l1 , l2 等
边计数 sc = SideCount

开始制作(无图请脑补)

首先尝试水平对齐。

在每一个框中,由过中心侧出发(如0 ~ 90° 时为右侧)的线与底部的交点应该是:
x = 0.5 * w – 0.5 * h * tana + l1 * dwx * seca
其中dwx用来表示水平两个窗叶同侧的水平距离差,区别于dw;由数学知识很容易得到:
dwx = w * seca 或者是 dwx = w / cosa

同样的,与上部的交点应该是:
x = 0.5 * w + 0.5h * tana + l2 * dwx * seca

为了方便起见,取合成同样大小的水平相邻的两个矩形(中心+右侧的一个)。
它们与下部的交点应该是:
中心 x1 ∈ [0,w] | x1 = 0.5 * w – 0.5 * h * tana + l1 * dwx * seca , l1 ∈ Z
右侧 x2 ∈ [w,2w] | x2 = 1.5 * w – 0.5 * h * tana + l2 * dwx * seca , l2 ∈ Z

若要两个图像能够无缝隙,那么x1的延伸要与x2重合,即在不考虑值域的情况下可以有x1 = x2。
于是我们得到:
w * tana = (l1 – l2) * dwx * seca
用几何方法容易验证其正确性。

进一步代入化简,并用sc代替(l1 – l2),得到一个简洁的公式:
dw = w * sina / sc
sc在这里是一个正整数。

因此,在仅保证水平对齐的情况下,可以这样按照这样的思路去写表达式:

  1. 创建一个滑杆控制(Slider Control),命名为SideCount;和一个角控制(Angle Control),命名为Direction
  2. 在百叶窗面板中链接Direction到“方向”(Direction)
  3. 在“宽度”(Width)一栏键入表达式,按以下规则:用sc链接滑杆控制的值,a链接角控制的值,在最后一行写下

    this.width * Math.sin(a * Math.PI / 180) / sc

类似地,我们可以推导出仅垂直对齐的公式:
dw = w * cosa / sc
并且用类似的方法去写表达式。

三、杂言

希望水平垂直都对齐吗?那么你需要解一个不定方程并得到整数解,这是很难做到的,况且本方法其实已经有些复杂。
从使用价值的角度来考虑,其实还是蛮推荐MMaker的其他方案。如果不是想玩猴子排序那样的东西的话,研究这种东西大概也只是浪费时间罢了。

发布者

Zehy Akuta

良き事のため。

One thought on “关于百叶窗的对齐问题”

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 注销 /  更改 )

Google photo

您正在使用您的 Google 账号评论。 注销 /  更改 )

Twitter picture

您正在使用您的 Twitter 账号评论。 注销 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 注销 /  更改 )

Connecting to %s