首先是推導:節省功夫我就直接貼**了。
程式加了滑鼠的***,可以移動控制點和型值點。
注意:中矩陣第二行第二列應該為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...