跳轉到內容

分形/計算機圖形技術/2D/座標

來自華夏公益教科書

平面的座標

一般型別

  • 線性/非線性(軸的刻度)
  • 維度:1D、2D、3D、...
  • 3D 的方向
    • 手性(右手座標系 (RHS) 或左手座標系 (LHS))[1]
  • 原點位置
    • 左上角原點座標系(原點位於螢幕的左上角,x 和 y 向右和向下為正)
    • 左下角原點座標系(原點位於視窗或客戶端區域的左下角)
    • 中間 = 中心原點座標系(0,0 座標位於中間。x 從左到右增加。y 從下到上增加。)



存在不同的二維座標系:[2]

  • 笛卡爾座標系(直角、正交)
  • 橢圓座標系(曲線座標)
  • 拋物線
  • 極座標
  • 對數極座標
  • 雙極座標
  • 規範化齊次座標

計算機圖形中的型別

  • 世界座標(使用浮點數)[3]
  • 裝置座標[4]
    • 螢幕座標(使用整數)用於螢幕、點陣圖或陣列的畫素

這兩種型別之間的關係建立了新專案

  • 畫素[5] 大小(畫素間距)與縮放有關
  • 螢幕和整數座標之間的對映(轉換)[6][7]
  • 裁剪
  • 光柵化


這些不是

  • 地理空間座標
    • 地理座標系 (GCS)
    • 空間參考系統 (SRS) 或座標參考系統 (CRS)

笛卡爾座標系

[編輯 | 編輯原始碼]

笛卡爾座標系用於歐幾里得幾何。

笛卡爾座標系

  • 1D、2D、3D、...
  • 每個軸上的線性刻度(保持形狀)
  • 座標
    • 正交(直角)
    • 極座標

元素

  • 原點 (0,0) 及其位置
  • 單位
  • 方向
  • 寬度、高度

齊次座標

[編輯 | 編輯原始碼]

齊次座標或射影座標,由奧古斯特·費迪南德·莫比烏斯於 1827 年引入,是射影幾何中使用的一種座標系。

有理貝塞爾曲線 - 在齊次座標中定義的多項式曲線(藍色)及其在平面上的投影 - 有理曲線(紅色)

它們具有以下優點:

  • 可以使用有限座標表示包括無窮遠點在內的點的座標
  • 涉及齊次座標的公式通常比它們的笛卡爾對應公式更簡單、更對稱
  • 齊次座標具有廣泛的應用,包括計算機圖形和三維計算機視覺,它們允許仿射變換以及一般來說射影變換很容易用矩陣表示
  • 使用規範化的齊次座標避免了有理函式迭代中的溢位和下溢錯誤迭代

在齊次座標中,二維平面上的一個點是一個三元組(一個由 3 個數字組成的有限有序列表(序列))[8]:



元素

  • 擴充套件的歐幾里得平面或實射影平面


從齊次座標 到笛卡爾座標 的轉換,我們只需將每個笛卡爾座標 除以 [9]



要將笛卡爾座標 轉換為齊次座標,在末尾新增一個第三個座標 1 



齊次座標下的矩陣運算

[edit | edit source]


二維卷積動畫

對數極座標

[edit | edit source]

在數學中,對數極座標(或對數極座標)是二維座標系,其中點由兩個數字標識

  • 一個表示到某個點的距離的對數
  • 一個表示角度

對數極座標與極座標密切相關,極座標通常用於描述具有某種旋轉對稱性的平面域。在諸如調和分析和複分析的領域中,對數極座標比極座標更規範。另請參閱 指數對映

定義

[edit | edit source]

平面上的對數極座標由一對實數 (ρ,θ) 組成,其中 ρ 是給定點與原點之間距離的對數,θ 是參考線(x 軸)與過原點和該點的直線之間的角度。角度座標與極座標相同,而半徑座標根據以下規則進行變換

.

其中 是到原點的距離。


對數極座標對映:從笛卡爾空間 (x,y) 到極座標空間或 (ρ,θ) 空間的近似對映[10]





