2017-12-17 19 views
-2

サイズと角度のある矩形の円周を求める方法は?角度から矩形の円周の点を取得する方法

function getRectangleCircumferencePoint(rectangle ,angle) { 
    // rectangle.width 
    // rectangle.height 
    // angle 

    return ??? 
} 
+0

[これは、第2の座標を第一の角度の特定の値によって、「影響」である長方形の側面を決定することによって進行し、次いで欠落を計算することができますヘルプ](http://www2.isu.edu/success/math/handouts/area_perimeter_circumference.pdf)を参照してください。あなた自身のコードを最初に行う必要があります –

+0

http://idownvotedbecau.se/noattempt/ –

答えて

0

基準フレームが矩形の中心にセンタリングされているとしましょう。次いで

W = 8; 
H = 4; 

function point(W, H, angle){ 

    var phi = Math.abs(Math.atan2(H, W)); 

    //transform angle into interval [0, 2*PI) 
    var alpha = angle - Math.PI*2*Math.floor(angle/(Math.PI*2)); 
    var x, y; 

    if(alpha <= phi || alpha >= 2*Math.PI-phi){ //right border 
     x = +W/2; 
    }else if(alpha >= Math.PI - phi && alpha <= Math.PI + phi){ //left border 
     x = -W/2; 
    }else if(alpha > phi && alpha < Math.PI - phi){ //top border 
     y = +H/2; 
    }else{ //bottom border 
     y = -H/2; 
    } 

    if(x === undefined){ 
     //alpha might be here pi/2 so it's probably better to expand tan(alpha) rather 
     //than divide by "+inf" 
     x = y * Math.cos(alpha)/Math.sin(alpha); 
    }else if(y === undefined){ 
     y = x * Math.tan(alpha); 
    } 

    return [x, y]; 
} 

N = 4; 
for(var i = 0; i < N; ++i){ 
    var alpha = i*2*Math.PI/N; 
    var pnt = point(W, H, alpha); 
    console.log(pnt[0].toFixed(8), pnt[1].toFixed(8)); 
} 

この印刷:たぶん

4.00000000 0.00000000 
0.00000000 2.00000000 
-4.00000000 0.00000000 
-0.00000000 -2.00000000 
関連する問題