opengl3維的貝塞爾曲線和平面的差不多,其實就是2維的貝塞爾曲線經過矩陣轉換得到的。我們可以通過畫多條貝塞爾曲線組合成乙個漂亮的圖形,我實現的是這樣的
其渲染器實現如下
#ifndef bezierrender_h
#define bezierrender_h
#include #include #include #include using bnposition = qpair;
class bezierrender
;#endif // bezierrender_h
#include #include "bezierrender.h"
void bezierrender::inititsize(qvectorpoints, float span, qcolor c)
int steps = static_cast(1.0f/span);
long *jiechengna = new long[n+1];
for(int i = 0; i <= n; i++)
for(int i = 0;i <= steps; i++)
float xf=0;
float yf=0;
float *tka = new float[n+1];
float *otka = new float[n+1];
for(int j = 0; j <= n; j++)
for(int k =0;k<=n;k++)
vertpoints_ << xf << yf << 0.0;
colorpoints_ << c.redf() << c.greenf() << c.bluef();
delete tka;
delete otka;
}qvectoralpoints;
alpoints << vertpoints_ << colorpoints_;
vbo_.create();
vbo_.bind();
vbo_.allocate(alpoints.data(),alpoints.count() * sizeof(glfloat));
delete jiechengna;
}void bezierrender::render(qopenglextrafunctions *f, qmatrix4x4 &pmatrix, qmatrix4x4 &vmatrix, qmatrix4x4 &mmatrix)
long bezierrender::jiecheng(int n)
for(int i = 2; i <= n; i++)
return result;
}
其shader實現如下
#version 330
uniform mat4 upmatrix,uvmatrix,ummatrix;
layout(location = 0) in vec3 aposition;
layout(location = 1) in vec3 acolor;
smooth out vec4 vcolor;
void main(void)
#version 330
in vec4 vcolor;
out vec4 fragcolor;
void main(void)
在使用時,我們需要通過矩陣轉換來畫多條曲線
#ifndef widget_h
#define widget_h
#include #include "bezierrender.h"
class widget : public qopenglwidget
;#endif // widget_h
#include "widget.h"
widget::widget(qwidget *parent)
: qopenglwidget(parent)
widget::~widget()
void widget::resizegl(int w, int h)
void widget::initializegl()
void widget::paintgl()
}
到此結束 貝塞爾曲線
1.概述 貝塞爾曲線 b zier curve 又稱 貝茲曲線或貝濟埃曲線,是應用於二維圖形應用程式的數學曲線。一般的向量圖形 軟體通過它來精確畫出曲線,貝茲曲線由 線段與節點組成,節點是可拖動的支點,線段像可伸縮的皮筋,我們在繪圖工具上看到的鋼筆工具就是來做這種向量曲線的。貝塞爾曲線是計算機圖形學...
貝塞爾曲線
由於工作需要,最近在研究乙個類似qq訊息劃掉的效果 很多強迫症患者童鞋對這個簡直是愛不釋手,當然這個也包括我自己 貝塞爾曲線就是這樣的一條曲線,它是依據四個位置任意的點座標繪製出的一條 光滑曲線 在歷史上,研究貝塞爾曲線的人最初是按照已知曲線 引數方程 來確定四個點的思路設計出這種向量曲線繪製法。貝...
貝塞爾曲線
貝塞爾曲線在android中運用廣泛,可以用來繪製各類複雜曲線,因為貝塞爾曲線只需要指定控制點,就能繪製出特定的曲線。其次是做點和點的平滑過渡。為什麼可以做到如上兩點,看下面的講解 首先來說,貝塞爾曲線有階的概念,這個階可以理解為控制點,一階的控制點只有兩個。如上是一階的方程,其中t取值為0到1,可...