QuanAI只读快照

共享会话

有一系列端點組成的折線段ABCDE...X,每條線段的長度都只能是1、2、ϕ、2ϕ、ϕ^2,每兩條相鄰的線段的夾角都一…

分享于 2026年8月27日 10:47
提问者

有一系列端點組成的折線段ABCDE...X,每條線段的長度都只能是1、2、ϕ、2ϕ、ϕ^2,每兩條相鄰的線段的夾角都一定是36°的整數倍。則這些線段的端點都可用Z[\zeta_10]來表示。設X為這個折線的最後一個端點,如何用筆算判定X是否落在AB上?用到五軸SAT,總結成一個公式。

QuanAI

可以。關鍵是:五個 SAT 軸要取允許線段方向的法軸,而不是線段方向本身。

ζ=ζ10=eπi/5,ϕ=ζ+ζ1=1+52.\zeta=\zeta_{10}=e^{\pi i/5},\qquad \phi=\zeta+\zeta^{-1}=\frac{1+\sqrt5}{2}.

先平移、旋轉座標,使 A=0A=0,而所有線段方向均為 ζk\zeta^k。每條位移可寫成

vr=rζkr,r{1,2,ϕ,2ϕ,ϕ2},krZ/10Z.v_r=\ell_r\zeta^{k_r}, \qquad \ell_r\in\{1,2,\phi,2\phi,\phi^2\}, \quad k_r\in\mathbb Z/10\mathbb Z.

因為 rZ[ϕ]Z[ζ]\ell_r\in\mathbb Z[\phi]\subset\mathbb Z[\zeta],所以所有端點都在 Z[ζ]\mathbb Z[\zeta]

1. 五軸投影

五條 SAT 法軸取為

nj=iζj,j=0,1,2,3,4.n_j=i\zeta^j,\qquad j=0,1,2,3,4.

定義正規化投影

Qj(z)=z,njsin(π/5)=Im(zζj)sin(π/5).Q_j(z) = \frac{\langle z,n_j\rangle}{\sin(\pi/5)} = \frac{\operatorname{Im}(z\zeta^{-j})}{\sin(\pi/5)}.

zZ[ζ]z\in\mathbb Z[\zeta],則 Qj(z)Z[ϕ]Q_j(z)\in\mathbb Z[\phi],所以可以完全用整數與 ϕ\phi 筆算。

Fm=sin(mπ/5)sin(π/5).F_m=\frac{\sin(m\pi/5)}{\sin(\pi/5)}.

其週期為 1010,查表如下:

mmod10m\bmod 100123456789
FmF_m0011ϕ\phiϕ\phi11001-1ϕ-\phiϕ-\phi1-1

因此對任一線段位移,

Qj(ζk)=Fkj.Q_j(\ell\zeta^k)=\ell F_{k-j}.

所以若

XA=rrζkr,X-A=\sum_r\ell_r\zeta^{k_r},

直接筆算

Qj(XA)=rrFkrj,j=0,,4Q_j(X-A)=\sum_r\ell_rF_{k_r-j}, \qquad j=0,\ldots,4

即可,不必計算三角函數。


2. 五軸 SAT 的總公式

Y=XA,D=BA,Y=X-A,\qquad D=B-A,

並記

yj=Qj(Y),dj=Qj(D).y_j=Q_j(Y),\qquad d_j=Q_j(D).

在第 jj 條軸上,XX 的投影落在 A,BA,B 的投影之間,等價於

min(0,dj)yjmax(0,dj),\min(0,d_j)\le y_j\le\max(0,d_j),

也就是

yj(yjdj)0.y_j(y_j-d_j)\le0.

因此五軸 SAT 可以總結成一個公式:

XAB    max0j4{Qj(XA)Qj(XB)}0\boxed{ X\in\overline{AB} \iff \max_{0\le j\le4} \left\{ Q_j(X-A)\,Q_j(X-B) \right\} \le0 }

其中

Qj(z)=Im(zζj)sin(π/5).Q_j(z)= \frac{\operatorname{Im}(z\zeta^{-j})}{\sin(\pi/5)}.

等價地,

XAB    max0j4{yj(yjdj)}0.\boxed{ X\in\overline{AB} \iff \max_{0\le j\le4} \left\{ y_j(y_j-d_j) \right\} \le0. }

所有不等式都是在 ϕ=(1+5)/2\phi=(1+\sqrt5)/2 的實嵌入下比較。


3. 為甚麼五軸判準是充分的

D=BA=Lζk,L>0.D=B-A=L\zeta^k,\qquad L>0.

kmod5k\bmod5 條軸恰好垂直於 ABAB,所以

dk=Qk(D)=0.d_k=Q_k(D)=0.

該軸的不等式變成

yk20,y_k^2\le0,

故必有 yk=0y_k=0,也就是 XAX-ABAB-A 共線。

於是可寫成

XA=t(BA).X-A=t(B-A).

對任何 dj0d_j\ne0 的其他軸,

yj(yjdj)=(tdj)(tdjdj)=dj2t(t1).y_j(y_j-d_j) = (td_j)(td_j-d_j) = d_j^2t(t-1).

因此

dj2t(t1)0    0t1.d_j^2t(t-1)\le0 \iff 0\le t\le1.

所以五軸條件同時保證:

  1. XX 在直線 ABAB 上;
  2. XX 位於 A,BA,B 之間。

4. 把 ABAB 規格化成實軸時的顯式公式

若取

A=0,B=L>0,A=0,\qquad B=L>0,

(d0,d1,d2,d3,d4)=(0,L,Lϕ,Lϕ,L).(d_0,d_1,d_2,d_3,d_4) = (0,-L,-L\phi,-L\phi,-L).

xj=Qj(X)x_j=Q_j(X),則判準化為

