Re: [幾何] blending surfaces的問題

看板Math作者 (朱子)時間1年前 (2024/10/30 18:00), 1年前編輯推噓1(1077)
留言78則, 3人參與, 1年前最新討論串2/2 (看更多)
※ 引述《phoenixlife (All in AAPL)》之銘言: : 最近看到電腦圖學的數學 : 是有關把兩個曲面可以融在一起 : 方法叫smooth minimum : 看到一位作者Inigo Quilez 是採用quadratic polynomial : 開了desmos測試一下 : https://www.desmos.com/3d/s1nmvi8frp?lang=zh-TW : 但數學式子有個地方看不懂 : https://i.imgur.com/yx3GGPZ.jpeg
: 就是為什麼要除以4,而且我只要改成其他數字,邊界就會出問題 設S1: f1(x,y,z)=0 , S2: f2(x,y,z)=0 f3(x,y,z) = min(f1,f2) - max(0, k-|f1-f2|)^2/ak, k>0 我們觀察一下f3在不同範圍的樣子 1. 在 |f1-f2|>k 的區域 f3 = min(f1,f2) , 所以S3: f3(x,y,z)=0 在S1, S2 分得夠遠的地方就是兩個曲面的聯 集, 符合我們想要的性質 2. 在 |f1-f2|<k 的區域 f3 = min(f1,f2) - (k-|f1-f2|)^2/ak 若 f1>f2 f3 = f2 - (k-f1+f2)^2/ak ▽f3 = ▽f2 + 2(k-f1+f2)/(ak) ▽f1 - 2(k-f1+f2)/(ak) ▽f2 在f1-f2 ->0 時 ▽f3 -> 2/a ▽f1 + (1 - 2/a) ▽f2 反之 當f2>f1 在f1-f2 ->0 時 ▽f3 -> (1 - 2/a) ▽f1 + 2/a ▽f2 因為 ▽f3 是曲面的法向量 如果我們希望曲面是平滑的 那 ▽f3 在跨過 f1-f2 = 0 的曲面兩邊要連續因此邊界條件為: (1-2/a) = 2/a => a = 4 cubic的情形類似計算可得 a=6 : cubic polynomial 則是要除以6,不然邊界會出問題 : https://i.imgur.com/5BszvZO.jpeg
: 大概只知道他是要把兩個曲面sdf的差要做標準化,然後再丟進多項式 : 希望版上大大可以解惑 : 另外如果有不錯的電腦圖學、幾何代數相關的書可以推薦給我,原文也可以 : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.165.22.208 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Math/M.1730282448.A.FB4.html ※ 編輯: mantour (118.165.22.208 臺灣), 10/30/2024 19:02:40

10/30 20:29, 1年前 , 1F
請問m大(1-2/a) = 2/a要怎麼推得?
10/30 20:29, 1F

10/30 20:33, 1年前 , 2F
懂了
10/30 20:33, 2F

10/30 21:53, 1年前 , 3F
看懂了 感謝!
10/30 21:53, 3F

10/31 00:48, 1年前 , 4F
雖然是看懂裡面的過程,可是還是不知道f3的意思
10/31 00:48, 4F

10/31 10:11, 1年前 , 5F
我的f3就是原本連結裡面的m
10/31 10:11, 5F

10/31 10:12, 1年前 , 6F
f3=m(f1,f2,k)=0 就是f1,f2融合的曲面
10/31 10:12, 6F

10/31 10:13, 1年前 , 7F
這裡的f3就是 m(f1,f2,k)
10/31 10:13, 7F

10/31 10:15, 1年前 , 8F
如果要融合三個曲面可以先融合前兩個, 得到的結果再
10/31 10:15, 8F

10/31 10:15, 1年前 , 9F
跟第三個融合
10/31 10:15, 9F

10/31 23:07, 1年前 , 10F
謝謝m大的解釋
10/31 23:07, 10F

10/31 23:07, 1年前 , 11F
m大可以解釋一下f3的實際意義嗎?
10/31 23:07, 11F

11/01 18:37, 1年前 , 12F
musicbox那請問你min(f1,f2)的部分也有問題嗎, 還是
11/01 18:37, 12F

11/01 18:37, 1年前 , 13F
只有後面有k的那部分有問題?
11/01 18:37, 13F

