2013-02-22 105 views
1

我正在使用Kinetic.js,但我認爲這不是動力學特定的。問題如下:獲取畫布內的某些位置

我在畫布上加載圖像,然後我用動力學旋轉這一形象。我如何獲得這個圖像的最左點的x和y?

enter image description here

回答

0

嘗試手動做算了一筆賬:

var theta = image.getRotation*Math.PI/180.; 

// Find the middle rotating point 
var midX = image.getX() + image.getWidth()/2; 
var midY = image.getY() + image.getHeight()/2; 

// Find all the corners relative to the center 
var cornersX = [image.getX()-midX, image.getX()-midX, image.getX()+image.getWidth()-midX, image.getX()+image.getWidth()-midX]; 
var cornersY = [image.getY()-midY, image.getY()+image.getHeight()-midY, midY-image.getY(), image.getY()+image.getHeight()-midY]; 

// Find new the minimum corner X and Y by taking the minimum of the bounding box 
var newX = 1e10; 
var newY = 1e10; 
for (var i=0; i<4; i=i+1) { 
    newX = min(newX, cornersX[i]*Math.cos(theta) - cornersY[i]*Math.sin(theta) + midX); 
    newY = min(newY, cornersX[i]*Math.sin(theta) + cornersY[i]*Math.cos(theta) + midY); 
} 

// new width and height 
newWidth = midX - newX; 
newHeight = midY - newY;