blob: a9bc09739175b15f7a2deec66a166b7fec5d1c16 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
fx = rx / rw
fy = ry / rw
fx = f0x + u * (flx - f0x + v * (frx - flx))
fy = f0y + u * (fly - f0y + v * (fry - fly))
fz = f0z + u * (flz - f0z + v * (frz - flz))
rx = r0x + s * (rlx - r0x + t * (rrx - rlx))
ry = r0y + s * (rly - r0y + t * (rry - rly))
rz = r0z + s * (rlz - r0z + t * (rrz - rlz))
rx = r0x + s * rlx - s * r0x + s * t * rrx - s * t * rlx
= (1 - s) * r0x + s * ((1 - t) * rlx + t * rrx)
<=> s = (rx - r0x) / ((1 - t) * rlx + t * rrx - r0x)
s = (rx - r0x) / ((1 - t) * rlx + t * rrx - r0x)
s = (ry - r0y) / ((1 - t) * rly + t * rry - r0y)
s = (rz - r0z) / ((1 - t) * rlz + t * rrz - r0z)
s = (rx - r0x) / (tlx + t * (rrx - rlx) - r0x)
s = (ry - r0y) / ((1 - t) * tly + t * rry - r0y)
s = (rz - r0z) / ((1 - t) * tlz + t * rrz - r0z)
# ry = (1 - s) * r0y + s * ((1 - t) * rly + t * rry)
# <=> (ry - (1 - s) * r0y) / s = (1 - t) * rly + t * rry
# <=> t = ((ry - (1 - s) * r0y) / s - rly) / (rry - rly)
# = ((ry - r0y + s * r0y) / s - rly) / (rry - rly)
# = ((ry - r0y) / s + r0y - rly) / (rry - rly)
# = (ry - r0y) / (s * (rry - rly)) + (r0y - rly) / (rry - rly)
# = (ry - r0y) / ((rx - r0x) / ((1 - t) * tlx + t * rrx - r0x) * (rry - rly)) + (r0y - rly) / (rry - rly)
ry = r0y + s * (rly - r0y + t * (rry - rly))
= r0y + ((rx - r0x) / ((1 - t) * tlx + t * rrx - r0x)) * (rly - r0y + t * (rry - rly))
a = (1 - k) * x + k * y
= x + k * (y - x)
<=> a - x = k * (y - x)
<=> k = (a - x) / (y - x)
|