11/01 23:10, 1年前 , 14F
都有問題,如果是min(a(x,y),b(x,y))可理解是兩曲面
11/01 23:10, 14F

11/01 23:11, 1年前 , 15F
間垂直高度差,可是當a(x,y,z),b(x,y,z)就不知道怎
11/01 23:11, 15F

11/01 23:11, 1年前 , 16F
麼解釋
11/01 23:11, 16F

11/02 01:27, 1年前 , 17F
就是兩個三維空間中的純量場的差啊
11/02 01:27, 17F

11/02 01:35, 1年前 , 18F
例如f1,f2分別代表是兩個不同重力場的位能好了,那
11/02 01:35, 18F

11/02 01:35, 1年前 , 19F
min(f1,f2)這個場的等位面,就是f1等位面的一部分
11/02 01:35, 19F

11/02 01:35, 1年前 , 20F
跟f2等位面的一部分接起來,只是接的部分不平滑
11/02 01:35, 20F

11/02 01:37, 1年前 , 21F
f1-f2=0是空間中的一個曲面,這個曲面會包含f1=0和
11/02 01:37, 21F

11/02 01:37, 1年前 , 22F
f2=0這兩個曲面的交點
11/02 01:37, 22F

11/02 01:41, 1年前 , 23F
|f1-f2|<k就是這個曲面往兩邊增加厚度k的一個厚度2
11/02 01:41, 23F

11/02 01:41, 1年前 , 24F
k的殼
11/02 01:41, 24F

11/02 01:42, 1年前 , 25F
f3在殼的一邊等於f1,另一邊等於f2,然後殼中間的
11/02 01:42, 25F

11/02 01:42, 1年前 , 26F
部分用一個平滑的函數把它連起來
11/02 01:42, 26F

11/02 01:55, 1年前 , 27F
對不起更正厚度的部分,厚度不是2k
11/02 01:55, 27F

11/02 01:58, 1年前 , 28F
大約是k除以f1-f2在垂直f1-f2=0的方向上的梯度,不
11/02 01:58, 28F

11/02 01:58, 1年前 , 29F
過這個厚度實際是多少也無關緊要,就是某個厚度
11/02 01:58, 29F

11/02 08:15, 1年前 , 30F
那請問m大為什麼要用min(a,b)去減後面那一項?而且怎
11/02 08:15, 30F

11/02 08:15, 1年前 , 31F
怎麼確定min(a,b)的地方就一定是a和b最接近的地方?
11/02 08:15, 31F

11/02 08:17, 1年前 , 32F
我的意思是a和b最小的地方跟實際上圖形最接近的地方
11/02 08:17, 32F

11/02 08:18, 1年前 , 33F
一定有相關聯嗎?是否a、b必須有額外的性質?
11/02 08:18, 33F

11/02 09:11, 1年前 , 34F
重力位能有相同基準,但是兩顆球的方程式有各自起點
11/02 09:11, 34F

11/02 09:13, 1年前 , 35F
就算a=b,也不代表a面和b面相接觸吧?
11/02 09:13, 35F

11/02 09:23, 1年前 , 36F
我應該是也不懂為什麼會需要有min(a,b)來做黏合
11/02 09:23, 36F

11/02 09:25, 1年前 , 37F
重力位能有相同基準面,所以a-b可以有距離的解讀
11/02 09:25, 37F

11/02 09:25, 1年前 , 38F
任意a, b,兩函數相減的意義,我就看不太出來
11/02 09:25, 38F

11/02 09:29, 1年前 , 39F
還有m(a,b)設為=0的意義我也不了解。抱歉這麼多問題
11/02 09:29, 39F

11/02 09:30, 1年前 , 40F
麻煩m大了
11/02 09:30, 40F

11/02 11:05, 1年前 , 41F
沒錯啊,這裡預設原本兩個曲面的方程式分別是f1=0
11/02 11:05, 41F

11/02 11:05, 1年前 , 42F
跟f2=0,如果不是m就要改一下
11/02 11:05, 42F

11/02 11:06, 1年前 , 43F
兩個曲面相交的曲線的方程式是f1=f2=0,一定會包含
11/02 11:06, 43F

11/02 11:06, 1年前 , 44F
於f1=f2這個曲面上
11/02 11:06, 44F

