2010-08-15 51 views
1

想象一下,在滿足以下條件的同時,表面上有2個點在表面上移動(導致各種線條和曲線)。如何繪製兩個等距離的移動點?

  1. 這兩點總是和總是在一個恆定的C距離彼此。
  2. 每個點都有它自己的速度和方向矢量。當然這兩個參數將根據條件1進行限制。如果點1的速度爲0,點2正在移動,則會形成一個類似於圓形的圓,點1爲中心。

我無法在編程結構中表達這些條件。有人可以幫助我嗎?

我使用的是OpenGL,但即使是一個僞代碼也適合我。

+0

您需要更多地指定您的條件。從這個例子中,我明白這些進一步的兩條規則應該適用:1)不拖拉2)速度優先於方向(即使它意味着改變方向,該點將盡力保持其速度)。對? – 2010-08-15 09:20:19

+0

你確定例2嗎?在物理模擬中,這將導致第一個點開始翻滾,而第二個點開始翻轉 - 如果它們的相對質量大致相等,則它們將在給定方向上移動時開始相互循環。如果最初移動的點的質量更高,則第一個將開始第二個移動。 – relet 2010-08-15 09:24:55

+0

想象一下,一個機器人有三個輪胎,兩個後輪和後面的一個腳輪。讓我們說,這兩個電動輪胎的速度可以獨立控制。我想寫一個程序來追蹤它們在平面上的運動。 – 2010-08-16 11:57:57

回答

1
vec3 center; 



while(1): 
    vec3 centerDirection = ... 
    center += centerDirection 
    float angle = ... 
    vec3 dir(cos(angle), 0, sin(angle)) 
    vec3 p1 = center + (C/2) * dir 
    vec3 p2 = center - (C/2) * dir 
    draw p1 
    draw p2 

這是一個解決方案,您將一個圓的中心,並確保P1和P2是兩種截然相反的點 另一種解決方案:

while 1: 
    p1 += random 
    p2 += random 
    delta = p1-p2 
    delta.normalize() 
    p2 = p1 + C * delta 

即你剋制P2,沒有這兩點。

0

在OpenGL實現我是如下

PlotTwoPoints(-span,0,+ SPAN,0); //在x軸上的兩個點

然後我旋轉座標系並繼續在上述兩個位置繪製兩個點。

簡單!