2011-05-29 23 views
0

我有兩個同心圓,它們的中心位於(centerX,centerY)。內圓的半徑爲100,外圓的半徑爲400.如果在內圓的圓周上取一個點,我可以畫一條從中心到該點的直線。我們稱之爲x1,y1)。我現在想要將該半徑延續到外部同心圓並計算該外部點的位置(x2,y2)。在動作腳本中找到一個外部同心圓上的點

我正在添加一個3px'點'來顯示x1,y1在屏幕上的位置。 (Subquestion:我看不出它......不知道爲什麼。)

這就是我想:

var x1:Number = 100; 
    var y1:Number = 50; 
    var x2:Number; 
    var y2:Number; 
    var centerX:Number = 200; 
    var centerY:Number = 200; 

    var myAngle:Number = Math.atan2(y1 - centerY, x1-centerX); 
    //x2 = x1 + 300 * Math.cos(myAngle); 
    //y2 = y1 + 300 * Math.sin(myAngle); 
    x2 = centerX + Math.cos(myAngle) * 400; 
    y2 = centerY + Math.sin(myAngle) * 400; 
    trace("x2,y2 = " + x2 + "," + y2); 

    var myCenterPoint:Sprite = new Sprite(); 
    this.graphics.lineStyle(3,0x00ff00); //green, center point 
    this.graphics.moveTo(centerX, centerY); 
    graphics.drawCircle(centerX,centerY,5); 
    addChild(myCenterPoint); 

    var myInnerCirclePointMarker:Sprite = new Sprite(); 
    this.graphics.lineStyle(3,0x0000FF); //blue, inner circle circumf. marker 
    this.graphics.moveTo(x1, y1); 
    graphics.drawCircle(x1,y1,5); 
    addChild(myInnerCirclePointMarker); 

    trace("x2,y2 = " + x2 + "," + y2); 
    var myOuterCirclePointMarker:Sprite = new Sprite(); 
    this.graphics.lineStyle(3,0xff0000); //red, outer circle circumf. marker 
    myOuterCirclePointMarker.graphics.drawCircle(x2,y2,5); 
    addChild(myOuterCirclePointMarker); 

      this.graphics.moveTo(centerX, centerY); 
      this.graphics.lineTo(x2, y2); //draw line, which should go through 
              //x1,y1 and end at x2,y2 

我不認爲這是要正確地告訴我外沿着圓的所有360度點。

謝謝。

+0

此外,就我所知,您的初始值x1,y1不在內圈上。你仍然會從atan2中得到一個角度,但是你的問題指出座標應該在內圈上。 – sirlark 2011-05-29 13:30:53

回答

0

我認爲你的trig是關閉的,你不應該將sin/cos值乘以300.你想畫一條從圓心(centerX,centerY)到x2,y2(外圓),但是您使用x1,y1作爲圓的中心。 x2,y2應該從圓的中心計算而不是從x1,y1;試試這個

var myAngle:Number = Math.atan2(y1 - centerY, x1 - centerX); 
x2 = centerX + Math.cos(myAngle) * 400; 
y2 = centerY + Math.sin(myAngle) * 400; 
var myCircle:Sprite = new Sprite(); 

this.graphics.lineStyle(3,0x00ff00); 
this.graphics.moveTo(centerX, centerY); 
this.graphics.lineTo(x2, y2); 

myCircle.graphics.drawCircle(x1,y1,5); 
addChild(myCircle); 

您的X1,Y1圈沒有出現的原因是因爲它不是內圓,其中有一個邊界框(100,100),(300,300),即(100,50)ISN在邊界框中。

+0

嗨,謝謝。我編輯了代碼來包含你的兩條線來代替我的x2和y2。我還澄清說,我正在繪製的'圓'實際上只是爲了標記中心點的位置,而不是繪製點所在的實際圓(內部或外部)。我還爲內圓點(x1,y1)和外圓點(x2,y2)添加了標記。我不確定你的意思是(100,100),(300,300)的邊界框,以及你如何提出這些數字。 – user762800 2011-05-29 22:32:17

+0

我需要做什麼才能看到所有三個:中心點和其他兩點?謝謝! – user762800 2011-05-29 22:44:41

相關問題