貝茲曲線:修訂版本之間的差異
出自六年制學程
(→一、圖形最低點與控制點的關係) |
(→(三)求端點的切線斜率) |
||
第 59 行: | 第 59 行: | ||
====(三)求端點的切線斜率==== | ====(三)求端點的切線斜率==== | ||
− | 切線斜率為 B<sub>y</sub>(t) / B<sub>x</sub>(t) = | + | 切線斜率為 B<sub>y</sub>′(t) / B<sub>x</sub>′(t) = 2β(1-2t) / 2α+2(ɭ-2α)t = β(1-2t) / α+(ɭ-2α)t |
+ | |||
+ | 當 t=0 ,斜率為 β / α | ||
+ | |||
+ | 當 t=1 ,斜率為 -β / ɭ-α | ||
+ | |||
+ | |||
所以有: | 所以有: |
2023年9月16日 (六) 15:51的修訂版本
目錄
二次貝茲曲線
- 二次貝茲曲線畫出的是拋物線,無法畫出橢圓和雙曲線。故無法畫出正圓。
- 所有拋物線都「相似」(不是相等),且所有曲率(0~∞)的微線段都有。
- 兩端點外只有一個控制點。
- 拋物線方程式 ax2+bxy+cy2+dx+ey+f=0 則 b2 - 4ac=0 ,即前三項為完全平方式。
參考
- 二元二次方程式圖形判別的例題
---------- 擬合圓 ---------- - How to create circle with Bézier curves?
- 如何使用Bézier曲線創建圓?
- 用三阶贝塞尔曲线拟合圆
一、圖形最低點與控制點的關係
Q or q (quadratic Bézier curve) |
x1 y1 x y <path d='M0,0 Q50,50 100,0' style='stroke:black'/> <path d='m0,0 q50,50 100,0' style='stroke:black'/> |
從目前點的座標畫條 二次貝茲曲線到指定 點的 x,y 座標:其中 x1,y1 為控制點 |
二次貝茲曲線的參數方程為:
B(t)=(1−t)2×P0+2(1−t)t×P1+t2×P2
圖形為:
其中:
- t 是一個介於 0 到 1 之間的參數
- P0 是起點,座標設為 (0,0)
- P1 是控制點,座標設為 (α,β)
- P2 是終點,座標設為 (ɭ,0)
我們讓起迄點水平排列,並準備由控制點座標(α,β),求出最低點座標(a,b)。
為了找到最大和最小的 y 值,我們可以對 y 的方程進行微分,並將其設為 0 以找到可能的極值。
(一)先求 y 值的關係
它們代入 y 的方程,我們得到:
- By(t)=(1−t)2×0+2(1−t)t×β+t2×0=2β×t(1−t)=2β×(t−t2)
對其進行微分:
- By′(t)=2β(1-2t)
將斜率設為 0 以解 t:
- 1−2t=0
- t=0.5
將 t=0.5 代入 By(t) ,我們得到:
- By(0.5)=2β(0.5)(0.5)=0.5β
因此,最低點的 y 值是 0.5β 。
(二)次求 x 值的關係:
起迄點水平排列時, y 的極值均在 t=0.5 處。
由上一段推理得到 b=½ β,此時 t=0.5 。
B(t)=(1−t)2×P0+2(1−t)t×P1+t2×P2
Bx(0.5)=2(0.5)(0.5)α+0.25ɭ=½ α+¼ ɭ=a
(三)求端點的切線斜率
切線斜率為 By′(t) / Bx′(t) = 2β(1-2t) / 2α+2(ɭ-2α)t = β(1-2t) / α+(ɭ-2α)t
當 t=0 ,斜率為 β / α
當 t=1 ,斜率為 -β / ɭ-α
所以有:
- Q=½ (P+P1) ,P,Q,P1,三點共線,且 Q 為 PP1 的中點。
- P1P0, P1P2 分別切二次貝茲曲線 P0QP2 於 P0, P2