最終效果圖:
通過3個點形成一條貝塞爾曲線
1. 滑鼠問題
在使用滑鼠獲取座標的時候,要知道滑鼠獲取的座標和螢幕座標是不同的;
opengl使用右手座標而滑鼠是從左到右增x,同時從上到下也是增y從左到右,x遞增
從下到上,y遞增
從遠到近,z遞增
所以在求 y 的時候,用(螢幕大小-y)來獲取
2. 繪製
setpoint 用來繪製點
setline 用來繪製線
setbezier 用來繪製貝塞爾曲線
api解釋在**中
#include "gl\glut.h"
#include
#include
//這是乙個點的類,用於儲存其中點的座標
class point
};//點的數量
static
int pointsnum = 0;
//用於儲存點的集合,因為繪製的都是4個點的貝塞爾曲線,所以陣列大小為4
static point points[4];
//初始化函式
void init(void)
//繪製點
void setpoint(point p)
// 繪製直線
void setline(point p1, point p2)
// 繪製貝塞爾曲線
point setbezier(point p1, point p2, point p3, point p4,double t)
//display函式
void display()
// 滑鼠事件
void mymousefunction(int button, int state, int x, int y)
pointsnum = 0;
}else
}}int main(int argc, char *argv)
繪製貝塞爾Bezier曲線
trainingtools.cpp 定義控制台應用程式的入口點。include include include include include include using namespace std const int ww max mark count 40 最大40個控制點 int mark c...
繪製貝塞爾曲線通用方法
計算三次貝塞爾曲線,後面n n 3 計算時,都是將點分成一組一組的三次貝塞爾曲線 skpoint calcthreebezier wm5 vector2d ptw1,wm5 vector2d ptw2,wm5 vector2d ptw3 繪製貝塞爾曲線函式 void drawbezier vecto...
繪製漸變的貝塞爾曲線
前面介紹了使用qt中的api繪製貝塞爾曲線,使用qt的api繪製貝塞爾曲線可參見繪製貝塞爾曲線,本章介紹一下使用線段連線的方式繪製一條漸變的貝塞爾曲線。效果如下圖所示 二階貝塞爾曲線的公式如下 b t p 0 1 t 3 3p1t 1 t 2 3 p2t2 1 t p3 t3,t 0,1 b t p...