OpenGL入門示例8——圖形平移、旋轉、縮放
#include<GL/glut.h> #include <windows.h> static GLfloat spin=0.0; //旋轉量 static GLfloat move=0.0; //平移量 static GLfloat size=1.0; //縮放量 void init(void) { glClearColor(0.0,0.0,0.0,0.0); //指定清除顏色(黑色),即背景顏色 glShadeModel(GL_FLAT); } void display(void) { glClear(GL_COLOR_BUFFER_BIT); //清除所有的畫素 glPushMatrix(); glTranslatef(move,0,0); //移動,引數含義(x軸位移,y軸位移,z軸位移) glRotatef(spin,0,0,1); //旋轉,引數含義(旋轉量,x軸,y軸,z軸) glScalef(size,size,1); //縮放,引數含義(x軸倍數,y軸倍數,z軸倍數) glColor3f(0.0,1.0,0.0); //繪製顏色RGB glRectf(-25.0,-25.0,25.0,25.0); //繪製矩形 glPopMatrix(); glutSwapBuffers(); } void reshape(int w,int h) { glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-50.0,50.0,-50.0,50.0,-1.0,1.0); } void spinAndSizeDisplay() { spin>360?spin-=360:spin+=2; size>2?size-=2:size+=0.003; glutPostRedisplay(); //標記當前視窗需要重繪,否則不會旋轉 Sleep(10); } void moveDisplay() { move=move>20?move-=20:move+=1; glutPostRedisplay(); //標記當前視窗需要重繪,否則不會旋轉 Sleep(10); } int main(int argc,char* argv[]) { glutInit(&argc,argv); //初始化GLUT並處理命令列引數 glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB); //指定模式:雙快取;RGB模式 glutInitWindowSize(250,250); //指定視窗大小(畫素) glutInitWindowPosition(300,200); //指定視窗左上角在螢幕上的位置 glutCreateWindow(argv[0]); //使用OpenGL場景建立一個視窗,引數為視窗名稱 init(); //呼叫初始化函式 glutDisplayFunc(display); //顯示 glutReshapeFunc(reshape); //重繪 glutIdleFunc(spinAndSizeDisplay); //旋轉&縮放 //glutIdleFunc(moveDisplay); //移動(與上邊函式只能有一個有效) glutMainLoop(); //進入主迴圈並處理事件,此時建立的所有視窗都會顯示出來,被渲染到這些視窗中的內容也將顯示出來,程式開始處理事件,註冊的顯示回撥函式被觸發 return 0; //ANSI C要求函式main()返回一個int值 }
效果圖:
相關推薦
OpenGL入門示例8——圖形平移、旋轉、縮放
#include<GL/glut.h> #include <windows.h> static GLfloat spin=0.0; //旋轉量 static GLfloat move=0.0; //平移量 static GLfloat
SVG 的平移、旋轉和縮放
SVG中的平移、旋轉和縮放在不同的引數條件下,體現出不同的效果: 1、如果直接用x、y指定了圖形的座標(在我的理解該座標實際是圖形相對座標,如果沒有通過transform屬性設定座標平移,該座標是相對畫布起始位置座標,如果設定了座標平移則為相對平移後坐標位置的偏移),所有的
七、Sketchup用ruby進行二次開發--利用Transformation實現Move工具(平移、旋轉和縮放)
在Sketchup中,move工具使用的非常廣泛,,可以移動、拉伸和複製幾何體,也可以用來旋轉元件。舉一個簡單地例子。 我們要做一個建築物的尖頂,如下圖所示,就是使用move工具實現的。 接下來我們就要學習如何使用ruby實現這樣的功能
canvas和白鷺引擎中平移,旋轉,縮放
都是 canvas 引擎 偏移 坐標 這一 text sla 偏移量 canvas中的 translate() 和白鷺引擎中的 .x 或者 .y 所導致的平移效果並不是移動 目標元素,而是移動目標元素父親所在的坐標系。 例如 bgg.translate(100,100)
矩陣運算——平移,旋轉,縮放
平時開發程式,免不了要對影象做各種變換處理。有的時候變換可能比較複雜,比如平移之後又旋轉,旋轉之後又平移,又縮放。 直接用公式計算,不但複雜,而且效率低下。這時可以藉助變換矩陣和矩陣乘法,將多個變換合成一個。 最後只要用一個矩陣對每個點做一次處理就可以得到想要的結果。
[CAAnimation核心動畫練習一]普通的平移,旋轉,縮放
#import "ViewController.h" @interface ViewController () { @private CALayer* _calyer; } @end @implementation ViewController - (vo
Android matrix偏移(平移),旋轉,縮放,傾斜的原理
第一部分 Matrix的數學原理 在Android中,如果你用Matrix進行過影象處理,那麼一定知道Matrix這個類。Android中的Matrix是一個3 x 3的矩陣,其內容如下: Matrix的對影象的處理可分為四類基本變換: Translate
計算機圖形與OpenGL學習五(二維幾何變換1.平移、旋轉、縮放)
二維幾何變換(平移、旋轉、縮放)本章涉及數學變換比較多,程式碼是次要的,數學理論可自己推導一下。【二維平移】通過將二維量加到一個點的座標上來生成一個新的座標位置,可以實現一次平移。將平移距離加到原始座標上獲得一個新的座標,實現一個二維位置的平移。為平移向量,使用列向量來表示各
二維圖形學的變換-平移、旋轉、縮放 OpenGL
這裡實現的是多點畫多邊形,然後把這個多邊形進行二維的變換。 首先,多點畫多邊形,為了方便起見,我直接呼叫了Opengl的庫函式。其次,就是如何進行多邊形的二維變換。在這裡我有兩種方法。第一種是直接根據數學三角等公式推斷得到結果。第二種方法是用矩陣相乘的方法。 先講第一種:
opengl繪製桌子(平移、旋轉、縮放)
主要儀器裝置 VisualStudio C++2015 Windows10環境 Glut壓縮包 Ex2工程 操作方法和實驗步驟 1.繪製立方體 桌子由立方體組成,我們可以通過繪製六個面來構造一個立方體。六個面的繪製需要八個頂點的引數,而每個頂點均有x,y,z三個引數,如
Android OpenGLES2.0(十)——OpenGL中的平移、旋轉、縮放
在前面的部落格中,所有的例子都是一個物件,類似繪製圓錐繪製圓柱,我們都是傳入一個引數,然後去控制那個圓面的位置,如果我們要繪製幾個個正方形,它的位置、大小、方向都是不相同的,按照那種方式該多麻煩啊。所以我們需要更好的辦法——矩陣變換。 什麼是矩陣 其實在
Matlab 圖像平移、旋轉、縮放、鏡像
more msh ret 結果 src end 初始 求解 http 今天學習了用Matlab實現對圖像的基本操作。在Matlab中,圖像是按照二維矩陣的形式表示的。所以對圖像的操作就是對矩陣的操作。 對圖像進行縮放、平移、旋轉,都可以轉化為矩陣的運算。 關於變換矩陣的構
基本動畫、復合動畫設置 平移、縮放、旋轉、透明度 編碼實現 xml實現
sca ons new rpo 頂點 進行 clas imageview abs public class VAActivity extends Activity { private ImageView iv_animation; private Tex
屬性動畫---平移、旋轉、縮放、漸變、組合
佈局—5個按鈕,一個ImageView 平移 private void transAnimator() { ObjectAnimator objectAnimator = new ObjectAnimator().ofFloat(image,
OpenGL ES2.0實現手指滑動平移、雙指縮放Android
主要是實現了手指在螢幕上滑動實現平移,兩個手指進行縮放。主要是這部分矩陣還挺麻煩的。 效果圖如下所示: 核心部分程式碼如下 觸控事件處理: @SuppressLint("ClickableViewAccessibility") @Override
4_圖片的裁剪、旋轉、平移、模糊(20181218)
圖片的裁剪、旋轉、放縮、平移、模糊(20181218) 1、圖片的裁剪 2、Tensorflow 中圖片的裁剪 2、圖片的旋轉 3、圖片的放縮 4、圖片的平移 5、圖片的模糊
線性代數——矩陣解釋平移、旋轉、縮放等
參考部落格: 線性代數:理解齊次座標 https://blog.csdn.net/yinhun2012/article/details/79566148 線性代數:矩陣變換圖形(二維平移縮放旋轉) https://blog.csdn.net/yinhun2012/article/de
vtkPolyData 的空間變換(平移、旋轉、縮放)
vtkPolydata的空間變化主要基於vtkTransform與vtkTransformPolyDataFilter兩個類實現,示例程式碼如下: vtkSmartPointer<vtkTr
檢視的平移、旋轉、縮放等操作(transform)
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from
matlab 影象幾何變換 平移、旋轉、縮放
1、縮放 該函式用於對影象做縮放處理。在matlab的命令視窗中輸入doc imresize或者help imresize即可獲得該函式的幫助資訊 呼叫格式 B = imresize(A, m) 返回的影象B的長寬是影象A的長寬的m倍,即縮放影象。 m大於1,則放大影象;