2015-08-15 59 views
0

我正在用圓形對象編程物理模擬。我通過旋轉它們然後將它們推進到它們所面對的方向來移動我的物體,這使得物理方程很容易處理。但是現在我遇到了這樣一個問題,即我通過QRectF對象定義的圓圈圍繞它們的原點(不是它們的中心)旋轉,這看起來非常愚蠢。圍繞自定義transformOriginPoint旋轉就像旋轉標準transformOriginPoint一樣行動

我使用

setTransformOriginPoint (mapToItem(this,40,40)); 
setRotation(phi); 
setTransformOriginPoint (mapToItem(this,0,0)); 

其中40/40是我的圈子中間嘗試,但它仍然轉動它圍繞原點。

我也試過

this->setTransform(QTransform() 
    .translate(this->boundingRect().center().x(),this->boundingRect().center().y()) 
    .rotate(alpha) 
    .translate(-this->boundingRect().center().x(),-this->boundingRect().center().y())); 

但是這帶來的是它並沒有改變調用對象的旋轉()時,我得到了價值的問題。我通過將我當前的旋轉保存在我的對象中來解決這個問題,但是這個字符串似乎只在我第一次在構造函數中調用它時起作用,之後它完全消失,例如旋轉0會導致目的。

回答

0

最簡單的解決方案是使用以0,0爲中心的邊界矩形的圓。那麼你不必擔心這一點。它也使得模擬更容易,因爲那時你正在操縱物體的質心。例如,如果要模擬物體以非零切向速度(垂直於接觸法線)撞擊時的旋轉(旋轉),則此類設置將使方程更易於遵循。