我在 3D 球體的表面上放置了許多點。
如何計算包含任何點距離 X 處的所有點的形狀的輪廓?
這是一個更好地理解它的插圖(在 2D 中更清晰):

每個小紅點都有自己的“半徑”屬性。如果平面中的點在紅點的“半徑”范圍內,則它在影像上以灰色表示。我正在尋找的是一個線條串列,允許我盡可能精確地繪制形狀的輪廓。
我需要它非常快,因為可能有成千上萬的紅點,所以我不能做一些蠻力的事情。
如果這可能有幫助,我已經有了這些點的 kd 樹表示(k = 2,因為點存盤為 lat long 值)。

上面的影片更好地代表了我的需要。你可以看到很多藍色的“球體部分”,我知道其中的“中心”和半徑。我真正需要的是這個藍色形狀的輪廓(里面可能有洞,就像第一張插圖一樣)
uj5u.com熱心網友回復:
好吧,如果您想要正確的輸出(無失真),那么我會選擇光線投射器和著色器...但是不要同時被 C 和 GLSL 壓倒,我決定在純 SW 渲染中執行此操作(移植到 GLSL從那很容易)...
它是這樣作業的:
回圈遍歷螢屏的“所有”像素
您可以使用螢屏剪輯的球體的預期 BBOX 來提高速度......
將來自相機焦點的光線投射到實際的螢屏像素中
計算射線和球體之間的交點
你可以使用這個:
如您所見,不存在任何失真...
如果您不想像這樣進行射線投射,那么您必須將點轉換為三角形多邊形,以笛卡爾坐標覆寫它們的半徑和球體曲率,并像這樣渲染它們:
- 用邊緣顏色渲染所有圓圈
- 用內部顏色渲染所有圓,但半徑減少邊緣寬度
如果您不希望其內部足以僅具有邊緣多邊形并渲染一次...
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/463760.html標籤:javascript 算法 数学 放
上一篇:查找給定元素的可能功率計數
