Libgdx 之貝塞爾曲線

2021-07-02 13:07:55 字數 2183 閱讀 8458

libgdx 之貝塞爾曲線

貝塞爾曲線,遊戲開發中,常用於物體的運動軌跡、路徑、以及一些特效的實現

線性:二次:

三次:在libgdx中,就自帶關於bezier的實現,以下是本人對公式的實現

p以verctor2表示,為點座標

/**

* 構建貝塞爾曲線類

* @author whs

* */

public abstract class bezier

public static bezier cubic(float x1, float y1, float x2, float y2, float x3,

float y3, float x4, float y4)

public static bezier cubic(vector2 p0, vector2 p1,

vector2 p2, vector2 p3)

public static bezier linear(float x1, float y1, float x2, float y2)

public static bezier linear(vector2 p0, vector2 p1)

public static bezier quadratic(float x1, float y1, float x2, float y2, float x3,

float y3)

public static bezier quadratic(vector2 p0, vector2 p1,

vector2 p2)

/*** 三次方貝塞爾曲線

* @author whs

* */

public static class cubicbezier extends bezier

float f1 = 1.0f - f;

float f2 = f * f;

float f3 = f1 * f1;

float f4 = f3 * f1;

float f5 = f * (3f * f3);

float f6 = f2 * (3f * f1);

float f7 = f2 * f;

tmpvec.x = f4 * p0.x + f5 * p1.x + f6 * p2.x + f7 * p3.x;

tmpvec.y = f4 * p0.y + f5 * p1.y + f6 * p2.y + f7 * p3.y;

return tmpvec;

} }/**

* 線性貝塞爾曲線

* @author whs

* */

public static class linearbezier extends bezier

float f1 = 1.0f - f;

tmpvec.x = f1 * p0.x + f * p1.x;

tmpvec.y = f1 * p0.y + f * p1.y;

return tmpvec;

} }/**

* 二次貝塞爾去選

* @author whs

* */

public static class quadraticbezier extends bezier

float f1 = 1.0f - f;

float f2 = f1 * f1;

float f3 = f * (2.0f * f1);

float f4 = f * f;

tmpvec.x = f2 * p0.x + f3 * p1.x + f4 * p2.x;

tmpvec.y = f2 * p0.y + f3 * p1.y + f4 * p2.y;

return tmpvec;

} }}

bezier曲線的應用:

bezier mybezier = bezier .cubic(point_start,point_control_1 ,point_control_2,point_end);

根據時間的變化,得到曲線上的點的位置,time的取值為0 <= time && time < =1

當然,傳入的引數不一定是時間,例如控制時間為10s,那麼便是time / 10,當然,如果需要實現軌跡的路線,可直接給time初始化為常量

貝塞爾曲線實現較簡單,使用的效果當然由使用者掌控

貝塞爾曲線

1.概述 貝塞爾曲線 b zier curve 又稱 貝茲曲線或貝濟埃曲線,是應用於二維圖形應用程式的數學曲線。一般的向量圖形 軟體通過它來精確畫出曲線,貝茲曲線由 線段與節點組成,節點是可拖動的支點,線段像可伸縮的皮筋,我們在繪圖工具上看到的鋼筆工具就是來做這種向量曲線的。貝塞爾曲線是計算機圖形學...

貝塞爾曲線

由於工作需要,最近在研究乙個類似qq訊息劃掉的效果 很多強迫症患者童鞋對這個簡直是愛不釋手,當然這個也包括我自己 貝塞爾曲線就是這樣的一條曲線,它是依據四個位置任意的點座標繪製出的一條 光滑曲線 在歷史上,研究貝塞爾曲線的人最初是按照已知曲線 引數方程 來確定四個點的思路設計出這種向量曲線繪製法。貝...

貝塞爾曲線

貝塞爾曲線在android中運用廣泛,可以用來繪製各類複雜曲線,因為貝塞爾曲線只需要指定控制點,就能繪製出特定的曲線。其次是做點和點的平滑過渡。為什麼可以做到如上兩點,看下面的講解 首先來說,貝塞爾曲線有階的概念,這個階可以理解為控制點,一階的控制點只有兩個。如上是一階的方程,其中t取值為0到1,可...