2010-11-13 73 views
1

假設給出一個包含中心O的AB線的圓,使得A和B位於圓上(OA = OB = radius)。在點A上繪製切線t,並且我應該計算圓的某些點(a,b,c,d ...)到切線上的點(at,bt,ct,dt, ...),使得距離Aa(沿圓的距離)與距離Aat(沿着切線的距離)相同(並且距離Ab,Ac,Ad相同)。但是,在這裏,應該考慮一定的約束條件:那些從A到B的圓的一側的圓中的點(在(a,b,c,d)之間)應該放在切線的一側(更接近),而從圓形A到B另一側的那些應放置在另一側。基本上,圓應該在B處分割,然後映射到切線。我希望這個解釋足夠了。Circle to tangent mapping

應該指出,我有關於A,B,O,a,b,c,d座標的信息。我應該計算(at,bt,ct,dt)。 爲了解決這個問題,我有兩種方法,但我不確定我如何確保它們始終正常工作。我計算A點的切線方程,然後對每個點(a,b,c,d)計算距A的距離(沿着圓),並用這些距離來計算(at ,bt,ct,dt ...)沿着切線。我在這裏不知道的是如何計算從A到(a,b,c,d)的距離 。問題是'適當的一方'的決心,這意味着我應該如何確定點是否應該映射在切線的一側或另一側。什麼是確定這一點的方法。 2)我計算A點的切線方程,然後對每個點(a,b,c,d)計算距A的距離(沿着圓),並用這些距離來計算(at ,bt,ct,dt ...)沿着切線。爲了確定給定點的「適當的一面」,我可以使用該點對該切線的投影。但即使如此,我如何知道'哪一方是哪一方'?也許有更簡單的方法來做到這一點。

任何有關如何做到這一點的建議是值得歡迎的。如果我不夠精確,我會詳細說明。

+0

這是一個相當重量級的描述。圖表會很有幫助! – 2010-11-13 18:45:26

回答

0

要確定您正在使用的圓的哪一個「邊」,您基本上需要確定您所在的線的哪一側是AB。有關答案,請參閱Determine which side of a line a point lies

+0

Thanks.I需要知道以下內容是否正確(以及背後的原因是什麼): – user506901 2010-11-13 19:00:04

+0

謝謝。假設我確定了K點相對於AB線的「邊」(這是由一個posive符號決定的,比如說'確定一個點位於哪一邊')。另外,我找到了切線的方程。現在,我想在與AB線同一側的切線t上獲得新的點Kt,但Kt應該在切線t上。假設距離AKt應該是p。如何繼續在正確的一側放置Kt?謝謝 – user506901 2010-11-15 11:47:02

1

更好的建議是計算一個座標變換,該座標變換將圓形映射到以原點爲中心的單位圓,以便A將分別具有座標(1,0)(和B分別爲-1,0 ))。 轉換應該隨着旋轉而擴大。 現在,Aa上的距離就是以弧度測量的角度aOA。所以你可以很容易地計算出來,它是(1,atan2(y, x))其中(x,y)是a的座標。

現在,您唯一需要的是返回到原始座標系,應用逆變換。

+0

謝謝。是否有一個「自動」公式來計算給定弧終點的弧長(包含角度的一個)?該公式應該包含原始弧段(不是轉換的結果) – user506901 2010-11-14 13:53:03

+0

@user:好吧,弧長等於以弧度表示的角度乘以半徑 – Vlad 2010-11-14 13:57:19

+0

謝謝。假設我確定了K點相對於AB線的「邊」(這是由一個posive符號決定的,比如說'確定一個點位於哪一邊')。另外,我找到了切線的方程。現在,我想在與AB線同一側的切線t上獲得新的點Kt,但Kt應該在切線t上。假設距離AKt應該是p。如何繼續在正確的一側放置Kt?謝謝 – user506901 2010-11-15 11:51:21