簡體   English   中英

有效地查找圓和網格的交點

[英]Finding intersection points of circle and grid efficiently

找到由它的中心點和半徑以及任意網格定義的圓的交點是什么好方法?

我試圖找到的要點的說明: 在此輸入圖像描述

到目前為止我想到的可能的解決方案:

  1. 找到位於中心+ - 半徑之間的所有線。 對於每條線計算交點。

  2. 使圓形成為雙面多邊形,並使用幾何庫查找多邊形和網格線之間的交叉點。 這將允許使用除圓之外的其他形狀。

迭代線的坐標集,找到每個網格線與圓的交點似乎是合理的。 但是,為避免病態計算,有時應使用y線,有時使用x線坐標作為自變量。 具體而言,將圓分為四個圓弧,分割點為°45°,135°,225°和315°。

假設圓心位於xₒ,yₒ,半徑為r。 在δ=(r·√2)/ 2的情況下,頂部和底部弧的x坐標范圍是從xₒ-δ到xₒ+δ。 右弧和左弧的y坐標范圍是從yₒ-δ到yₒ+δ。

設y 1,y 2為對應於x的頂部和底部y坐標。 對於頂部和底部電弧,使用公式d =√(r²-(x-xₒ)²); Y 1 =yₒ+ d; Y 2 =yₒ-d。

設x 1,x 2為左右x坐標,對應於y。 對於左右弧,使用公式d =√(r²-(y-yₒ)²); X 1 =xₒ+ d; X 2 =xₒ-d。

如評論中所述,方程式來自圓方程。 在這種情況下,那是(x-xₒ)²+(y-yₒ)²=r²,我們得到(x-xₒ)²=r² - (y-yₒ)²使得x-xₒ=±√( r² - (y-yₒ)²)等,或(y-yₒ)²=r² - (x-xₒ)²使得y-yₒ=±√(r² - (x-xₒ)²)等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM