計算OBB四個頂點的座標

2021-07-09 07:33:13 字數 2005 閱讀 3885

obb 的結構如下

//obb 的中心

public var center:vbvector;

//obb 的x軸

public var x:vbvector;

//obb 的y軸

public var y:vbvector;

//半寬,相對於obb的座標系

public var halfwidth:number;

//半高,相對於obb的座標系

public var halfheight:number;

public function vbobb()

public function tostring():string

計算以下圖形的 obb

此時得出的obb結果為:

問題是:現在已知obb的中心點世界座標,軸向,半寬和半高,求此obb 四個頂點的世界座標。

此問題分為三步:

1.求出半寬和半高相對於obb的軸向在世界座標系下的向量,即圖中黃色部分

var tempw:vbvector = testobb.x.mult(testobb.halfwidth);//計算寬度的向量

var temph:vbvector = testobb.y.mult(testobb.halfheight);//計算高度的向量

2.此時根據根據半寬和半高在 e0-e1 軸向上的向量和既可以算出四個頂點 相對於世界座標(0,0)的位置

var a:vbvector = new vbvector(tempw.x + temph.x, tempw.y + temph.y);

var b:vbvector = new vbvector(-tempw.x + temph.x, -tempw.y + temph.y);

var c:vbvector = new vbvector(-tempw.x - temph.x, -tempw.y - temph.y);

var d:vbvector = new vbvector(tempw.x - temph.x, tempw.y - temph.y);

( -25.000000000000004 , -75.00000000000001 ) ( 75.00000000000001 , 25.000000000000004 ) ( 25.000000000000004 , 75.00000000000001 ) ( -75.00000000000001 , -25.000000000000004 )

3.最後加上中心點的位置,即可得到各頂點在世界座標中的位置

a.plusequals(testobb.center);

b.plusequals(testobb.center);

c.plusequals(testobb.center);

d.plusequals(testobb.center);

( -1.7763568394002505e-14 , -1.4210854715202004e-14 ) ( 100 , 100 ) ( 49.999999999999986 , 150 ) ( -50.00000000000003 , 50 )

150 輸入四個點的座標,求證四個點是不是乙個矩形

50 一道 spss 筆試題求解 題目 輸入四個點的座標,求證四個點是不是乙個矩形 關鍵點 1.相鄰兩邊斜率之積等於 1,2.矩形邊與座標系平行的情況下,斜率無窮大不能用積判斷。3.輸入四點可能不按順序,需要對四點排序。解答 是否為矩形有兩種情況,如圖 演算法步驟 1.首先,對這四個點按照x座標從小...

相機成像原理(四個座標系轉換)

影象處理 立體視覺等等方向常常涉及到四個座標系 世界座標系 相機座標系 影象座標系 畫素座標系。例如下圖 構建世界座標系只是為了更好的描述相機的位置在 在雙目視覺中一般將世界座標系原點定在左相機或者右相機或者二者x軸方向的中點。接下來的重點,就是關於這幾個座標系的轉換。也就是說,乙個現實中的物體是如...

以乙個經緯度為中心計算出四個頂點

public const double earth radius 6378137.0 地球半徑 m 以乙個經緯度為中心計算出四個頂點 半徑 公尺 public static degree getdegreecoordinates degree degree1,double distance 角度數轉...