我的本科畢設做的是一個BVH檔案解析,角色關節也是一個多叉樹,層次變換樹。孩子節點依賴於結點的變換。中的角色以軀幹Torso為根節點,脖子和頭屬於一個子樹;左右手臂、左右腿分別屬於四個子樹,所以是一個五叉層次變換樹。尤其強調的是手臂支援三個維度運動,所以需要需要增加x,y,z的三層虛節點。右手臂的子樹為:Torso/RShoulderX / RShoulderY/RShoulderZ
三次Bezier曲線有四個控制節點。利用OpenGL的一維求值器原理。 程式介紹:第一次滑鼠左鍵down點為0控制節點, 按住左鍵移動動態移動確定1控制節點,第二次滑鼠左鍵down點3控制節點,按住左鍵移動,確定2控制節點。程式啟動並執行: 代碼只是實現了繪製一段Bezier如下:#include <GL/glut.h>#include <iostream>#include <vector>using namespace std;#define
經常使用到第三方庫。比如:glut,freetype,sdl,大一點的有CEGUI,OSG等。這些庫雖然是開源的,但是很多時候只是使用他們,一般不會去修改。使用就會涉及到三個東西:.h .lib .dll檔案。主要有三種模式:.h+.lib .h+.lib+.dll.dll
一.題目: 用一個m行n列的二維數組來表示迷宮。數組中每個元素的取值為0或1。其中值0表示通路,值1表示阻塞,迷宮的入口在左上放(1,1)處,出口在右下方(m,n)處。要求求出從迷宮入口到出口有無通路,若有通路則指出其中一條通路的路徑,即輸出找到通路的迷宮數組,其中通路上的“0”用另外一個數字8替換,同時列印出所走通路徑上每一步的位置座標及下一步的方向。二.演算法說明:
一,配置 apue.h是作者自己寫的一個檔案,包含了常用的標頭檔,系統不內建。其中包含了常用的標頭檔,以及出錯處理函數的定義。使用起來確實很方便。 想要使用,還要進行下面操作,完成相關配置. 在http://www.apuebook.com/下載src.tar.gz原始碼的壓縮包。 1、解壓至/home/user/目錄下 2、修改
一,題目 輸入一個整數數組,調整數組中數位順序,使得所有奇數位於數組的前半部分,所有偶數位於數組的後半部分。要求時間複雜度為O(n)。二,分析
一、SQL語句(1)Select 查詢語句 文法:SELECT [ALL|DISTINCT] <目標列運算式> [AS 列名] [,<目標列運算式> [AS 列名] ...] FROM <表名> [,<表名>…] [WHERE <條件運算式> [AND|OR <條件運算式>...]
一,數值的整數次方。1)題目:實現函數double Power(double base, int exponent),求base 的exponent 次方。不需要考慮溢出。2)分析:這是一道看起來很簡單的問題。卻暗藏玄機3)源碼: 第一反應:我想這個代碼應該都能寫出來吧#include <iostream>using namespace std;double Power(double base, int exponent){ double result = 1.0
一,題目 如果字串一的所有字元按其在字串中的順序出現在另外一個字串二中,則字串一稱之為字串二的子串。 注意,並不要求子串(字串一)的字元必須連續出現在字串二中。 請編寫一個函數,輸入兩個字串,求它們的最長公用子串,並列印出最長公用子串。 例如:輸入兩個字串BDCABA和ABCBDAB,字串BCBA和BDAB都是是它們的最長公用子串,則輸出它們的長度4,並列印任意一個子串。 二,分析 求最長公用子串(Longest Common
一,找出數組中兩個只出現一次的數字1)題目:一個整型數組裡除了兩個數字之外,其他的數字都出現了兩次。 請寫程式找出這兩個只出現一次的數字。要求時間複雜度是O(n),空間複雜度是O(1) 例如:A[ ]={1,1,2,2,3,3,4,4,5,6}; 需要找出5 和 6 2)分析:由異或運算的性質:任何一個數字異或它自己都等於0。依次異或數組中的每一個數字,結果是兩個只出現一次的數位異或,那些出現兩次的數字全部在異或中抵消掉了。
一,題目: 如何在1MB的空間裡面對一千萬個整數進行排序?並且每個數都小於1千萬。實際上這個需要1.25MB的記憶體空間(這裡所說的空間是考慮用位元影像標記法時,每一位代表一個數,則1千萬/(1024*1024*8) 約為1.25MB )。 1MB總共有838,8608個可用位。所以估計也可以在1MB左右的空間裡面進行排序了。二,分析: 1)基於磁碟的歸併排序(耗時間) 2)每個號碼採用32位整數儲存的話,1MB大約可以儲存250 000
一,javah 用法 javah命令主要用於在JNI開發的時,把java代碼聲明的JNI方法轉化成C\C++標頭檔,以便進行JNI的C\C++端程式的開發。
一,題目 輸入一個正數n,輸出所有和為n連續正數序列。 例如輸入15,由於1+2+3+4+5=4+5+6=7+8=15,所以輸出3個連續序列1-5、4-6和7-8。二,思路 解法一:連續正序列,不包含n本身。所以子序列中最大元素為 n/2+1 求出到前 i個元素和儲存到b數組中,然後遍曆數組b ,i>j 時,求b[i] –b[j] ==n。如果等於則輸出 j+1 到 I 的序列。
一,三個問題A題:給定一個最多包含40億個隨機排列的32位整數的循序檔,找出一個不在檔案中的32位整數。 1、在檔案中至少存在這樣一個數? 2、如果有足夠的記憶體,如何處理? 3、如果記憶體不足,僅可以用檔案來進行處理,如何處理?答案: 1、32位整數,包括-2146473648~~2146473647,約42億個整數,而檔案中只有40億個,必然有整數少了。
一,題目 求一個數組的最長遞減子序列 比如{9,4,3,2,5,4,3,2}的最長遞減子序列為{9,5,4,3,2} 求一個數組的最長遞增子序列 比如{1,-1,2,-3,4,-5,6,-7}的最長遞減子序列為{1,2,4,3,6} 二,遞增序列長度求解方法 解法一: 時間複雜度為 o(n^2)
遞迴求解思路:1) 每個元素依次放到首位,然後對其餘元素遞迴2) 噹噹前元素到達末尾的時候,輸出該序列關鍵是: 每個元素交換完,之後要交換過來。每個元素依次放到首位, for(int i=currentIndex;i<=n;++i){ swap 從i+1遞迴 swap } #include<stdio.h>#include<stdlib.h>#define SWAP(x,y,t)((t)=(x),(x)=(y),(y)=(t))int
我的畢業設計計劃做一個BVH檔案解析和編輯軟體。從電腦編程角度看來,程式員喜歡將很多東西分開對待,從而簡化,也就是分而治之。電腦動畫肯定是複雜的,但是總有辦法解決,於是動畫被分為蒙皮&骨骼動作。BVH檔案存放的就是骨骼的構成和動作資料。 BVH是在BVA格式的基礎上的改進,在動作捕獲後解析出來的,是一種通用的人體特徵動畫檔案格式,廣泛地被當今流行的各種動畫製作軟體(Poser,3DMax等)支援.它對人體的表達採用的就是的骨架模型,通過樹結構來實現。 BVH檔案中主要有兩部分資訊:由關鍵
一,題目 一個數組是由一個遞減數列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移兩位形成的,在這種數組中尋找某一個數。二,分析 1)在此序列不斷二分的過程中,由於原序列是一個遞減序列經過旋轉得到的,將它從任何位置分開,都會得到兩個序列, 其中一個是遞減序列 另一個可以通過一個遞減序列通過旋轉得到。 2
對於學習OpenGL,或者其他的API,基礎的矩陣變換是最重要的。矩陣變換是重中之重。下面就拿紅皮書上的最簡單的demo:cube.c來說。調用函數 glMatrixMode (GL_MODELVIEW);指定修改模型視圖矩陣,以後調用glLoadIdentity (); 將當前的矩陣置為單位矩陣,有利於後面的運算。下面我們假設將對建立的模型glutWireCube (1.0);
一,題目 如何對n個數進行排序,要求時間複雜度O(n),空間複雜度O(1) 二,解答 關鍵:雜湊表,空間複雜度O(1)中1的含義(只要是常量就可以) 看上去似乎任何已知的演算法都無法做到,如果誰做到了,那麼所有的排序方法:QuickSort,ShellSort,HeapSort,BubbleSort等等等等,都可以扔掉了,還要這些演算法幹嗎阿?不過實際上,在數字範圍有限制的情況下,是有一個這樣的演算法的,只需要用一個數組記錄每個數字出現次數就可以了。