其中

  • 其中 是影像中心(例如 )的徑向距離
  • 表示角度。

應用

[edit | edit source]

影像分析

[edit | edit source]

早在 1970 年代末,離散螺旋座標系的應用已出現在影像分析(影像配準)中。用這種座標系而不是笛卡爾座標系來表示影像,在旋轉或放大影像時具有計算優勢。此外,人眼視網膜中的光感受器分佈方式與螺旋座標系非常相似。[11] 它也可以在曼德勃羅特分形中找到(參見右側圖片)。

對數極座標還可以用於構建拉東變換及其逆變換的快速方法。[12]

離散幾何

[edit | edit source]

為了用數值方法求解一個域中的偏微分方程,必須在這個域中引入一個離散的座標系。如果這個域具有旋轉對稱性,並且您想要一個由矩形組成的網格,那麼極座標是一個糟糕的選擇,因為它在圓心處會產生三角形而不是矩形。

然而,可以透過以下方式引入對數極座標來解決這個問題

  • 將平面分成邊長為 2/n 的正方形網格,其中 n 是一個正整數
  • 使用復指數函式在平面上建立對數極座標網格。然後,左半平面被對映到單位圓盤上,半徑的數量等於 n。更重要的是,可以將這些正方形的對角線對映到單位圓盤上,這將在單位圓盤中產生一個由螺旋線組成的離散座標系,請參閱右側的圖形。

螢幕或影像或裝置座標

[edit | edit source]
  • 影像中的座標值始終為正[13]
  • 原點 = 點 (90, 0) 位於螢幕的左上角
  • 座標是整數值
  • 螢幕上的座標系是左手系的,即 x 座標從左到右增加,y 座標從上到下增加。

柵格 2D 圖形

世界座標

[edit | edit source]
// from screen to world coordinate ; linear mapping
// uses global cons
double GiveZx (int ix)
{
  return (ZxMin + ix * PixelWidth);
}

// uses globaal cons
double GiveZy (int iy)
{
  return (ZyMax - iy * PixelHeight);
}				// reverse y axis


complex double GiveZ (int ix, int iy)
{
  double Zx = GiveZx (ix);
  double Zy = GiveZy (iy);

  return Zx + Zy * I;




}


  // modified code using center and radius to scan the plane 
  int height = 720;
  int width = 1280;
  double dWidth;
  double dRadius = 1.5;
  double complex center= -0.75*I;
  double complex c;
  int i,j;

  double width2; // = width/2.0
  double height2; // = height/2.0
  
  width2 = width /2.0;
  height2 = height/2.0;

complex double coordinate(int i, int j, int width, int height, complex double center, double radius) {
  double x = (i - width /2.0) / (height/2.0);
  double y = (j - height/2.0) / (height/2.0);
  complex double c = center + radius * (x - I * y);
  return c;
}

for ( j = 0; j < height; ++j) {
    for ( i = 0; i < width; ++i) {
      c = coordinate(i, j, width, height, center, dRadius);
      // do smth 
       }
     }


或者簡稱為

 
 double pixel_spacing = radius / (height / 2.0);
 complex double c = center + pixel_spacing * (x-width/2.0 + I * (y-height/2.0));

座標變換

[edit | edit source]

另請參閱


通常,存在許多不同的座標系來描述幾何圖形。不同系統之間的關係由座標變換描述,該變換給出了一個系統中的座標關於另一個系統中的座標的公式。例如,在平面上,如果笛卡爾座標 (xy) 和極座標 (rθ) 具有相同的原點,並且極軸是正的 x 軸,則從極座標到笛卡爾座標的座標變換由 x = r cosθy = r sinθ 給出。

對於空間到自身的每個雙射,都可以關聯兩個座標變換

  • 使得每個點的像的新座標與原始點的老座標相同(對映的公式是座標變換的逆公式)
  • 使得每個點的像的老座標與原始點的新座標相同(對映的公式與座標變換的公式相同)