max{x02,  x1(x1+L),  x2(x2+Lϕ),  x3(x3+Lϕ),  x4(x4+L)}0.\boxed{ \max\left\{ x_0^2,\; x_1(x_1+L),\; x_2(x_2+L\phi),\; x_3(x_3+L\phi),\; x_4(x_4+L) \right\} \le0. }

這就是 ABAB 已對齊實軸時最方便的筆算公式。


5. 用五軸整數係數直接計算

利用

ϕζk=ζk1+ζk+1,\phi\zeta^k=\zeta^{k-1}+\zeta^{k+1},

以及

ϕ2ζk=ζk1+ζk+ζk+1,\phi^2\zeta^k = \zeta^{k-1}+\zeta^k+\zeta^{k+1},

可把端點寫成

z=r=04crζr,crZ,z=\sum_{r=0}^4c_r\zeta^r,\qquad c_r\in\mathbb Z,

其中用 ζr+5=ζr\zeta^{r+5}=-\zeta^r 約化指數。此時

(Q0(z)Q1(z)Q2(z)Q3(z)Q4(z))=(01ϕϕ1101ϕϕϕ101ϕϕϕ1011ϕϕ10)(c0c1c2c3c4).\begin{pmatrix} Q_0(z)\\ Q_1(z)\\ Q_2(z)\\ Q_3(z)\\ Q_4(z) \end{pmatrix} = \begin{pmatrix} 0&1&\phi&\phi&1\\ -1&0&1&\phi&\phi\\ -\phi&-1&0&1&\phi\\ -\phi&-\phi&-1&0&1\\ -1&-\phi&-\phi&-1&0 \end{pmatrix} \begin{pmatrix} c_0\\c_1\\c_2\\c_3\\c_4 \end{pmatrix}.

最後各項都形如 a+bϕa+b\phi。乘法只需使用

(a+bϕ)(c+dϕ)=(ac+bd)+(ad+bc+bd)ϕ,(a+b\phi)(c+d\phi) = (ac+bd)+(ad+bc+bd)\phi,

因為 ϕ2=ϕ+1\phi^2=\phi+1。要精確判定 a+bϕ0a+b\phi\le0,可改寫為

2(a+bϕ)=(2a+b)+b5,2(a+b\phi)=(2a+b)+b\sqrt5,

當兩項異號時,以整數平方比較 (2a+b)2(2a+b)^25b25b^2,不需要小數近似。

提问者

用叉乘和積乘來判定點是否落在AB上

QuanAI

p=BA,q=XA.\mathbf p=B-A,\qquad \mathbf q=X-A.

假設 ABA\ne B,則用二維叉乘與點乘可精確判定:

