2010-08-22 81 views
0

我想製作一個iPhone應用程序,它可以繪製兩點之間的路徑(類似於谷歌地圖),而不是地圖我想用任何其他圖像作爲背景,這兩條路徑點可能不是直的,並且可能有多條路徑從一個點到另一個點,那麼我想繪製兩點之間的最短路徑。繪製與iPhone的路線

我嘗試使用CGContext & CGPath,但我堆疊。

你能幫我一下嗎?

感謝名單,

蓋斯

+1

你必須在你的問題中更具體 - 你已經嘗試了什麼?你究竟做不到?你的路徑必須是什麼樣的,對於所需的路徑有什麼限制?等等... – Vladimir 2010-08-22 18:05:41

回答

1

我認爲你正在尋找UIBezierPath。

UIBezierPath* path = [UIBezierPath bezierPath]; 
[aPath moveToPoint:CGPointMake(50.0, 50.0)]; 
[aPath addLineToPoint:CGPointMake(10.0, 10.0)]; 
[aPath addLineToPoint:CGPointMake(10.0, 50.0)]; 
[aPath closePath]; 

您還可以,當然,加曲線(貝塞爾的!)等各種形狀:您可以像添加簡單的線條/多邊形。然後繪製它在視圖的drawRect方法中使用[aPath stroke]調用。

欲瞭解更多信息,請參閱iPad Programming Guide

+0

Thanx samkass的答案,我知道UIBezierPath和如何使用它,但我可能沒有解釋我確切需要什麼。 我的應用程序類似於地圖,但是在後臺替換地圖的圖像中,在該圖像中,我只有一些可以連接兩個點的專用區域(類似於Map中的道路),並且在連接兩點時I只希望路徑通過這些可繪製區域。 希望能夠解釋清楚我需要什麼和thanx再次幫助。 Ghaith – Ghaith 2010-08-22 21:07:02

+0

@Ghaith:你的評論沒有解釋爲什麼UIBezierPath不足以繪製這樣的路徑。 – Chuck 2010-08-23 19:14:11

1

這似乎像是一個沒有真正涉及到繪製路線的問題。

例如,您希望找到從一個點到另一個點的最短路徑,並給定某些條件 - 例如,您可以移動和不能移動的位置。我沒有把這個問題看成是可以用繪圖解決的問題,而是通過實際計算不同的可能方式然後進行比較。當你決定哪條路線最好。繪圖非常簡單。

你如何去決定我其實不確定 - 對不起'回合。但你應該看看一些最短路徑算法。但這可能意味着你必須將底層圖像表示爲一種模式或一系列節點,但圖形問題不是我的一杯茶,所以我不太清楚如何。

只是一個側面說明 - 如果從A點到B點的可能方式很多,這可能會成爲一個計算問題,您必須確保iPhone能夠管理。

(這大概應該是一個評論的地方,但因爲我還不能,我仍然想分享我的兩分錢,它成爲了一個答案。)

編輯:

我只是想的真是天真的答案! - 大部分都是爲了好玩,但我無法避免發帖。

假設您有圖像的表示形式。哪些部件無法通過,哪些部件可以通過。可以傳播的每個像素用1表示,而其他每個像素用0表示。因此,用1表示的像素可以看作我們可以在其上行走的節點。

每個節點最多可以到達8個其他節點 - 相鄰像素。並且任意兩個節點之間的傳播權重可以設置爲1.但是我們必須說明,在對角線上行進的距離更大,因此權重應該是sqrt(2)。

現在我們有一大堆節點 - 每個節點之間都有權重。從這裏我們可以申請djikstra-algorithm找到最佳路線。(也許其他一些算法在這一點上更有利 - 但是djikstras是我唯一熟悉的算法)。

哼哼,想知道這將是多麼糟糕的解決方案。 ......同樣,你可能不希望這種解決方案

編輯2:

我會說這個了,這可能不是這樣做的最佳方式!你應該認真地問一些在算法和圖形問題方面有更多經驗的人。 - 這是我在凌晨3點想到的,主要是爲了笑。

0

如果你的問題是關於計算路線而不是繪製路線,那是一個完全不同的問題。通過給定空間查找有效路線的標準算法是「A *」(發音爲A-star)算法,這通常是實時策略遊戲在您單擊某個單元並告訴它「去那裏」時使用的算法。在搜索空間轉換時,它在AI中也有很多用途。

雖然這並不容易。找到一個已經包含A *實現並將其集成到您的軟件中的好遊戲引擎可能會更容易。