例如,在 1D 中,如果對映是向右平移 3,則第一個將原點從 0 移動到 3,使得每個點的座標減少 3,而第二個將原點從 0 移動到 -3,使得每個點的座標增加 3。以下是使用最廣泛的一些座標變換的列表。

二維

[edit | edit source]

設 (x, y) 為標準笛卡爾座標,(r, θ) 為標準極座標。

到笛卡爾座標

[edit | edit source]

從極座標

[edit | edit source]

從對數極座標

[edit | edit source]

從笛卡爾座標到對數極座標的變換公式由下式給出

從對數極座標到笛卡爾座標的變換公式為

使用複數 (xy) = x + iy,後一種變換可以寫成

即復指數函式。

由此可以得出,諧波分析和複分析中的基本方程將與笛卡爾座標系中的形式相同。這在極座標系中是不成立的。



使用複數 ,變換可以寫成

也就是說,它是用復指數函式給出的。

從雙極座標

[edit | edit source]

從雙心雙極座標

[edit | edit source]

從切薩羅方程

[edit | edit source]

到極座標

[edit | edit source]

從笛卡爾座標

[edit | edit source]

注意:求解 會得到第一象限的角 ()。為了找到 ,必須參考原始的笛卡爾座標,確定 所在的象限(例如,(3,−3) [笛卡爾座標] 位於第四象限),然後使用以下方法求解

  • 對於 在第一象限
  • 對於 在第二象限
  • 對於 在第三象限
  • 對於 在第四象限

必須用這種方式求解 ,因為對於所有 的值, 僅在 上定義,並且是週期性的(週期為 )。這意味著反函式將只給出函式域中的值,但限制在一個週期內。因此,反函式的範圍只是一個完整圓形的一半。

注意,也可以使用

從雙心雙極座標

[edit | edit source]

其中,2c 表示兩極之間的距離。

從笛卡爾座標系轉換為對數極座標系

[edit | edit source]

弧長和曲率

[edit | edit source]

在笛卡爾座標系中

[edit | edit source]

在極座標系中

[edit | edit source]

三維

[edit | edit source]

設 (x, y, z) 為標準笛卡爾座標,(ρ, θ, φ) 為 球面座標,其中 θ 為從 +Z 軸測量的角度(如 [1],參見 球面座標 中的約定)。由於 φ 的範圍為 360°,因此在取 φ 的反正切時,與極座標(二維)座標系中的情況相同。θ 的範圍為 180°,從 0° 到 180°,在從反餘弦計算時不會出現任何問題,但在取反正切時要小心。

如果在另一種定義中,選擇 θ 從 −90° 到 +90°,與先前定義的方向相反,則可以從反正弦唯一地找到它,但要小心反餘切。在這種情況下,下面所有公式中 θ 中的所有引數都應該交換正弦和餘弦,並且作為導數也應該交換加號和減號。

所有除以零的結果都是沿一個主軸方向的特殊情況,實際上最容易透過觀察解決。

到笛卡爾座標

[編輯 | 編輯原始碼]

從球面座標

[編輯 | 編輯原始碼]

因此體積元

從圓柱座標

[編輯 | 編輯原始碼]

因此體積元

到球面座標

[編輯 | 編輯原始碼]

從笛卡爾座標

[編輯 | 編輯原始碼]

另請參閱有關atan2的文章,瞭解如何優雅地處理一些邊緣情況。

因此對於元素

從圓柱座標

[編輯 | 編輯原始碼]

轉換為柱座標

[edit | edit source]

從笛卡爾座標

[edit | edit source]

從球面座標

[edit | edit source]

從笛卡爾座標系獲取弧長、曲率和撓率

[編輯 | 編輯原始碼]

wgpu 使用 D3D 和 Metal 的座標系:[14]

  • 渲染:中心點為 0,半徑為 1,所以右上角為 (1,1),左下角為 (-1,-1)
  • 紋理:0 為左上角點,右上角為 (1,0),左下角為 (0,1)

HTML 的 CSS 盒模型

