我有一個具有一個對象: 開始位置:(X0,Y0) 和速度:(Vx的,VY)計算移動物體內盒
它被捕獲在一個盒子裏:boxWidth,boxHeight
當物件碰到箱子的邊框時,它會翻轉方向。
即: 對象有速度:(1,3) 現在它擊中框的頂部 現在它的速度將是:(1,-3) 現在可以說hitted箱 權它的速度將是:(-1,-3)
我已經爲點類做了一個sekeleton。
我需要一個功能,我就給你一個「n」的時間,並且在時間T將返回我當前的目標定位:
我的課:
class Point {
protected $x0;
protected $y0;
protected $vx;
protected $vy;
protected $currentX;
protected $currentY;
protected $blockWide;
protected $blockHeight;
public function __construct($x0, $y0, $vx, $vy, $blockHeight, $blockWide) {
$this->x0 = $x0;
$this->y0 = $y0;
$this->vx = $vx;
$this->vy = $vy;
$this->blockHeight = $blockHeight;
$this->blockWide = $blockWide;
$this->currentX = $x0;
$this->currentY = $y0;
}
public function getLoc($time) {
$this->currentX = $this->getLocX($time);
$this->currentY = $this->getLocY($time);
}
protected function getLocX($time) {
$direction = 1;
$flips = 0;
$distance = $this->vx * $time;
if ($this->blockWide - $this->x0)
return 1;
}
protected function getLocY($time) {
return 0;
}
public function printAsPoint() {
echo '(',$this->currentX,',',$this->currentY,')';
}
}
我根本不有關於如何計算每次點到達邊界時將會發生的起始位置,速度和速度翻轉的想法。
一些代碼,你的訊息:
protected function getLocX($time) {
$corPos = $this->x0 + $time * $this->vx;
$modulo = $corPos%(2*$this->blockWide);
if($modulo > $this->blockWide)
$corPos = 2*$this->blockWide - $modulo;
if($modulo < $this->blockWide)
$corPos = $modulo;
if($modulo == $this->blockWide)
$corPos = $modulo;
return $corPos;
}
爲什麼問題被標記爲java和javascript? – BackSlash
@BackSlash我自己也想知道同樣的事情。這看起來像PHP。 – Sethen
我想簡單地標記「編程」,但不能,這個問題不是針對特定語言的,而是針對所有開發人員的。 –