#include
#include
#include
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"maincrtstartup\"")
/*初始化視窗大小*/
glsizei winwidth = 600, winheight = 600; /*int*/
/*設定世界座標系*/
glfloat xwcmin = 0.0, xwcmax = 225.0;
glfloat ywcmin = 0.0, ywcmax = 225.0;
class wcpt2d
;typedef glfloat matrix3x3[3][3];
matrix3x3 matcomposite; /*float 3*3 matrix*/
const gldouble pi = 3.14159l;
void init(void)
/*構造3*3矩陣*/
void matrix3x3setidentity(matrix3x3 matident3x3)
/*m1矩陣左乘m2,結果放在m2中*/
void matrix3x3premultiply(matrix3x3 m1, matrix3x3 m2)
void translate2d(glfloat tx, glfloat ty)
void rotate2d(wcpt2d pivotpt, glfloat theta) /*旋轉矩陣*/
void scale2d(glfloat sx, glfloat sy, wcpt2d fixedpt)
/*使用復合矩陣,計算座標轉換*/
void transformverts2d(glint nverts, wcpt2d *verts)
, , };*/
glint k;
glfloat temp;
for (k = 0; k < nverts; k++)
}void ********(wcpt2d *verts)
void displayfcn(void)
, , };/*每個角的座標*/
/*計算三角形質心位置*/
wcpt2d centroidpt;
glint k, xsum = 0, ysum = 0;
/*把每個點對應的座標相加求和除以頂點個數求質心的座標*/
for (k = 0; k < nverts; k++)
centroidpt.x = glfloat(xsum) / glfloat(nverts);/*100*/
centroidpt.y = glfloat(ysum) / glfloat(nverts);/*50*/
/*設定幾何轉換引數*/
wcpt2d pivpt, fixedpt;
pivpt = centroidpt;/*100,50*/
fixedpt = centroidpt;/*100,50*/
glfloat tx = 0.0, ty = 100.0; /*x方向不動,向y正方向平移100個單位*/
glfloat sx = 0.5, sy = 0.5; /*縮放比例*/
gldouble theta = pi / 2.0; /*逆時針選裝90度*/
glclear(gl_color_buffer_bit);/*清空顯示視窗*/
glcolor3f(0.0, 0.0, 1.0);/*設定初始化填充顏色*/
********(verts);/*藍色三角*/
/*初始化復合矩陣*/
matrix3x3setidentity(matcomposite);/*matcomposite
1 00
0 10
0 01*/
/*構造復合矩陣*/
scale2d(sx, sy, fixedpt);/*第一次縮放轉換*/
rotate2d(pivpt, theta);/*第二次旋轉轉換*/
translate2d(tx, ty);/*最後一次平移轉換*/
/*應用復合矩陣三角定點*/
transformverts2d(nverts, verts);
glcolor3f(1.0, 0.0, 0.0);
********(verts);
glflush();
}void winreshapefcn(glint newwidth, glint newheight)
void main(int argc, char ** argv)
//仰天大笑出門去,我輩豈是蓬蒿人
結果
gluortho2d(-1.0, 1.5, -1.5, 1.5*(glfloat)h / (glfloat)w);
glutinitwindowsize(400, 400);//視窗大小跟座標軸大小不是同乙個單位,就像在紙上畫不同大小座標軸一樣
OpenGL學習 二維幾何變換
gltranslatef 實現平移變換 glrotatef 實現旋轉變換 縮放功能可由以上兩個函式實現 矩陣堆疊操作 glpushmatrix glpopmatrix 實現乙個線框模型的自行車運動動畫。採用鍵盤控制的方式,驅動自行車沿某一方向運動。include stdafx.h include i...
二維DCT變換
出處 dct,又叫離散預先變換,它的第二種型別,經常用於訊號和影象資料的壓縮。經過dct變換後的資料能量非常集中,一般只有左上角的數值是非零的,也就是能量都集中在離散余弦變換後的直流和低頻部分。1,一維dct變換 我們首先看著一維的dct變換,這是二維的基礎。一維的dct變換共有8種,其中最實用的是...
二維傅利葉變換需知
from 如下,這個 是實現灰度影象作二維傅利葉變換後的非線性變換哈 clear all i imread coins.png f fft2 im2double i f fftshift f f abs f t log f 1 subplot 1,2,1 imshow f,title 未經變換的頻譜...