原创 位操作的應用

位操作的定義 所謂的位操作,是指按二進制逐位進行邏輯運算。常見的位運算包括:取反、位與、位或、位異或以及左移、右移。 在 C/C++中,基本的位運算符總結如下,其中運算符優先級爲從上到下遞減,且<<和>>優先級相同,如下表所示: 位運算符

原创 判斷點在多邊形內的算法(Winding Number詳解)

  在計算幾何中,判定點是否在多邊形內,是個非常有趣的問題。通常有兩種方法: 1.Crossing Number(交叉數) 它計算從點P開始的射線穿過多邊形邊界的次數。當“交叉數”是偶數時,點在外面;當它是奇數時,點在裏面。這種方法有時被

原创 Delphi I/O Errors(Delphi讀寫錯誤)

The following are the Windows API (and former DOS) IO errors, which are also the IO errors often returned by Delphi pro

原创 C++校招筆試題,BAT內部流出(1)

1. #include < filename.h >和#include “filename.h” 有什麼區別?   答:對於#include < filename.h >,編譯器從標準庫路徑開始搜索filename.h 對於#includ

原创 平面點集的凸包算法

前言 參考翻譯自Dan Sunday的文章The Convex hull of a point set 凸包計算是計算集合中的一個經典問題。這一問題有許多變種,其中最普遍的形式是計算平面離散點集的最小凸集(稱爲“凸包”)。這一

原创 計算機圖形學學習筆記(6.2): 多邊形裁剪

多邊形裁剪 在實際問題中,我們往往需要處理的是用矩形裁剪一個多邊形,找到多邊形落在屏幕區域內的部分。如下圖: 一般有兩種算法來處理多邊形裁剪問題:Sutherland-Hodgeman算法和Weiler-Atherton算法。 下面介紹

原创 計算機圖形學學習筆記(6.1):直線段裁剪

屏幕映射的概念 如下圖所示,要將實體顯示在2D的屏幕上,需要先將實體在規範化的觀察空間中進行投影變換,然後進行裁剪。這個過程就叫屏幕映射。   裁剪要處理的問題,就是將在觀察窗口內部的圖形裁剪出來,進行顯示。在觀察窗口之外的圖形,將不被

原创 多段線簡化算法,看這一篇就夠了

本文參考自:https://www.codeproject.com/Articles/114797/Polyline-Simplification 前言 在計算幾何中,經常我們會碰到需要簡化輸入Polyline的場景。多段線(Polyli

原创 C++校招筆試題,BAT內部流出(2)

1.已知兩個鏈表head1 和head2 各自有序,請把它們合併成一個鏈表依然有序。(保留所有結點,即便大小相同)      給定鏈表的結點結構如下: struct Node{int data ;Node *next ;}; 答案: N

原创 計算機圖形學學習筆記(4.1)畫線算法

前言 現在的顯示器都是像素點陣。但是圖形在計算機中都用連續的線段或多邊形等存儲。因此在顯示出來之前,要進行光柵化處理。 圖形的光柵化(圖形的掃描轉換)分成兩步: 1)根據圖形的定義 在點陣單元上確定最佳逼近 於圖形的像素集; 2)給像素指

原创 32Bit程序使用超過2G內存的方法

大家知道32Bit程序一般只能使用2G內存,但是我們往往需要使用更大內存,而有不想將程序改成64Bit。 這時候有什麼辦法突破系統限制呢?說不多說,直接上代碼: Delphi環境下,只需要在主程序之前加這麼一句編譯指令: {$SetPE

原创 一文看懂堆和棧的區別

文章目錄一文看懂堆和棧的區別堆棧空間分配區別:堆棧緩存方式區別:可申請大小的區別 一文看懂堆和棧的區別 堆棧空間分配區別: 1、棧(操作系統):由操作系統自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中

原创 優雅高效的多邊形對稱性判定算法

前言 在計算幾何、機器人運動規劃、圖像輪廓分析中,我們常常需要知道一個平面圖形的對稱性(包括旋轉對稱、軸對稱和鏡像對稱)。那麼給定一個平面簡單多邊形,是否存在O(n)的算法,找出其所有的對稱軸和旋轉對稱角度? 答案是肯定的。下面我們一起來

原创 delphi 取得當前進程的內存使用情況及線程數

單元 uses Windows, PsAPI; 1.獲取當前進程句柄:GetCurrentProcess 2.獲取當前進程內存佔用情況:GetProcessMemoryInfo 示例如下: // 取得當前進程佔用內存 function

原创 你一定要知道的計算機底層知識

前言 雖然在程序員的職業生涯中,計算機底層知識可能很少直接涉及,但並不意味着這部分知識不重要。 對於計算機底層實現的深入瞭解,能幫助你瞭解計算機的運行原理,更好地設計高效的架構,並且有助於調試、判斷錯誤。特別地,對於多線程的理解尤爲重要: