簡體   English   中英

貝塞爾曲線樣例代碼在觸摸時移動

[英]Bezier curve sample code on touches moved

我正在尋找通過觸摸來繪制貝塞爾曲線的示例代碼,如果有人有鏈接或示例代碼,請幫助我。 我正在開發用於飛行控制的游戲,其中必須沿着用戶用手指繪制的路徑移動ccsprite

編輯:感謝您的建議,現在我正在使用CAShapeLayer和CAKeyframeAnimation制作曲線。現在我需要刪除一個用戶通過它的曲線。如果ccsprite沿該路徑移動,則刪除該曲線,就像在filght控制應用程序中那樣,謝謝非常

貝塞爾曲線使用兩個端點和兩個錨點繪制。 使用此信息繪制貝塞爾曲線非常容易。 從手繪曲線中獲取這些點稱為矢量化(圖像跟蹤)。 我的任務很復雜。

我認為您可以使用以下簡單算法獲得更好的結果:

  1. 將所有坐標存儲在FIFO列表中
  2. 將精靈移至清單的下一個點
  3. 一旦精靈足夠從句到點,則丟棄該點並繼續下一個點
  4. 使用簡單的平滑算法(xSpeed,ySpeed,damping)來簡化運動,只是問我是否需要幫助

編輯:

我剛剛查看了飛行控制視頻,我會這樣做。 一旦用戶按下它,就將其選中。 然后,用戶開始繪圖,將點盡可能靠近用戶的手指一點繪制(運動受平面轉彎半徑的限制)。 這將記錄一系列步驟。 每個步驟均由其角度定義(我認為速度是恆定的),該角度必須等於前一個+/-旋轉能力。

使用簡單的三角函數來計算x,y坐標。

看一下: 如何使鼠標指向精靈。 XNA C#

您可以在https://gamedev.stackexchange.com/上找到更好的幫助, 確保有人願意粘貼與您所需類似的代碼。 我幾年前曾在Amiga的Amos上完成此操作,但對不起,我無法獲得將其粘貼到此處的代碼:)

#include <math.h>

    CGFloat radius = 100;
    //CGFloat pi = 3.1415927; //comes for free in math.h

    UIBezierPath *basecircle = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0,0,radius*2,radius*2)];
    [[UIColor blackColor] set];
    [basecircle fill];

這是繪制bezierPath的代碼。您需要在drawRect方法中實現它。 希望能幫助到你。

暫無
暫無

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

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