gpt4 book ai didi

algorithm - 旋转矩形,使它们保持与 Canvas 的相对位置

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:19:24 25 4
gpt4 key购买 nike

我有一个背景像素图,基本上是一个 Canvas ,我画了一堆矩形,我需要旋转像素图和矩形。但是需要旋转背景像素图和矩形分别地,背景像素图的旋转通过一个外部库例程,我需要旋转并重绘矩形手动放在最上面。

到目前为止,我实际上能够通过应用 transformation matrix I got from Wikipedia到每个顶点。我不知道如何翻译它们,使每个矩形保持其相对于 Canvas 的位置。

这里是一个快速绘图,用于说明我想要实现的目标: enter image description here

我需要用 C 和 Xlib 来做这件事,但我不一定要寻找代码,但会很感激一些一般性的提示/算法。

最佳答案

要获取子对象的平移位置,需要旋转子对象的相对位置向量,然后将其添加到原点:

Notice that the relative vector is rotated

伪代码为:

public static Vector2 OffsetByRotation(Vector2 childPos, Vector2 parentPos, float angle)
{
var relativeVector = childPos - parentPos;
relativeVector = Rotate(relativeVector, angle);
return parentPos + relativeVector;
}

请注意,您的示例图像不仅会旋转父对象,还会对其进行平移:您的左图像围绕 (0, 300) 旋转,但此点随后会平移到 (0, 0)。

enter image description here

关于algorithm - 旋转矩形,使它们保持与 Canvas 的相对位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37612347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com