[編輯 | 編輯原始碼]
  • 使用者座標系
  • 區域性座標系
  • 變換矩陣


HTML 畫布的座標系 [15]

  • 是一個二維網格
  • x 從左到右增加:從 x=0 (最左邊) 到 x=+960 (最右邊)
  • y 從下到上遞減:從 y=+720 (底部) 到 y=0 (頂部).
  • 原點 = 0,0 座標位於左上角 (畫布的左上角)

OpenGL 中的五個不同的座標系:[16]

  • 區域性或物件
  • 世界
  • 檢視或眼睛
  • 剪下
  • 螢幕


OpenGl 

  • "OpenGL 在物件空間和世界空間中是右手座標系,但在視窗空間 (又稱螢幕空間) 中,我們突然變成了左手座標系"[17]
  • 變換管道:區域性座標 -> 世界座標 -> 檢視座標 -> 剪下座標 -> 螢幕座標[18] "每個座標系都為一個或多個 OpenGL 功能服務"[19]
  • 使用
    • 齊次座標[20]
    • 歸一化裝置座標 (NDC) 僅座標 (x,y,z) : -1 ≤ x,y,z ≤ +1。任何超出此範圍的座標都將被丟棄或剪下 = 不會在螢幕上顯示[21]
    • 矩陣微積分
  • OpenCV 影像座標系的原點位於影像的左上角

SVG 座標系

  • SVG 中的預設座標系與 HTML 中的座標系基本相同
  • 畫布是所有 SVG 元素繪製的空間或區域[22]
  • 視窗定義了一個繪製區域,該區域以大小 (寬度、高度) 和原點為特徵,以抽象使用者單位測量。術語 SVG 視窗不同於 CSS 中使用的“視窗”術語
  • 視窗[23]

p5.js 庫

[編輯 | 編輯原始碼]

二維座標系[24]

  • 畫布
  • 原點 ( 0,0) 的位置

另請參閱

[編輯 | 編輯原始碼]


參考資料

[編輯 | 編輯原始碼]
  1. 約翰·T·貝爾博士的座標系
  2. 維基百科:座標系
  3. 計算機圖形學 StackExchange 問題:世界座標、觀察座標和裝置座標之間的區別是什麼
  4. Javatpoint:計算機圖形學視窗
  5. 畫素不是一個小方塊,由 Alvy Ray Smith 撰寫
  6. 如何將世界座標轉換為螢幕座標,反之亦然
  7. 如何在 OpenGL 中將二維世界座標轉換為螢幕座標
  8. 文字和按鈕線上 - 一系列互動式內容的齊次座標互動式指南
  9. 齊次座標,由 Yasen Hu 撰寫
  10. 使用對數極座標變換和相位相關來恢復更高尺度的影像配準,JIGNESH NATVARLAL SARVAIYA、Suprava Patnaik 博士、Kajal Kothari,JPRR 第 7 卷,第 1 期(2012 年);doi:10.13176/11.355
  11. Weiman、Chaikin,《用於影像處理和顯示的對數螺旋網格》,《計算機圖形學和影像處理》第 11 卷,第 197-226 頁(1979 年)。
  12. Andersson、Fredrik,《使用對數極座標和部分反投影對 Radon 變換進行快速反演》,《SIAM 應用數學雜誌》第 65 卷,第 818-837 頁(2005 年)。
  13. ronny restrepo:點雲座標
  14. raphlinus:wgpu
  15. w3schools:畫布座標
  16. learnopengl:座標系
  17. stackoverflow 問題:OpenGL 座標系是左手系還是右手系
  18. learnopengl:座標系
  19. Paul Martz 撰寫的 OpenGL 變換管道
  20. 宋浩安的齊次座標
  21. 用於科學視覺化的 Python 和 OpenGL,版權所有 (c) 2018 - Nicolas P. Rougier
  22. ASPOSE 撰寫的 SVG 座標系和單位
  23. Sara Soueidan 撰寫的 svg-coordinate-systems
  24. 二維座標系,倫敦大學金史密斯學院
華夏公益教科書