我正在使用AS3。但是,這與我使用的語言無關。我只是找到如何解決這個問題的邏輯。如何知道給定起點和終點的直線上的點:任何公式?
我已經完成了創建一條線,繪製圖形類給出了一條線的起點和終點。現在我再畫一個圓圈。我希望那個圈子能夠穿過這條線。
我可以通過了解座標平面中線的起點和終點之間的點是什麼。
例如.. (0,0)和(20,20)
我可以遍歷通過此對象的值賦給行...
object.x = 5;
object.y = 5;
object.x = 10;
object.y = 10;
and so on and so forth..
我想我的物體圓從起點到終點來回移動,然後在遍歷線時再次返回到起點。
任何配方,你可以幫助我呢?我曾嘗試扣除並添加斜坡來遍歷線,但只有當斜率爲正值時才起作用。
注意:在閃光燈中,座標系與通常的笛卡爾平面不同。第四象限都是正面的。
這是我目前的邏輯:
var speed:int = 10;
function makeItMove(packetNumber:int):void{
var xcenter:int = xCenterPt[packetNumber];
var ycenter:int = yCenterPt[packetNumber];
var xfirst:int = xFirstPt[packetNumber];
var yfirst:int = yFirstPt[packetNumber];
var xsecond:int = xSecondPt[packetNumber];
var ysecond:int = ySecondPt[packetNumber];
var switchPath:Boolean = switchPathArr[packetNumber];
var slope:int = 0;
if((xsecond-xfirst) != 0){
slope = ((ysecond - yfirst)/(xsecond - xfirst)) * speed;
}
if(slope<0){
//slope = ((ysecond - yfirst)/(xsecond - xfirst)) * speed;
slope = slope * -1;
}
//else if(slope)
//trace("PacketNumber: "+packetNumber+", xcenter: "+xcenter+", ycenter: "+ycenter+", xfirst: "+xfirst+", yfirst: "+yfirst+", xsecond: "+xsecond+", ysecond: "+ysecond)
if(xcenter <= xfirst && ycenter <= yfirst){
switchPath = true;
switchPathArr[packetNumber] = switchPath;
}
if(xcenter >= xsecond && ycenter >= ysecond){
switchPath = false;
switchPathArr[packetNumber] = switchPath;
}
if(switchPath){
xcenter = xcenter+slope;
ycenter = ycenter+slope;
xCenterPt[packetNumber] = xcenter;
yCenterPt[packetNumber] = ycenter;
//trace("UP: xcenter = " + xcenter + ", ycenter = " + ycenter);
this[mc_Packets[packetNumber]].x = xcenter;
this[mc_Packets[packetNumber]].y = ycenter;
}
else{
xcenter = xcenter-slope;
ycenter = ycenter-slope;
xCenterPt[packetNumber] = xcenter;
yCenterPt[packetNumber] = ycenter;
//trace("DOWN: xcenter = " + xcenter + ", ycenter = " + ycenter);
this[mc_Packets[packetNumber]].x = xcenter;
this[mc_Packets[packetNumber]].y = ycenter;
}
}
我同意:)請先閱讀本@flashMark改變你設置幅度屬性的長度。所以一旦你有差異向量(通過從結尾減去開始),你可以通過從幅度屬性獲取值來找到當前的距離。然後在for循環中將i設置爲0,並按大於0且小於距離的值遞增。對於每個循環設置值與i值,並檢索x和y點, – Allan
謝謝無論如何先生larusso。如果可能的話,我會嘗試一段時間。對於艾倫爵士,你給了我一個關於點距離的想法。 我會在這裏反饋,如果我做到了。非常感謝你們。 – flashMark