2014-02-14 60 views
1

Ohh .. damm Math !!再次卡住。這似乎很容易,但我認爲它不那麼容易, 問題陳述:我想旋轉位於固定圓上的3個固定點。 1.當選擇1點時,剩餘的2點應爲靜態模式,只有選定的點應在圓周上移動/旋轉。 2.如圖所示,所有3點通過3條線連接。當我們選擇一個點並旋轉它時,連接線也會增加和減少。計算觸摸點的角度並在固定圖像或畫布或位圖圖像上旋轉Android

我已經試着解決這個問題,後touch.but它不太工作按我的需要即時..

像這樣enter image description here

enter image description here enter image description here

enter image description here

+0

如何是在確定的三角形邊緣上的「白色」點? – jing3142

+0

這些點顯示交匯的線......我也想修復這些點,但在初始階段..他們現在無所謂.. –

+0

你還沒有定義所有的線是什麼,所以只要說白色點是線路的交點不起作用。 BC上的點僅顯示爲與A相交的線,但不顯示這些線上的約束條件。當A移動時,例如AB和AC上的點也將移動。希望如果我的答案在下面是可以接受的,你將能夠使用你的定義來計算其他線和點。 – jing3142

回答

1

我希望以下解釋能讓您將步驟放入您的編碼語言中。推測是要移動的頂點已經被選擇,因此下面定義的(xcnd,ycnd)的計算被用於設置三角形的選定頂點。

讓約束圓的中心位於(cx,cy)和半徑r處。

讓其中屏幕被觸摸是(xtch,ytch)

讓的,其中屏幕被相對於中心接觸是(xrel,yrel)

然後xrel = xtch座標的座標 - cx和yrel = ytch - cy

設置屏幕在(xtch,ytch)處觸摸時約束圓上點的座標爲(xcnd,ycnd)。

xcndrel = xcnd - CX和ycndrel = ycnd - CY給予約束相對於它的圓心上的座標,

注意

xrel和xcndrel都會有相同的符號(即正或同時爲負)

和yrel和ycndrel也會有相同的標記。

的函數abs(X)= X,如果x> = 0和-X如果x < 0應該是可用的任何一種語言,使用的是

函數sign(x)可以是或可以不是可用的,符號(X)= 1,如果x> 0,-1如果x < 0和未定義對於x = 0

如果不可用,則登錄(X)= X/ABS(X)

檢查xrel = 0

如果xrel = 0 xcndrel = 0,ycndrel = r * sign(yrel)

在第一象限即否則工作,其中使用ABS(xrel)和ABS(yrel)

其中屏幕相對於圓的中心使用

THETA觸摸查找角度=反正切X> 0且Y> 0 (ABS(yrel)/ ABS(xrel))

發現通過在第一象限使用theta和然後使用xrel和yrel的符號在正確的象限放置

xcndrel =座標(xcndrel,ycndrel)符號(xrel)* r * COS(theta)

ycndrel等號(=)(yrel)* R * SIN(THETA)

屏幕座標,現在可以發現

xcnd = xcndrel + CX

ycnd = ycndrel + CY