網頁版幾何畫板開發筆記(五) 經常使用數學推導一

一元二次方程:
 ax^2 + bx + c = 0
解爲(推導過程略):
  x = x=[-b±√(b²-4ac)]/2a 編程

二元一次方程組:
  A1*x + B1*y + C1 = 0   ---- (1)
  A2*x + B2*y + C2 = 0   ---- (2)
解:
  (1)*A2 :  A1*A2*x + A2*B1*y + A2*C1 = 0
  (2)*A1 :  A1*A2*x + A1*B2*y + A1*C2 = 0
  相減:     0 + (A2*B1 - A1*B2)*y + (A2*C1 - A1*C2) = 0
  從而 y = (A1*C2 - A2*C1) / (A2*B1 - A1*B2)
  有解條件: (A2*B1 - A1*B2) <> 0
 
一樣:
  (2)*B1 : A2*B1*x + B1*B2*y + B1*C2 = 0
  (1)*B2 : A1*B2*x + B1*B2*y + B2*C1 = 0
  相減:    (A2*B1-A1*B2)*x + 0 + (B1*C2 - B2*C1) = 0
  從而 x = (B2*C1 - B1*C2) / (A2*B1 - A1*B2)
  合併 y = (A1*C2 - A2*C1) / (A2*B1 - A1*B2)
  有解條件: (A2*B1 - A1*B2) <> 0
 
 
1. 已知向量 v1,v2, 求其平行條件, 可記爲 v1∥v2.
設向量v1=(x1, y1), v2=(x2, y2), 其平行條件即爲斜率相同, 即:
  y1/x1 = y2/x2,
也即: x1*y2 = x2*y1
也即: x1*y2 - x2*y1 = 0
至關於兩個向量的叉乘(cross product). http://baike.baidu.com/view/452810.htm htm

2. 已知向量 v1, 求其按照座標系正向旋轉 +90°, -90°的向量.
設向量 v1=(x1, y1), 表示爲複數形式爲 v1 = x1 + i*y1,
旋轉 +90° 至關於乘以單位複數 i, 旋轉 -90° 至關於乘以單位複數 -i,
則旋轉 +90° 的向量 v2 = v1*i = (x1 + i*y1) * i = -y1 + i*x1
  表示爲向量爲 (-y1, x1)
則旋轉 -90° 的向量 v3 = v1*(-i) = (x1 + i*y1) * (-i) = y1 - i*x1
  表示爲向量爲 (y1, -x1). get

3. 已知向量 v1,v2, 求其垂直的條件, 可記爲 v1⊥v2.
設向量 v1=(x1, y1), v2=(x2, y2), 將 v2 旋轉 +90°, 若是與 v1 平行
則表示 v1垂直於v2.
其中 v2 旋轉 +90° 後 v2' = (-y2, x2), 其與 v1 平行的條件爲:
  y1/x1=x2/-y2
也即: y1*(-y2)=x1*x2
也即: x1*x2 + y1*y2 = 0
至關於兩個向量的點乘(dot product). http://baike.baidu.com/view/452796.htm it

4. 已知點 p1, p2 求從 p1->p2 的向量和從 p2->p1 的向量.
設點 p1 座標爲 (x1, y1), p2 座標爲 (x2, y2),
則向量 p1->p2 爲 (x2-x1, y2-y1)
則向量 p2->p1 爲 (x1-x2, y1-y2) 程序

5. 已知點 p1, p2, p3, p4, 求 p1p2∥p3p4 的條件, 求 p1p2⊥p3p4 的條件.
根據 4, p1p2 構成的向量 v1 爲 (x2-x1, y2-y1)
  p3p4 構成的向量 v2 爲 (x4-x3, y4-y3)
根據 1, 兩向量平行的條件爲:
  (x2-x1)*(y4-y3) - (x4-x3)*(y2-y1) = 0
根據 3, 兩向量垂直的條件爲:
  (x2-x1)*(x4-x3) + (y2-y1)*(y4-y3) = 0 方法

6. 已知點 p1, p2,
  1) 求其中點 ;
  2) 求 p1->p2 方向延長線上點 p3, 使得 p1p2=p2p3
設點 p1 座標爲 (x1, y1), p2 座標爲 (x2, y2),
  則中點爲 (p1+p2)/2, 也即 ((x1+x2)/2, (y1+y2)/2) view

延長線上 p3, 也即 p3=p2+(p2-p1)=2*p2-p1, 也即
  (2*x2-x1, 2*y2-y1) vi

7. 已知點 p1, p2, 求過這兩點的線的方程.
設點 p1 爲 (x1,y1), p2 爲 (x2,y2),
在程序中通常使用兩點式, 通常式, 參數式三種, 分別以下:
兩點式: (y-y1)/(x-x1) = (y2-y1)/(x2-x1)
參數式: p = (p2-p1)*t + p1, 也即:
  x = (x2 - x1)*t + x1
  y = (y2 - y1)*t + y1
通常式: 將兩點式展開, 化簡以下:
  (y-y1)*(x2-x1) = (y2-y1)(x-x1)  ---- (1)
  (y2-y1)*x -(y2-y1)*x1 = (x2-x1)*y - (x2-x1)*y1
  (y2-y1)*x - (x2-x1)*y +(x2-x1)*y1 - x1*(y2-y1) = 0
  (y2-y1)*x + (x1-x2)*y + (x2*y1 - x1*y2) = 0  ----- (2)
對照 Ax + By + C = 0 的通常式, 有:
  A = (y2-y1)
  B = (x1-x2)
  C = (x2*y1 - x1*y2) co

