任意一个矩形,记他的左上角坐标为x1,y2.围绕它的中心进行旋转.

任意一个矩形,记他的左上角坐标为x1,y2.围绕它的中心进行旋转.
任意角度都会有一个外接矩形,记外接矩形的坐标为X2,Y2.请问这两个点的函数关系是?
原矩形的宽为a,高为b
limmki 1年前 已收到1个回答 举报

hlovell 幼苗

共回答了20个问题采纳率:100% 举报

外接矩形为水平放置,中心在原点
逆时针旋转角度为a
左上角x= x1cosa-y1sina x2=x=x1sina-y1cosa
右上角Y= -x1sina+y1cosa y2=Y=-x1sina+y1cosa

1年前 追问

6

limmki 举报

谢谢,只关注左上角,如果是顺时针选择呢?会更改么? 然后这个函数关系在任意角度都适用么?

举报 hlovell

刚才有失误,一并修正: 逆时针a: x2=x=x1cosa-y1sina y2=-x1sina+y1cosa 顺时针角度a时 左上角x=x1cosa+y1sina x2=x=x1cosa+y1sina 右上角Y= x1sina+y1cosa y2=Y= x1sina+y1cosa 都成立

limmki 举报

谢谢! 麻烦请整理一下答案.有点看不懂. 逆时针旋转a: x2=x1cosa-y1sina y2=-x1sina+y1cosa 是这样么? 顺时针角度a时呢? 只需要x2,y2与原x1,y1的关系哈

举报 hlovell

对, 顺时针a时,可以取-a代入即可

limmki 举报

公式好像有问题. 原矩形的宽为a,高为b. 我需要知道的是:外接矩形的左上角坐标 相对 原矩形 初始左上角 坐标的关系,非常感谢! 比如原来的矩形初始左上角坐标为(100,100),原矩形的宽高为 200,300.

举报 hlovell

公式没有问题 原来矩形ABCD长AB=100,宽BC=80,O(0,0)矩形中心 A(-50,40)外接矩形A1B1C1D1 旋转前ABCD和A1B1C1D1重合A1(-50,40) 公式成立 反时针旋转90度 A1(-40,-50) 公式成立 反时针旋转30度 A新坐标(-50* cos30-40*sin30 ,-50 sin30+40cos30) D (50cos30-40*sin30 , 50sin30+40cos30) A1(-50cos30-40sin30, 50sin30+40cos30)

limmki 举报

嗯.可能是我的参考系讲错了. 坐标系是第三象限,但是Y轴是向下为正的, a的初始位置是(100,100). 追加了分数,请再次帮忙,谢谢

举报 hlovell

坐标系: 右手坐标系:Y轴向上正,X轴向右正 左手坐标系: Y轴向下正,X轴向左正 下面按左手坐标系讨论: 左上角A起始位置(100,100) ,长a宽b 矩形ABCD中心O‘(100-a/2,100+b/2) 左下角B位置(100,100+b) 以O‘为中心顺时针旋转x度 A到达A‘ A’((a/2)cosx+(-b/2)sinx+100-a/2 , (-a/2)sinx+(-b/2)cosx+100+b/2) B到达B‘ B’((a/2)cosx+(b/2)sinx+100-a/2 ,(-a/2)sinx+(b/2)cosx+100+b/2) 外接矩形A1B1C1D1中心仍然是O‘ A1x=B'x= ( (a/2)cosx+(b/2)sinx +100-a/2) A1y=A'y= ( (-a/2)sinx+(-b/2)cosx +100+b/2)

limmki 举报

头痛,,,我目前做的貌似不是左手坐标系,而是向右x为正,向下Y为正.

举报 hlovell

是我表述的不够精确吧,注意坐标系不同矩形中心坐标不同 按A(100,100)在左下角(3象限) Y轴向下,X轴向左讨论: 左上角A起始位置(100,100) ,长a宽b 矩形ABCD中心O‘(100-a/2,100+b/2) 左下角B位置(100,100+b) 以O‘为中心顺时针旋转x度 A到达A‘ A’((a/2)cosx+(-b/2)sinx+100-a/2 , (-a/2)sinx+(-b/2)cosx+100+b/2) B到达B‘ B’((a/2)cosx+(b/2)sinx+100-a/2 ,(-a/2)sinx+(b/2)cosx+100+b/2) 外接矩形A1B1C1D1中心仍然是O‘ A1x=B'x= ( (a/2)cosx+(b/2)sinx +100-a/2) A1y=A'y= ( (-a/2)sinx+(-b/2)cosx +100+b/2) 2 按A(100,100)在右下角(4象限) X轴向右,Y轴向左讨论: 左上角A起始位置(100,100) ,长a宽b 矩形ABCD中心O‘(100+a/2,100+b/2) 左下角B位置(100,100+b) 以O‘为中心顺时针旋转x度 A到达A‘ A’((-a/2)cosx+(-b/2)sinx+100+a/2 , (-a/2)sinx+(-b/2)cosx+100+b/2) B到达B‘ B’((-a/2)cosx+(b/2)sinx+100+a/2 ,(-a/2)sinx+(b/2)cosx+100+b/2) 外接矩形A1B1C1D1中心仍然是O‘ A1x=B'x= ( (a/2)cosx+(b/2)sinx +100+a/2) A1y=A'y= ( (-a/2)sinx+(-b/2)cosx +100+b/2)

limmki 举报

专家兄弟,我这个做UI的实在太笨,麻烦最后整理一次. 我的坐标系相当于第四象限,但是向右x是正,向下y也是正. 我需要的是,任意角度外接矩形的左上角坐标.包括顺时针是逆时针 已知原矩形左上角坐标(100,80),长,300,宽200.

举报 hlovell

Thanks 整理如下: 第2种情形 1中心点 矩形ABCD 长a=300 宽b=200 左上角A(100,80) 中心点O‘(100+300/2, 80+200/2) 即(250,180) 左下角B(100,280) 右上角D(400,80) 右下角C(400,280) 2 顺时针旋转x(弧度) A->A' ( -150cosx-100sinx+250 , -150sinx-100cosx+180) x=0 A=A' x=π/2 A'(150,30) x=π A'=C B->B' (-150cosx+100sinx+250, -150sinx+100cosx+180) x=0,B=B' x=π/2 B'(350,30) x=π B'=D 外接矩形A1B1C1D1 A1x=B'x=(-150cosx+100sinx+250) A1y=A'y=(-150sinx-100cosx+180) B1x=B'x=(-150cosx+100sinx+250) B1y=C'y=(150sinx+100cosx+180) C1x=D'x=(150cosx+100sinx+250) C1y=A'y=(-150sinx-100cosx+180) D1x=D'x=(150cosx+100sinx+250) D1y=C'y=(150sinx+100cosx+180) 3 反时针旋转y(弧度) A->A'' (-150cosy-100siny+250, 150siny-100cosy+180) y=0 A=A'' y=π/2 A''(150,330) y=π A''=C D->D''(150cosy-100siny+250, -150siny-100cosy+180) y=0,D=D'' y=π/2 D''(150,30) y=π D''=B 外接矩形A1B1C1D1 A1x=A''x (-150cosy-100siny+250) A1y=D''y(-150siny+100cosy+180) B1x=A''x(-150cosy-100siny+250) B1y=B''y(150siny+100cosy+180) C1x=C''x(150cosy-100siny+250) C1y=B''y(150siny+100cosy+180) D1x=C''x(150cosy-100siny+250) D1y=D''y(-150cosy+100cosy+180)
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.058 s. - webmaster@yulucn.com