2012-05-21 46 views
3

我有一個矩形,需要'彎曲'成一個圓環,即矩形的頂部邊緣必須映射到圓環的外圓,底部到內圓以及矩形的邊應該連接。將一個矩形變成一個圓環

這裏的矩形環的一個極其粗糙的草圖: enter image description here

如果它是有幫助的或必要的,我可以處理矩形作爲水平線的集合,並且環爲界的集合。

該矩形具有從a到b的水平漸變,該漸變應映射以便漸變在圓形方向上前進。

我可以看到,這是一個非線性變換,但是我失去了在哪裏可以學習解決這個問題的技巧。任何有合適CG經驗的人都可以指出正確的文字,正確的算法名稱或正確的圖形庫來製作我的戒指嗎?

+0

你說這是一個非線性變換。你需要認識到的是,你可以以任何你想要的方式查看一個號碼。它可能是矩形內某個點的座標。或者很容易,它可以以極座標形式的點座標來查看。數字就是這個數字。只有你的頭腦爲一組數字增加了意義。 – 2012-05-21 17:26:44

回答

5

只需使用polar coordinates即可。如果您將x映射爲r和y作爲θ(標準化爲θ從0運行到2 π),那麼向r添加一些偏移將改變環的半徑,並將偏移添加到θ將圍繞圓旋轉。

r = fx + a 
g = (max_y - min_y)/(2*pi) 
theta = gy + b 

其中a和b是這些偏移中,f縮放環的寬度和g歸一矩形的長度爲2 π。從這些極座標變換回到笛卡爾(也就是屏幕)就是:

x' = r cos(theta) 
y' = r sin(theta) 

然後你有3個座標系:(X,Y)爲原始矩形,(R,θ)的極座標環和(x',y')作爲屏幕座標。

相關問題