OPENGL繪製貝塞爾曲線

2021-07-11 13:52:43 字數 1121 閱讀 5643

最終效果圖:

通過3個點形成一條貝塞爾曲線

1. 滑鼠問題

在使用滑鼠獲取座標的時候,要知道滑鼠獲取的座標和螢幕座標是不同的;

opengl使用右手座標

從左到右,x遞增

從下到上,y遞增

從遠到近,z遞增

而滑鼠是從左到右增x,同時從上到下也是增y

所以在求 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...