亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從旋轉的矩形計算邊界框坐標

從旋轉的矩形計算邊界框坐標

從旋轉的矩形計算邊界框坐標我有一個矩形左上角的坐標,以及從0到180和-0到-180的寬度,高度和旋轉。我試圖獲取矩形周圍的實際框的邊界坐標。什么是計算邊界框坐標的簡單方法Min y,max y,min x,max x?A點并不總是在最小值上,它可以在任何地方。如果需要,我可以在as3中使用矩陣變換工具包。
查看完整描述

3 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

我意識到你要求ActionScript,但是,如果有人來到這里尋找iOS或OS-X答案,它是這樣的:

+ (CGRect) boundingRectAfterRotatingRect: (CGRect) rect toAngle: (float) radians{
    CGAffineTransform xfrm = CGAffineTransformMakeRotation(radians);
    CGRect result = CGRectApplyAffineTransform (rect, xfrm);

    return result;}

如果您的操作系統為您提供了所有艱苦的工作,那就試試吧!:)

迅速:

func boundingRectAfterRotatingRect(rect: CGRect, toAngle radians: CGFloat) -> CGRect {
    let xfrm = CGAffineTransformMakeRotation(radians)
    return CGRectApplyAffineTransform (rect, xfrm)}


查看完整回答
反對 回復 2019-08-27
?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

MarkusQ概述的方法非常有效,但請記住,如果已經有A點,則不需要轉換其他三個角。

另一種更有效的方法是測試旋轉角度所在的象限,然后直接計算答案。這樣做效率更高,因為你只有兩個if語句的最壞情況(檢查角度),而另一個方法的最差情況是12個(當檢查其他三個角以查看它們是否大于當前時,每個組件為6個)我認為最大或小于當前最小值。

基本算法僅使用了畢達哥拉斯定理的一系列應用,如下所示。我用theta表示了旋轉角度,并以度為單位表示檢查,因為它是偽代碼。

ct = cos( theta );st = sin( theta );hct = h * ct;wct = w * ct;hst = h * st;wst = w * st;if ( theta > 0 ){
    if ( theta < 90 )
    {
        // 0 < theta < 90
        y_min = A_y;
        y_max = A_y + hct + wst;
        x_min = A_x - hst;
        x_max = A_x + wct;
    }
    else
    {
        // 90 <= theta <= 180
        y_min = A_y + hct;
        y_max = A_y + wst;
        x_min = A_x - hst + wct;
        x_max = A_x;
    }}else{
    if ( theta > -90 )
    {
        // -90 < theta <= 0
        y_min = A_y + wst;
        y_max = A_y + hct;
        x_min = A_x;
        x_max = A_x + wct - hst;
    }
    else
    {
        // -180 <= theta <= -90
        y_min = A_y + wst + hct;
        y_max = A_y;
        x_min = A_x + wct;
        x_max = A_x - hst;
    }}

這種方法假設你擁有你所說的你所擁有的東西,即A點和theta的值,它位于[-180,180]的范圍內。我還假設theta在順時針方向上增加,因為在圖中旋轉了30度的矩形似乎表明你正在使用,我不確定右邊的部分試圖表示什么。如果這是錯誤的方法,那么只需交換對稱子句以及st術語的符號。


查看完整回答
反對 回復 2019-08-27
  • 3 回答
  • 0 關注
  • 1055 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號