gpt4 book ai didi

java - 旋转正方形导致拉伸(stretch)

转载 作者:行者123 更新时间:2023-11-29 05:32:53 25 4
gpt4 key购买 nike

我目前正在研究几何引擎(我希望以此为基础构建物理和游戏引擎)...但它有一个问题。当我旋转一个矩形时,比如说一个正方形,它首先将它变成菱形,然后它几乎看不见,然后又变回正方形。

for(int i = 0; i < fv.length; i++) {
double[] ve = fv[i];
ve[0] = ve[0] - getCMX();
ve[1] = ve[1] - getCMY();
double sin = Math.sin(getRot());
double cos = Math.cos(getRot());
ve[0] = ((cos * ve[0]) - (sin * ve[1]));
ve[1] = ((-sin * ve[0]) + (cos * ve[1]));
ve[0] = ve[0] + getCMX();
ve[1] = ve[1] + getCMY();
fv[i] = ve;
}

fv 是一个二维 double 组。getCMX/CMY 获取正方形的中心。

任何想法表示赞赏,我的目标是让正方形在旋转时保持相同的面积......?

最佳答案

你的两个罪恶因素需要有相反的符号。并且您必须使用 ve[0] 的未更改副本来更新 ve[1]:

temp  = ((cos * ve[0]) - (sin * ve[1]));
ve[1] = ((sin * ve[0]) + (cos * ve[1]));
ve[0] = temp;

关于java - 旋转正方形导致拉伸(stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20510726/

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