、私の脳は、サービスの判明...(それはトルコの23:40である)について:長方形の回転とハードワーク後のフィッティング
私はローテーションジョブをしています。:
変数:
_cx = horizontal center of rect
_cy = vertical center of rect
_cos = cos value of current angle
_sin = sin value of current angle
to rotating any point in this rect :
function getx(x, y)
{
return _cx + _cos * (x - _cx) - _sin * (y - _cy);
}
function gety(x, y)
{
return _cy + _sin * (x - _cx) + _cos * (y - _cy);
}
私はどのように行うことができます。..オリジナルの境界内に装着するものの最大サイズに回転処理の前に与えられた長方形のサイズを変更やろうとしていますか?
おかげで、あなたの事前
EDIT:イゴールKrivokonのソリューションの問題はここにイゴールKrivokonによって解決され、
は、あらゆる角度値
var h1:Number, h2:Number, hh:Number, ww:Number,
degt:Number, d2r:Number, r2d:Number, deg:Number,
sint:Number, cost:Number;
//@angle = given angle in radians
//@r is source/target rectangle
//@d2r is static PI/180 constant for degree -> radian conversation
//@r2d is static 180/PI constant for radian -> degree conversation
d2r = 0.017453292519943295769236907683141;
r2d = 57.295779513082320876798154814105;
deg = Math.abs(angle * r2d) % 360;
if(deg < 91)
{
degt = angle;
}else if(deg < 181){
degt = (180 - deg) * d2r;
}else if(deg < 271){
degt = (deg - 180) * d2r;
}else{
degt = (360 - deg) * d2r;
}
sint = Math.sin(degt);
cost = Math.cos(degt);
h1 = r.height * r.height/(r.width * sint + r.height * cost);
h2 = r.height * r.width/(r.width * cost + r.height * sint);
hh = Math.min(h1, h2);
ww = hh * r.width/r.height;
r.x = (r.width - ww) * .5;
r.y = (r.height - hh) * .5;
r.height = hh;
r.width = ww;
のためにどのような作品をそのソリューションの修正版です
ありがとう
クイック明確化、あなたは矩形Rを持っていて、矩形Rを生成するために、その中心の周りにそれを回転させ、スケールしますRの中のできるだけ多くの部分を占めているのですか? –
こんにちはTolgahan、 少なくとも矩形の辺の関係を知らなくても、これに答えることはできません。 – tekBlues
はい、私は回転前にR 'を持っています –