在參數式中, 參數 t 的幾何意義是 pp1/p2p1, 用於表示區間很是有效,
例如表示線段, 射線, 直線就是用的 t 的區間表示.
  oss

 
8. 已知點 p1, p2 構成線 l1, 點 p3 是線外一點, 求點 p3 到 l1 的垂足.

今設 p1 座標 (x1,y1), p2 座標 (x2,y2), p3 座標 (x3,y3), 垂足爲 p4.
設用參數式表示 p1,p2 的線, 即:
  p = (p2-p1)*t + p1
爲簡化, 令:
  dx = x2-x1 = -B
  dy = y2-y1 = A
設垂足 p4 處 座標爲 (xt, yt), 對應爲 t. 則:
  xt = (x2-x1)*t + x1 = dx*t + x1   ---- (1)
  yt = (y2-y1)*t + y1 = dy*t + y1   ---- (2)
點 p3p4 構成的線與 p1p2 垂直, 所以知足:
  (x3-xt)*(x2-x1) + (y3-yt)*(y2-y1) = 0    ---- (3)
即 (x3-xt)*dx + (y3-yt)*dy = 0
將 xt,yt 的等式 (1)(2) 代入, 獲得:
  (x3 - dx*t - x1)*dx + (y3 - dy*t - y1)*dy = 0
  -dx*dx*t - dy*dy*t + dx*(x3-x1) + dy*(y3-y1) = 0
  dx*(x3-x1) + dy*(y3-y1) = (dx*dx + dy*dy)*t   ---- (4)
爲簡化令 dx*dx + dy*dy = d2 (p1p2距離的平方)
  令 dx*(x3-x1) + dy*(y3-y1) = m 

從而 t = m/d2  ---- (5)
   = [dx*(x3-x1) + dy*(y3-y1)]/(dx*dx + dy*dy)
將 t 代入 (1),(2) 可算出 xt,yt:
  xt = dx*t + x1
  yt = dy*t + y1

xt 分母部分:  dx*dx + dy*dy
xt 分子部分:  dx*[dx*(x3-x1) + dy*(y3-y1)] + x1*(dx*dx + dy*dy)
   = dx*dx*(x3-x1) + dx*dy*(y3-y1) + dx*dx*x1 + dy*dy*x1
   = dx*dx*x3 + dx*dy*(y3-y1) + dy*dy*x1
yt 分母部分:  dx*dx + dy*dy
yt 分子部分:  dy*[dx*(x3-x1) + dy*(y3-y1)] + y1*(dx*dx + dy*dy)
   = dx*dy*(x3-x1) + dy*dy*(y3-y1) + dx*dx*y1 + dy*dy*y1
   = dx*dx*y1 + dx*dy*(x3-x1) + dy*dy*y3

  
網頁上 http://hi.baidu.com/sofiner/item/3cac1a972503e79c581461af 結果爲:
 xt = (B*B*x3-A*B*y3-A*C)/(A*A+B*B)
 yt = (-A*B*x3-A*A*y3-B*C)/(A*A+B*B)

將 A=(y2-y1)=dy,B=(x1-x2)=-dx,C=(x2*y1-x1*y2) 代入檢查:
 xt 分子 =  dx*dx*x3 + dx*dy*y3 - dy*(x2*y1-x1*y2)
   = ... 數步代入後獲得 dx*dx*x3 + dx*dy*(y3-y1) + dy*dy*x1

進一步推導可獲得 p3p4 的距離(略):
  d = |A*x3 + B*y3 + C|/ sqrt(A*A + B*B)

這裏用參數方法求垂足參數 t, 座標 xt,yt, 以及距離 d, 是由於在
某些應用中, 還需檢查垂足是否在線段上, 那麼根據 t 的值, 能夠容易作到,
而若是直接用公式獲得的, 是沒法獲得這個參數 t 的(固然能夠反過來算出來).


9. 已知點 p1,p2,p3, 構成∠p1p2p3, 求此角平分線與線p1p3的交點 p0 的位置,
這個點咱們簡稱爲角平分點.
今角平分線點 p0 在線段 p1p3上面, 知足
  p0 = (p3-p1)*t + p1   (點的參數式表示)
則根據 t 的意義, 其表示 p0p1/p3p1 的比值, 則
  p0p1/p3p0 = t/(1-t)
設 p1p2 長度爲 a, p2p3 長度爲 b, 則根據角平分線比例定理:
  p1p2/p2p3 = p0p1/p3p0
也即 a/b = t/(1-t)
求解: t = a/(a+b)
帶入 t 到參數式中, 獲得角平分線點的座標.

10. 已知點 p1,p2, 求線段 p1p2 的垂直平分線方程.
設座標 p1(x1, y1), p2(x2, y2), 則 p1p2 的中點m爲 ((x1+x2)/2, (y1+y2)/2)
垂直於 p1p2 的向量v爲 p1p2*i = (x2-x1, y2-y1)*i = (y1-y2, x2-x1)

求出 p3=m+v, 求出 p4=m-v, 以這兩點連線(代入兩點式或參數式) 便可獲得
垂直平分線方程.

11. 已知三點 p1,p2,p3 求外心點 O 座標.
在網上能夠找到有很複雜的公式能夠獲得此座標, 可是太複雜, 不易編程不易
驗證, 咱們用這裏的簡單辦法.

首先用 10 的方法獲得 p1p2 的垂直平分線方程 (1)
再獲得 p2p3 的垂直平分線方程 (2), 它們構成二元一次方程組,
用二元一次方程組求解公式代入便可求得交點, 該交點即爲外心座標.

求外心座標主要用於給定三點, 作過三點的圓, 圓心即爲此三點的外心.

相關文章
相關標籤/搜索