XAB    {p×q=0,(XA)(XB)0.\boxed{ X\in\overline{AB} \iff \begin{cases} \mathbf p\times\mathbf q=0,\\[2mm] (X-A)\cdot(X-B)\le 0. \end{cases}}

其中:

  • p×q=0\mathbf p\times\mathbf q=0:表示 A,B,XA,B,X 共線;
  • (XA)(XB)0(X-A)\cdot(X-B)\le0:表示 XX 位於 A,BA,B 之間,包含端點。

座標形式

A=(ax,ay),B=(bx,by),X=(x,y),A=(a_x,a_y),\quad B=(b_x,b_y),\quad X=(x,y),

則先算

C=(bxax)(yay)(byay)(xax),C=(b_x-a_x)(y-a_y)-(b_y-a_y)(x-a_x),

以及

D=(xax)(xbx)+(yay)(yby).D=(x-a_x)(x-b_x)+(y-a_y)(y-b_y).

判準就是

XAB    C=0 且 D0.\boxed{X\in\overline{AB}\iff C=0\ \text{且}\ D\le0.}

若要合併成單一 SAT 型公式,可寫成

XAB    max{C2,  BA2D}0.\boxed{ X\in\overline{AB} \iff \max\left\{ C^2,\; |B-A|^2D \right\}\le0. }

因為 C20C^2\ge0BA2>0|B-A|^2>0,上式會同時強迫 C=0C=0D0D\le0

複數/Z[ζ10]\mathbb Z[\zeta_{10}] 形式

將端點視為複數,令

p=BA,q=XA.p=B-A,\qquad q=X-A.

叉乘和點乘分別為

C=Im(pq),C=\operatorname{Im}(\overline p\,q), D=Re ⁣((XA)(XB))=Re ⁣(q(qp)).D=\operatorname{Re}\!\left(\overline{(X-A)}(X-B)\right) =\operatorname{Re}\!\left(\overline q(q-p)\right).

所以最終公式為

XAB    Im ⁣((BA)(XA))=0Re ⁣((XA)(XB))0.\boxed{ X\in\overline{AB} \iff \operatorname{Im}\!\left(\overline{(B-A)}(X-A)\right)=0 \quad\text{且}\quad \operatorname{Re}\!\left(\overline{(X-A)}(X-B)\right)\le0. }

也可以合併為

max{Im ⁣((BA)(XA))2,  BA2Re ⁣((XA)(XB))}0.\boxed{ \max\left\{ \operatorname{Im}\!\left(\overline{(B-A)}(X-A)\right)^2,\; |B-A|^2 \operatorname{Re}\!\left(\overline{(X-A)}(X-B)\right) \right\}\le0. }

Z[ζ10]\mathbb Z[\zeta_{10}] 中,共軛只需使用

ζ10=ζ101,\overline{\zeta_{10}}=\zeta_{10}^{-1},

因此整個判定都能精確筆算,不需要浮點近似。若 A=BA=B,則退化線段的判準單獨改為 X=AX=A

提问者

(X−A)⋅(X−B)≤0(X−A)⋅(X−B)≤0:表示 XX 位於 A,BA,B 之間,包含端點。要不包含端點

QuanAI

若要不包含端點,將點乘條件由 0\le 0 改為嚴格小於 00

Xrelint(AB)    {(BA)×(XA)=0,(XA)(XB)<0.\boxed{ X\in\operatorname{relint}(\overline{AB}) \iff \begin{cases} (B-A)\times(X-A)=0,\\[1mm] (X-A)\cdot(X-B)<0. \end{cases}}

其中假設 ABA\ne B

  • 叉乘等於 00:表示 A,B,XA,B,X 共線;
  • 點乘小於 00:表示 XX 嚴格位於 AABB 之間;
  • X=AX=AX=BX=B 時,點乘等於 00,所以會被排除。

寫成座標形式,若

A=(ax,ay),B=(bx,by),X=(x,y),A=(a_x,a_y),\quad B=(b_x,b_y),\quad X=(x,y),

(bxax)(yay)(byay)(xax)=0,(xax)(xbx)+(yay)(yby)<0.\boxed{ \begin{aligned} &(b_x-a_x)(y-a_y)-(b_y-a_y)(x-a_x)=0,\\ &(x-a_x)(x-b_x)+(y-a_y)(y-b_y)<0. \end{aligned}}

複數形式為

Im ⁣((BA)(XA))=0,Re ⁣((XA)(XB))<0.\boxed{ \operatorname{Im}\!\left(\overline{(B-A)}(X-A)\right)=0, \qquad \operatorname{Re}\!\left(\overline{(X-A)}(X-B)\right)<0. }

也可合成一個公式:

((BA)×(XA))2min ⁣(0,(XA)(XB))2=0\boxed{ \bigl((B-A)\times(X-A)\bigr)^2 - \min\!\left(0,-(X-A)\cdot(X-B)\right)^2=0 }

但實際筆算時,直接檢查「叉乘 =0=0 且點乘 <0<0」最簡單,也最不容易出錯。

提问者

請用以下例子說明:

ABCDEFGH是一系列相連的線段,每條線段長度依次為2ϕ、1、ϕ、1、2、ϕ、1,它們的夾角(同方向)從角ABC開始分別為144°、144°、72°、180°、108°、216°。用筆算判斷H是否在AB上。同時說明如果AB的長度改為ϕ^2結果又是怎樣。

QuanAI

以下沿用前面的要求:判斷 HH 是否落在不包含端點的開線段 ABAB 上。

ABA\ne B,判準是

HAB˚    {(BA)×(HA)=0,(HA)(HB)<0.\boxed{ H\in\mathring{\overline{AB}} \iff \begin{cases} (B-A)\times(H-A)=0,\\[1mm] (H-A)\cdot(H-B)<0. \end{cases}}

1. 決定每條線段的方向

ABAB 水平向右,方向角為 00^\circ。頂點角 ABC\angle ABC 是由射線 BABA 轉向 BCBC;假設題目的角度都沿逆時針方向量。若全部改成順時針,圖形只是上下鏡射,最後結論相同。

各線段的方向為:

線段長度方向角
ABABLL00^\circ
BCBC11180+144=324180^\circ+144^\circ=324^\circ
CDCDϕ\phi144+144=288144^\circ+144^\circ=288^\circ
DEDE11108+72=180108^\circ+72^\circ=180^\circ
EFEF220+180=1800^\circ+180^\circ=180^\circ
FGFGϕ\phi0+108=1080^\circ+108^\circ=108^\circ
GHGH11288+216=504144288^\circ+216^\circ=504^\circ\equiv144^\circ

這裡每次先把前一條線段反向,再加上該頂點的有向角。

可以立即看出:

  • BCBC 的方向是 324324^\circGHGH 的方向是 144144^\circ,兩者相差 180180^\circ,而且長度都是 11,所以完全抵消;
  • CDCD 的方向是 288288^\circFGFG 的方向是 108108^\circ,兩者相差 180180^\circ,而且長度都是 ϕ\phi,所以完全抵消;
  • DEDEEFEF 都與 ABAB 反向,總長度為 1+2=31+2=3

因此

BH=3e\boxed{\overrightarrow{BH}=-3\mathbf e}

其中 e\mathbf eABAB 方向的單位向量。


2. 用 Z[ζ10]\mathbb Z[\zeta_{10}] 筆算

ζ=ζ10=e36i.\zeta=\zeta_{10}=e^{36^\circ i}.

上述各段從 BBHH 的向量為

BH=ζ1+ϕζ2+ζ5+2ζ5+ϕζ3+ζ4.\overrightarrow{BH} = \zeta^{-1} +\phi\zeta^{-2} +\zeta^5 +2\zeta^5 +\phi\zeta^3 +\zeta^4.

因為

ζ5=1,ζ4=ζ1,ζ3=ζ2,\zeta^5=-1, \qquad \zeta^4=-\zeta^{-1}, \qquad \zeta^3=-\zeta^{-2},

所以

BH=(ζ1+ζ4)+ϕ(ζ2+ζ3)+3ζ5=0+03=3.\begin{aligned} \overrightarrow{BH} &= \left(\zeta^{-1}+\zeta^4\right) +\phi\left(\zeta^{-2}+\zeta^3\right) +3\zeta^5\\ &=0+0-3\\ &=-3. \end{aligned}

故若 AB=LAB=L,取

A=(0,0),B=(L,0),A=(0,0),\qquad B=(L,0),

便有

H=(L3,0).\boxed{H=(L-3,0)}.

情況一:AB=2ϕAB=2\phi

此時

A=(0,0),B=(2ϕ,0),H=(2ϕ3,0).A=(0,0),\qquad B=(2\phi,0),\qquad H=(2\phi-3,0).

叉乘

(BA)×(HA)=(2ϕ,0)×(2ϕ3,0)=0.(B-A)\times(H-A) = (2\phi,0)\times(2\phi-3,0) =0.

因此 A,B,HA,B,H 共線。

點乘

(HA)(HB)=(2ϕ3,0)(3,0)=3(2ϕ3)=3(32ϕ).\begin{aligned} (H-A)\cdot(H-B) &=(2\phi-3,0)\cdot(-3,0)\\ &=-3(2\phi-3)\\ &=3(3-2\phi). \end{aligned}

2ϕ=1+5>32\phi=1+\sqrt5>3

可知

3(32ϕ)<0.3(3-2\phi)<0.

因此

(BA)×(HA)=0,(HA)(HB)<0\boxed{ (B-A)\times(H-A)=0, \qquad (H-A)\cdot(H-B)<0 }

所以

H 嚴格落在 A,B 之間。\boxed{H\text{ 嚴格落在 }A,B\text{ 之間。}}

具體來說,

AH=2ϕ3=52>0,HB=3.AH=2\phi-3=\sqrt5-2>0, \qquad HB=3.

位置順序是

A    H    B.A\;-\;H\;-\;B.

情況二:把 ABAB 改成 ϕ2\phi^2

此時只有 ABAB 的長度改變,從 BBHH 的合向量仍然是 3-3。因此

A=(0,0),B=(ϕ2,0),H=(ϕ23,0).A=(0,0),\qquad B=(\phi^2,0),\qquad H=(\phi^2-3,0).

叉乘

(BA)×(HA)=(ϕ2,0)×(ϕ23,0)=0.(B-A)\times(H-A) = (\phi^2,0)\times(\phi^2-3,0) =0.

所以 A,B,HA,B,H 仍然共線。

點乘

(HA)(HB)=(ϕ23,0)(3,0)=3(ϕ23)=3(3ϕ2).\begin{aligned} (H-A)\cdot(H-B) &=(\phi^2-3,0)\cdot(-3,0)\\ &=-3(\phi^2-3)\\ &=3(3-\phi^2). \end{aligned}

ϕ2=ϕ+1<3\phi^2=\phi+1<3

可知

3(3ϕ2)>0.3(3-\phi^2)>0.

因此雖然叉乘為零,但點乘為正:

(BA)×(HA)=0,(HA)(HB)>0.\boxed{ (B-A)\times(H-A)=0, \qquad (H-A)\cdot(H-B)>0. }

所以

H 不在線段 AB 上。\boxed{H\text{ 不在線段 }AB\text{ 上。}}

此時

ϕ23=ϕ2<0,\phi^2-3=\phi-2<0,

HH 位於 AA 的外側,位置順序是

H    A    B.H\;-\;A\;-\;B.

而且

AH=3ϕ2=2ϕ=1ϕ2.AH=3-\phi^2=2-\phi=\frac1{\phi^2}.

總結公式

這個例子對任意 AB=L>0AB=L>0 都有

HA=(L3)e,HB=3e.H-A=(L-3)\mathbf e, \qquad H-B=-3\mathbf e.

因而

(BA)×(HA)=0(B-A)\times(H-A)=0

(HA)(HB)=3(3L).(H-A)\cdot(H-B)=3(3-L).

所以

HAB˚    3(3L)<0    L>3.\boxed{ H\in\mathring{\overline{AB}} \iff 3(3-L)<0 \iff L>3. }

因此:

AB 長度點乘符號結論2ϕ>3<0H 在 AB 內部ϕ2<3>0H 越過 A,不在AB 上\boxed{ \begin{array}{c|c|c} AB\text{ 長度} & \text{點乘符號} & \text{結論}\\ \hline 2\phi>3 & <0 & H\text{ 在 }AB\text{ 內部}\\ \phi^2<3 & >0 & H\text{ 越過 }A,不在AB\text{ 上} \end{array}}
提问者

如果FG長度改為1,角FGH改為180,結果是怎樣?

QuanAI

沿用前面的角度 convention:令 ABAB 向右,所有頂點角都沿同一方向量。若全部反向量,圖形只會上下鏡射,結論不變。

ζ=e36i,ϕ=1+52,\zeta=e^{36^\circ i},\qquad \phi=\frac{1+\sqrt5}{2},

並取

A=0,B=L>0.A=0,\qquad B=L>0.

判斷 HH 是否位於不含端點的線段 ABAB 上,需要同時滿足

(BA)×(HA)=0,(HA)(HB)<0.\boxed{ (B-A)\times(H-A)=0, \qquad (H-A)\cdot(H-B)<0. }

1. 修改後各線段的方向

修改為:

  • FGFG 長度由 ϕ\phi 改為 11
  • FGH\angle FGH216216^\circ 改為 180180^\circ

各線段方向為:

線段長度方向
ABABLL00^\circ
BCBC11324324^\circ
CDCDϕ\phi288288^\circ
DEDE11180180^\circ
EFEF22180180^\circ
FGFG11108108^\circ
GHGH11108108^\circ

因為 FGH=180\angle FGH=180^\circ,所以 FGFGGHGH 同向;兩者的方向都是 108108^\circ

因此

BH=ζ1+ϕζ2+ζ5+2ζ5+ζ3+ζ3=ζ1+ϕζ23+2ζ3.\begin{aligned} \overrightarrow{BH} &=\zeta^{-1}+\phi\zeta^{-2} +\zeta^5+2\zeta^5+\zeta^3+\zeta^3\\ &=\zeta^{-1}+\phi\zeta^{-2}-3+2\zeta^3. \end{aligned}

利用

ζ5=1,ζ3=ζ2,\zeta^5=-1,\qquad \zeta^3=-\zeta^{-2},

得到

BH=3+ζ1+(ϕ2)ζ2.\boxed{ \overrightarrow{BH} = -3+\zeta^{-1}+(\phi-2)\zeta^{-2}. }

2. 分解成水平、垂直分量

利用

cos36=ϕ2,cos72=ϕ12,sin72=ϕsin36,\cos36^\circ=\frac{\phi}{2},\qquad \cos72^\circ=\frac{\phi-1}{2},\qquad \sin72^\circ=\phi\sin36^\circ,

可算出水平分量:

Re(BH)=3+cos36+(ϕ2)cos72=3+ϕ2+(ϕ2)(ϕ1)2=3+ϕ2.\begin{aligned} \operatorname{Re}(\overrightarrow{BH}) &=-3+\cos36^\circ+(\phi-2)\cos72^\circ\\ &=-3+\frac{\phi}{2} +\frac{(\phi-2)(\phi-1)}2\\ &=-\frac{3+\phi}{2}. \end{aligned}

垂直分量:

Im(BH)=sin36(ϕ2)sin72=sin36(ϕ2)ϕsin36=(ϕ2)sin36.\begin{aligned} \operatorname{Im}(\overrightarrow{BH}) &=-\sin36^\circ-(\phi-2)\sin72^\circ\\ &=-\sin36^\circ-(\phi-2)\phi\sin36^\circ\\ &=(\phi-2)\sin36^\circ. \end{aligned}

所以

BH=(3+ϕ2,  (ϕ2)sin36).\boxed{ \overrightarrow{BH} = \left( -\frac{3+\phi}{2}, \;(\phi-2)\sin36^\circ \right). }

因而

HA=(L3+ϕ2,  (ϕ2)sin36).\boxed{ H-A= \left( L-\frac{3+\phi}{2}, \;(\phi-2)\sin36^\circ \right). }

注意到

ϕ20,\phi-2\ne0,

所以 HH 已經不再與 A,BA,B 共線。


3. 叉乘判定

因為

BA=(L,0),B-A=(L,0),

所以

(BA)×(HA)=(L,0)×(L3+ϕ2,(ϕ2)sin36)=L(ϕ2)sin36.\begin{aligned} (B-A)\times(H-A) &= (L,0)\times \left( L-\frac{3+\phi}{2}, (\phi-2)\sin36^\circ \right)\\ &= L(\phi-2)\sin36^\circ. \end{aligned}

因此一般公式為

(BA)×(HA)=L(ϕ2)sin360.\boxed{ (B-A)\times(H-A) = L(\phi-2)\sin36^\circ\ne0. }

只要 L>0L>0,這個叉乘就不會等於零。因此,無論 ABAB2ϕ2\phi 還是 ϕ2\phi^2HH 都不在直線 ABAB 上,更不在線段 ABAB 上。


4. 點乘判定

雖然叉乘不為零已經足夠得出結論,但仍可計算點乘。

h=BH.h=\overrightarrow{BH}.

先算

h2=7ϕ.|h|^2=7-\phi.

又因為 hh 的水平分量是 (3+ϕ)/2-(3+\phi)/2,故

(HA)(HB)=(L+h)h=h2+LRe(h)=7ϕL(3+ϕ)2.\begin{aligned} (H-A)\cdot(H-B) &=(L+h)\cdot h\\ &=|h|^2+L\operatorname{Re}(h)\\ &=7-\phi-\frac{L(3+\phi)}2. \end{aligned}

所以

(HA)(HB)=7ϕL(3+ϕ)2.\boxed{ (H-A)\cdot(H-B) = 7-\phi-\frac{L(3+\phi)}2. }

情況一:AB=2ϕAB=2\phi

L=2ϕL=2\phi

叉乘

(BA)×(HA)=2ϕ(ϕ2)sin36=2(1ϕ)sin360.\begin{aligned} (B-A)\times(H-A) &=2\phi(\phi-2)\sin36^\circ\\ &=2(1-\phi)\sin36^\circ\\ &\ne0. \end{aligned}

點乘

(HA)(HB)=7ϕϕ(3+ϕ)=65ϕ<0.\begin{aligned} (H-A)\cdot(H-B) &=7-\phi-\phi(3+\phi)\\ &=6-5\phi\\ &<0. \end{aligned}

因此

(BA)×(HA)0,(HA)(HB)<0.\boxed{ \begin{aligned} (B-A)\times(H-A)&\ne0,\\ (H-A)\cdot(H-B)&<0. \end{aligned}}

雖然點乘小於零,但叉乘不為零,所以

AB=2ϕ 時,H 不在線段 AB 上。\boxed{AB=2\phi\text{ 時,}H\text{ 不在線段 }AB\text{ 上。}}

此時

H=(3(ϕ1)2,(ϕ2)sin36).H= \left( \frac{3(\phi-1)}2, (\phi-2)\sin36^\circ \right).

也就是 HH 的水平投影落在 A,BA,B 之間,但 HH 位於 ABAB 的下方。


情況二:AB=ϕ2AB=\phi^2

L=ϕ2L=\phi^2

叉乘

利用

ϕ2(ϕ2)=1,\phi^2(\phi-2)=-1,

得到

(BA)×(HA)=sin360.\boxed{ (B-A)\times(H-A) = -\sin36^\circ\ne0. }

點乘

(HA)(HB)=7ϕϕ2(3+ϕ)2=107ϕ2<0.\begin{aligned} (H-A)\cdot(H-B) &=7-\phi-\frac{\phi^2(3+\phi)}2\\ &=\frac{10-7\phi}{2}\\ &<0. \end{aligned}

所以

(BA)×(HA)0,(HA)(HB)<0.\boxed{ \begin{aligned} (B-A)\times(H-A)&\ne0,\\ (H-A)\cdot(H-B)&<0. \end{aligned}}

因此

AB=ϕ2 時,H 也不在線段 AB 上。\boxed{AB=\phi^2\text{ 時,}H\text{ 也不在線段 }AB\text{ 上。}}

此時

H=(ϕ12,(ϕ2)sin36).H= \left( \frac{\phi-1}{2}, (\phi-2)\sin36^\circ \right).

同樣,HH 的水平投影在 A,BA,B 之間,但 HH 不在直線 ABAB 上。


結論

ABAB 長度叉乘點乘HH 是否在開線段 ABAB
2ϕ2\phi2(1ϕ)sin3602(1-\phi)\sin36^\circ\ne065ϕ<06-5\phi<0
ϕ2\phi^2sin360-\sin36^\circ\ne0107ϕ2<0\dfrac{10-7\phi}{2}<0

因此修改 FGFGFGH\angle FGH 後,

無論 AB=2ϕ 或 AB=ϕ2HAB.\boxed{ \text{無論 }AB=2\phi\text{ 或 }AB=\phi^2, \quad H\notin\overline{AB}. }

這也說明:只有在叉乘先等於零、確定三點共線之後,點乘小於零才能表示 HH 嚴格位於 A,BA,B 之間。

提问者

「也就是 H 的水平投影落在 A,B 之間,但 H 位於 AB 的下方。」位於上方還是下方,是如何判定的?

QuanAI

「上方或下方」由叉乘的正負號判定,但要先約定:

  1. 採用通常的直角坐標:xx 軸向右、yy 軸向上;
  2. ABABAA 指向 BB,本例令 ABAB 水平向右。

u=BA,v=HA.\mathbf u=B-A,\qquad \mathbf v=H-A.

二維叉乘為

u×v=(BxAx)(HyAy)(ByAy)(HxAx).\mathbf u\times\mathbf v =(B_x-A_x)(H_y-A_y)-(B_y-A_y)(H_x-A_x).

其符號判定如下:

(BA)×(HA)H 相對於有向直線 AB>0左側=0直線上<0右側\boxed{ \begin{array}{c|c} (B-A)\times(H-A)&H\text{ 相對於有向直線 }A\to B\\ \hline >0&左側\\ =0&直線上\\ <0&右側 \end{array}}

ABAB 水平向右時,「左側」就是上方,「右側」就是下方,因此

(BA)×(HA)H 相對於 AB>0上方=0在直線AB<0下方\boxed{ \begin{array}{c|c} (B-A)\times(H-A)&H\text{ 相對於 }AB\\ \hline >0&上方\\ =0&在直線AB上\\ <0&下方 \end{array}}

套用到本例

前面得到

BA=(L,0)B-A=(L,0)

以及

HA=(L3+ϕ2,(ϕ2)sin36).H-A= \left( L-\frac{3+\phi}{2}, (\phi-2)\sin36^\circ \right).

所以

(BA)×(HA)=(L,0)×(L3+ϕ2,(ϕ2)sin36)=L(ϕ2)sin36.\begin{aligned} (B-A)\times(H-A) &=(L,0)\times \left( L-\frac{3+\phi}{2}, (\phi-2)\sin36^\circ \right)\\ &=L(\phi-2)\sin36^\circ. \end{aligned}

由於

L>0,ϕ2<0,sin36>0,L>0,\qquad \phi-2<0,\qquad \sin36^\circ>0,

(BA)×(HA)<0.\boxed{(B-A)\times(H-A)<0.}

因此,在 ABAB 由左向右且 yy 軸向上的坐標設定下,

H 位於有向直線 AB 的右側,也就是 AB 的下方。\boxed{H\text{ 位於有向直線 }A\to B\text{ 的右側,也就是 }AB\text{ 的下方。}}

這也可以直接由 HH 的縱坐標看出:

Hy=(ϕ2)sin36<0.H_y=(\phi-2)\sin36^\circ<0.

兩種 ABAB 長度

AB=2ϕAB=2\phi,則

(BA)×(HA)=2(1ϕ)sin36<0,(B-A)\times(H-A) =2(1-\phi)\sin36^\circ<0,

所以 HH 在下方。

AB=ϕ2AB=\phi^2,則

(BA)×(HA)=sin36<0,(B-A)\times(H-A) =-\sin36^\circ<0,

所以 HH 也在下方。

要注意:如果將題目中的所有有向角改為相反方向,整個圖形會關於 ABAB 鏡射,叉乘符號也會相反,此時 HH 就會位於上方。換言之,「上方/下方」取決於角度的旋轉方向約定;但「不在 ABAB 上」的結論不變。

提问者

是否可以認為叉乘的實部判斷投影在不在AB上,虛部判定在上方還是下方?

QuanAI

可以這樣理解,但嚴格地說,不是「叉乘的實部和虛部」,而是把二維向量視為複數後,計算一個共軛乘積;它的實部是點乘,虛部是叉乘。

u=BA,v=HA,u=B-A,\qquad v=H-A,

並把 u,vu,v 視為複數。定義

Z=uv=(BA)(HA).\boxed{Z=\overline{u}\,v=\overline{(B-A)}(H-A).}

ReZ=uv,ImZ=u×v.\boxed{ \operatorname{Re}Z=u\cdot v, \qquad \operatorname{Im}Z=u\times v. }

因此可以同時判定「沿著 ABAB 的投影位置」和「位於哪一側」。


1. 實部判定垂足是否落在 ABAB

HH 在有向直線 ABA\to B 上的投影參數為

t=uvu2=ReZBA2.t=\frac{u\cdot v}{|u|^2} =\frac{\operatorname{Re}Z}{|B-A|^2}.

其垂足為

P=A+t(BA).P=A+t(B-A).

因此:

ReZH 的垂足位置<0A 的外側=0垂足為A0<ReZ<BA2A,B 之間=BA2垂足為B>BA2B 的外側\boxed{ \begin{array}{c|c} \operatorname{Re}Z & H\text{ 的垂足位置}\\ \hline <0&A\text{ 的外側}\\ =0&垂足為A\\ 0<\operatorname{Re}Z<|B-A|^2&A,B\text{ 之間}\\ =|B-A|^2&垂足為B\\ >|B-A|^2&B\text{ 的外側} \end{array}}

所以若要求垂足嚴格落在開線段 ABAB 上:

0<Re ⁣((BA)(HA))<BA2.\boxed{ 0<\operatorname{Re}\!\left(\overline{(B-A)}(H-A)\right) <|B-A|^2. }

若包含端點,則改成

0Re ⁣((BA)(HA))BA2.\boxed{ 0\le\operatorname{Re}\!\left(\overline{(B-A)}(H-A)\right) \le|B-A|^2. }

要注意,這只表示 HH 的正交投影ABAB 上,不表示 HH 本身在 ABAB 上。


2. 虛部判定上方或下方

因為

ImZ=(BA)×(HA),\operatorname{Im}Z =(B-A)\times(H-A),

所以

ImZH 相對於有向直線 AB>0左側=0直線AB<0右側\boxed{ \begin{array}{c|c} \operatorname{Im}Z&H\text{ 相對於有向直線 }A\to B\\ \hline >0&左側\\ =0&直線AB上\\ <0&右側 \end{array}}

如果 ABAB 水平向右,則左側就是上方、右側就是下方:

ImZH 相對於 AB>0上方=0在直線AB<0下方\boxed{ \begin{array}{c|c} \operatorname{Im}Z&H\text{ 相對於 }AB\\ \hline >0&上方\\ =0&在直線AB上\\ <0&下方 \end{array}}

一般方向下,最好說「有向直線 ABA\to B 的左側或右側」,因為「上方或下方」只適合水平的 ABAB


3. 合併判定 HH 是否真的在開線段 ABAB

HH 本身嚴格位於 A,BA,B 之間,必須同時滿足:

  1. 虛部為零,即 HHA,BA,B 共線;
  2. 實部嚴格介於 00BA2|B-A|^2 之間。

因此

HAB˚    {Im ⁣((BA)(HA))=0,0<Re ⁣((BA)(HA))<BA2.\boxed{ H\in\mathring{\overline{AB}} \iff \begin{cases} \operatorname{Im}\!\left(\overline{(B-A)}(H-A)\right)=0,\\[1mm] 0< \operatorname{Re}\!\left(\overline{(B-A)}(H-A)\right) <|B-A|^2. \end{cases}}

這與先前的「叉乘加點乘」判準等價:

HAB˚    {(BA)×(HA)=0,(HA)(HB)<0.\boxed{ H\in\mathring{\overline{AB}} \iff \begin{cases} (B-A)\times(H-A)=0,\\ (H-A)\cdot(H-B)<0. \end{cases}}

4. 套用到前面的例子

前面得到

BA=L,B-A=L,

以及

HA=L3+ϕ2+i(ϕ2)sin36.H-A= L-\frac{3+\phi}{2} +i(\phi-2)\sin36^\circ.

因為 BA=LB-A=L 是正實數,

Z=(BA)(HA)=L(L3+ϕ2+i(ϕ2)sin36).\begin{aligned} Z &=\overline{(B-A)}(H-A)\\ &=L\left( L-\frac{3+\phi}{2} +i(\phi-2)\sin36^\circ \right). \end{aligned}

所以

ReZ=L(L3+ϕ2),\operatorname{Re}Z = L\left(L-\frac{3+\phi}{2}\right), ImZ=L(ϕ2)sin36.\operatorname{Im}Z = L(\phi-2)\sin36^\circ.

L=2ϕL=2\phiL=ϕ2L=\phi^2,都有

0<ReZ<L2,0<\operatorname{Re}Z<L^2,

HH 的垂足落在 A,BA,B 之間;同時

ImZ<0,\operatorname{Im}Z<0,

故在約定 ABAB 向右的情況下,HH 位於 ABAB 下方。

總結為:

Re ⁣((BA)(HA)):判定沿 AB 方向的投影位置,Im ⁣((BA)(HA)):判定共線以及位於左側或右側.\boxed{ \begin{aligned} \operatorname{Re}\!\left(\overline{(B-A)}(H-A)\right) &\text{:判定沿 }AB\text{ 方向的投影位置},\\ \operatorname{Im}\!\left(\overline{(B-A)}(H-A)\right) &\text{:判定共線以及位於左側或右側}. \end{aligned}}

所以你的想法基本正確,只需將「叉乘的實部、虛部」改稱為「共軛乘積的實部、虛部」。

提问者

設A為0,B為某實數,得H的c_0到c_4,如何得知H的和實部虛部?是否只要判斷其虛部是否大於0就可知H在AB的上面還是下面?

QuanAI

可以。設

ζ=ζ10=eiπ/5=ei36,\zeta=\zeta_{10}=e^{i\pi/5}=e^{i36^\circ},

並將 HH 寫成五軸係數形式

H=c0+c1ζ+c2ζ2+c3ζ3+c4ζ4,cjZ.\boxed{ H=c_0+c_1\zeta+c_2\zeta^2+c_3\zeta^3+c_4\zeta^4, \qquad c_j\in\mathbb Z. }

因為 A=0A=0B=LRB=L\in\mathbb R,所以直線 ABAB 就是實軸。

一、由 c0,,c4c_0,\ldots,c_4 求實部

利用

cos36=ϕ2,cos72=ϕ12,cos108=ϕ12,cos144=ϕ2,\begin{aligned} \cos36^\circ&=\frac{\phi}{2},\\ \cos72^\circ&=\frac{\phi-1}{2},\\ \cos108^\circ&=-\frac{\phi-1}{2},\\ \cos144^\circ&=-\frac{\phi}{2}, \end{aligned}

可得

ReH=c0+c1cos36+c2cos72+c3cos108+c4cos144=c0+ϕ2(c1c4)+ϕ12(c2c3).\begin{aligned} \operatorname{Re}H &=c_0+c_1\cos36^\circ+c_2\cos72^\circ +c_3\cos108^\circ+c_4\cos144^\circ\\ &= c_0+\frac{\phi}{2}(c_1-c_4) +\frac{\phi-1}{2}(c_2-c_3). \end{aligned}

所以

ReH=c0+ϕ2(c1c4)+ϕ12(c2c3).\boxed{ \operatorname{Re}H = c_0+\frac{\phi}{2}(c_1-c_4) +\frac{\phi-1}{2}(c_2-c_3). }

也可以完全整理成 a+bϕa+b\phi 的形式:

2ReH=(2c0c2+c3)+(c1+c2c3c4)ϕ.\boxed{ 2\operatorname{Re}H = \bigl(2c_0-c_2+c_3\bigr) + \bigl(c_1+c_2-c_3-c_4\bigr)\phi. }

二、由 c0,,c4c_0,\ldots,c_4 求虛部

利用

sin72=sin108=ϕsin36,sin144=sin36,\sin72^\circ=\sin108^\circ=\phi\sin36^\circ, \qquad \sin144^\circ=\sin36^\circ,

得到

ImH=c1sin36+c2sin72+c3sin108+c4sin144=sin36[c1+c4+ϕ(c2+c3)].\begin{aligned} \operatorname{Im}H &=c_1\sin36^\circ+c_2\sin72^\circ +c_3\sin108^\circ+c_4\sin144^\circ\\ &=\sin36^\circ \left[c_1+c_4+\phi(c_2+c_3)\right]. \end{aligned}

因此

ImH=sin36[(c1+c4)+ϕ(c2+c3)].\boxed{ \operatorname{Im}H = \sin36^\circ \left[(c_1+c_4)+\phi(c_2+c_3)\right]. }

由於 sin36>0\sin36^\circ>0,虛部的正負只由

SH=(c1+c4)+ϕ(c2+c3)\boxed{ S_H=(c_1+c_4)+\phi(c_2+c_3) }

決定,不需要真的計算 sin36\sin36^\circ

sgn(ImH)=sgn(SH).\boxed{ \operatorname{sgn}(\operatorname{Im}H) = \operatorname{sgn}(S_H). }

三、是否只判斷虛部就能知道上方或下方?

可以。因為 A=0A=0BB 是實數,直線 ABAB 就是實軸,所以

ImHH 相對於直線 AB>0AB 上方=0AB 上<0AB 下方\boxed{ \begin{array}{c|c} \operatorname{Im}H & H\text{ 相對於直線 }AB\\ \hline >0 & AB\text{ 上方}\\ =0 & AB\text{ 上}\\ <0 & AB\text{ 下方} \end{array}}

換成五軸係數即為

(c1+c4)+ϕ(c2+c3)H 的位置>0AB 上方=0AB 上<0AB 下方\boxed{ \begin{array}{c|c} (c_1+c_4)+\phi(c_2+c_3)&H\text{ 的位置}\\ \hline >0&AB\text{ 上方}\\ =0&AB\text{ 上}\\ <0&AB\text{ 下方} \end{array}}

所以,若目的只是判斷 HH 在實軸的上方還是下方,確實只需要檢查

(c1+c4)+ϕ(c2+c3)\boxed{(c_1+c_4)+\phi(c_2+c_3)}

的符號。


四、要判斷投影是否落在 ABAB 上,還需實部

假設 B=L>0B=L>0,即 ABAB 從原點向右,則 HH 的垂直投影落在開線段 ABAB 上的條件是

0<ReH<L.\boxed{0<\operatorname{Re}H<L.}

代入五軸係數:

0<c0+ϕ2(c1c4)+ϕ12(c2c3)<L.\boxed{ 0< c_0+\frac{\phi}{2}(c_1-c_4) +\frac{\phi-1}{2}(c_2-c_3) <L. }

若包含端點,則改為

0ReHL.0\le \operatorname{Re}H\le L.

因此:

  • 實部判斷沿 ABAB 方向的投影位置;
  • 虛部判斷在 ABAB 上方、下方或直線上。

完整分類為

條件幾何意義0<ReH<L, ImH>0投影在 AB 內,且 H 在上方0<ReH<L, ImH<0投影在 AB 內,且 H 在下方0<ReH<L, ImH=0H 嚴格位於線段 AB 內\boxed{ \begin{array}{c|c} \text{條件}&\text{幾何意義}\\ \hline 0<\operatorname{Re}H<L,\ \operatorname{Im}H>0 &\text{投影在 }AB\text{ 內,且 }H\text{ 在上方}\\ 0<\operatorname{Re}H<L,\ \operatorname{Im}H<0 &\text{投影在 }AB\text{ 內,且 }H\text{ 在下方}\\ 0<\operatorname{Re}H<L,\ \operatorname{Im}H=0 &H\text{ 嚴格位於線段 }AB\text{ 內} \end{array}}

五、用共軛乘積統一表示

因為 A=0A=0B=LRB=L\in\mathbb R,令

Z=BH=LH.Z=\overline{B}H=LH.

L>0L>0 時,

ReZ=LReH,ImZ=LImH.\operatorname{Re}Z=L\operatorname{Re}H, \qquad \operatorname{Im}Z=L\operatorname{Im}H.

所以

0<ReZ<L2    H 的投影在開線段 AB 上,ImZ>0    H 在 AB 上方,ImZ=0    H 在直線 AB 上,ImZ<0    H 在 AB 下方.\boxed{ \begin{aligned} 0<\operatorname{Re}Z<L^2 &\iff H\text{ 的投影在開線段 }AB\text{ 上},\\ \operatorname{Im}Z>0 &\iff H\text{ 在 }AB\text{ 上方},\\ \operatorname{Im}Z=0 &\iff H\text{ 在直線 }AB\text{ 上},\\ \operatorname{Im}Z<0 &\iff H\text{ 在 }AB\text{ 下方}. \end{aligned}}

特別地,

HAB˚    {(c1+c4)+ϕ(c2+c3)=0,0<c0+ϕ2(c1c4)+ϕ12(c2c3)<L.\boxed{ H\in\mathring{\overline{AB}} \iff \begin{cases} (c_1+c_4)+\phi(c_2+c_3)=0,\\[1mm] 0< c_0+\dfrac{\phi}{2}(c_1-c_4) +\dfrac{\phi-1}{2}(c_2-c_3) <L. \end{cases}}

注意:如果 B<0B<0,幾何上的「實軸上方/下方」仍由 ImH\operatorname{Im}H 的正負決定;但相對於有向線段 ABA\to B 的「左側/右側」則由 BImHB\operatorname{Im}H 的正負決定。