11/02 11:09, 1年前 , 45F
f1(x,y,z),f2(x,y,z)只是一個三維的純量場,f1(x,
11/02 11:09, 45F

11/02 11:09, 1年前 , 46F
y,z)=0和f2(x,y,z)=0才是要融合的曲面
11/02 11:09, 46F

11/02 11:15, 1年前 , 47F
融合後的曲面是 m(f1,f2,k)=0
11/02 11:15, 47F

11/02 11:18, 1年前 , 48F
所以你說二維f1(x,y),f2(x,y)講得也怪怪,此時要
11/02 11:18, 48F

11/02 11:18, 1年前 , 49F
融合的是f1(x,y)=0跟f2(x,y)=0這兩條曲線,而不是z
11/02 11:18, 49F

11/02 11:18, 1年前 , 50F
=f1(x,y) 跟z=f2(x,y)這兩個曲面
11/02 11:18, 50F

11/02 16:49, 1年前 , 51F
如果a,b標量場沒有長度或距離的意義,|a-b|有什麼樣
11/02 16:49, 51F

11/02 16:49, 1年前 , 52F
的意義?搞不好a=0,b=0差得很遠,但是|a-b|可以很大
11/02 16:49, 52F

11/02 16:49, 1年前 , 53F
或很小
11/02 16:49, 53F

11/02 16:54, 1年前 , 54F
以原PO的desmos內容f1=0和f2=0都沒有相交,就算f1=0
11/02 16:54, 54F

11/02 16:54, 1年前 , 55F
和f2=0在某曲線上相交,這與|a-b|多大多小好像也沒
11/02 16:54, 55F

11/02 16:55, 1年前 , 56F
有一定要是大還是小,a,b的大小取決於a,b自己的函數
11/02 16:55, 56F

11/02 17:00, 1年前 , 57F
不知道我哪個地方想法有誤?
11/02 17:00, 57F

11/03 17:21, 1年前 , 58F
如果f1=0跟f2=0本來沒相交, 那k夠小的時候
11/03 17:21, 58F

11/03 17:23, 1年前 , 59F
f3就等於min(f1,f2)
11/03 17:23, 59F

11/03 17:25, 1年前 , 60F
min(f1,f2)=0 要等於f1=0和f2=0的聯集應該有一定的
11/03 17:25, 60F

11/03 17:25, 1年前 , 61F
條件不是任意的f1,f2都成立
11/03 17:25, 61F

11/03 17:30, 1年前 , 62F
假如F1=-f1, F2=-f2, 那F3就要取max(F1,F2)+
11/03 17:30, 62F

11/03 17:30, 1年前 , 63F
min(0,|a-b|-k)^2/4k 才會有一樣的效果
11/03 17:30, 63F

11/03 17:31, 1年前 , 64F

11/03 17:32, 1年前 , 65F
所以我想這邊應該沒辦法很一般性的去解釋它
11/03 17:32, 65F

11/03 17:32, 1年前 , 66F
至少我沒有想到很好的規則
11/03 17:32, 66F

11/03 17:46, 1年前 , 67F
不過你說的|a-b|我是這樣想的
11/03 17:46, 67F

11/03 17:47, 1年前 , 68F
把 k 想成一個 tolerance value
11/03 17:47, 68F

11/03 17:51, 1年前 , 69F
a-b = L 是一個曲面族
11/03 17:51, 69F

11/03 17:52, 1年前 , 70F
ΔL 可以視為是曲面族中的兩個曲面之間的一種"距離"
11/03 17:52, 70F

11/03 17:55, 1年前 , 71F
在局部上有ΔS = |ΔL|/|▽(a-b)| 的關係
11/03 17:55, 71F

11/03 18:48, 1年前 , 72F
我可能再想清楚一點直接回一篇
11/03 18:48, 72F

11/03 21:53, 1年前 , 73F

11/03 21:54, 1年前 , 74F

11/03 21:54, 1年前 , 75F
用2D去看或許比較直觀
11/03 21:54, 75F

11/03 22:00, 1年前 , 76F
球面只要過綠線就會開始變形做平滑
11/03 22:00, 76F

11/03 22:25, 1年前 , 77F
當 (f1-f2)/k=1 時,會是右綠線
11/03 22:25, 77F

11/03 22:25, 1年前 , 78F
當 (f1-f2)/k=-1 時,會是左綠線
11/03 22:25, 78F
文章代碼(AID): #1d8WFG-q (Math)
文章代碼(AID): #1d8WFG-q (Math)