相关疑难解决方法(0)

计算旋转矩形中的最大矩形

我正在尝试找到计算最大(面积)矩形的最佳方法,该矩形可以包含在旋转的矩形内.

一些图片应该有助于(我希望)可视化我的意思:

具有给定宽度和高度的输入矩形 按角度旋转erctangle 输出内部矩形

给出输入矩形的宽度和高度,以及旋转它的角度.输出矩形不会旋转或倾斜.

我正沿着漫长的路线往下走,我甚至不确定它是否会处理角落的情况(没有双关语).我确信这有一个优雅的解决方案.有小费吗?

编辑:输出矩形点不一定要触摸输入矩形边.(感谢E先生)

language-agnostic algorithm math geometry

54
推荐指数
5
解决办法
1万
查看次数

WPF:旋转后获取新坐标

参考我目前正在构建的这个编程游戏.

alt text http://img12.imageshack.us/img12/2089/shapetransformationf.jpg

要在WPF中翻译Canvas,我使用两个表单:( TranslateTransform移动它)和RotateTransform(旋转它)[ 相同的子节点 TransformationGroup ]

我可以很容易地获得画布的左上角x,y坐标,当它没有旋转(或旋转90度,因为它将是相同的),但我面临的问题是左上角(和其他3点)坐标.

这是因为当RotateTransform应用a 时,TranslateTransform's XY属性不会改变(因此仍然表明正方形的左上角就像点状正方形(来自图像)

Canvas正在从它的中心旋转,因此它就是它的起源.

那么如何在旋转后获得4个点的"新"x和y坐标

[UPDATE]

alt text http://img25.imageshack.us/img25/8676/shaperotationaltransfor.jpg

我找到了找到左上角的方法通过将旋转中的OffsetX和OffsetY添加到起始X和Y坐标,在旋转后坐标的方法(从新图像中可以看到).

但我现在无法找出其余的坐标(另外3个).

通过这种旋转的形状,我如何计算其余3个角的x和y坐标?

[编辑]

第二张图片中的点不准确和精确点.我在脑海中估计了这一点.

[更新]解决方案:

首先,我要感谢Jason S.这篇冗长且非常翔实的文章,其中他描述了整个过程背后的数学; 通过阅读你的帖子和尝试价值观,我当然学到了很多东西.

但我现在已经找到了一个代码片段(感谢EugeneZ的提及TransformBounds),它完全符合我的要求:

public Rect GetBounds(FrameworkElement of, FrameworkElement from)
{
    // Might throw an exception if of and from are not in the same visual tree
    GeneralTransform transform = …
Run Code Online (Sandbox Code Playgroud)

math wpf transform

13
推荐指数
2
解决办法
2万
查看次数

标签 统计

math ×2

algorithm ×1

geometry ×1

language-agnostic ×1

transform ×1

wpf ×1