OpenGL實現Hermite演算法繪製三次曲線

2021-08-09 07:35:24 字數 1501 閱讀 5020

首先是推導:節省功夫我就直接貼**了。

程式加了滑鼠的***,可以移動控制點和型值點。

注意:中矩陣第二行第二列應該為3,當時筆誤

程式效果:

**如下:

#include

#include

#include

#include

using

namespace

std;

struct vertex

};vertex p0(100, 250); //型值點

vertex p1(400, 250);

vertex c0(150, 200); //控制點

vertex c1(350, 300);

bool mouseleftisdown = false;

bool mouserightisdown = false;

int caculatesquaredistance(vertex a, vertex b)

void hermite(int n) //精度

glend();

}void mydisplay()

void mouse(int button,int state,int x, int y) //監聽滑鼠動作

if (button == glut_left_button && state == glut_up)

if (button == glut_right_button && state == glut_down)

if (button == glut_right_button && state == glut_up)

}void motion(int x, int y) //移動點

else

if (caculatesquaredistance(vertex(x, y), c1) < 400)

}else

if (mouserightisdown) //右鍵移動型值點

else

if (caculatesquaredistance(vertex(x, y), p1) < 400)

}glutpostredisplay(); //重新構圖

}void reshape(int w, int h) //兩個引數:視窗被移動後大小

void initwindow(int &argc, char *argv, int width, int height, char *title) //初始化並顯示到螢幕**

int main(int argc, char *argv)

hermite插值 分段插值 Hermite插值

1.分段二次多項式插值 試用分段 4段 二次多項式插值來近似 0,1 區間上的 runge 函式 1 取區間的 8 等分點,計算插值節點處的函式值 2 每次取 3 個相鄰的等分點為一組,呼叫 polyinterp 函式,計算繪圖求值點 3 繪圖.2.hermite插值 編寫程式,繪製繪製多項式 p ...

OpenGL放大縮小實現

本文採用兩種方式,在opengl中實現放大縮小功能 方式一.改變 視點 與模型之間的距離 改變模型視點變換矩陣 對於這種方式存在三個問題需要解決 縮放過程過渡平滑 當模型放大或縮小到一定程度,減慢其縮放速度,以免視點很快地貼近模型或消失在場景中 防止視點進入模型內部 解決方案 使用反正切函式 y 0...

數值演算法 Hermite插值法

相關的理論請參考相關的數值演算法的書籍,我這裡只給出關鍵的函式及主程式段,其餘相關的細節就不再一一羅列了 hermite 插值法結合了函式的導數值,使得插值的精度更為提高 void hermite3 type xlist,type ylist,type yplist,type x,file outp...