我目前正在研究几何引擎(我希望在其中构建一个物理和游戏引擎)......它有一个问题。当我旋转一个矩形,比如一个正方形时,它首先将它变成一个菱形,然后它几乎看不见,然后回到一个正方形。
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是一个2D双数组。 getCMX / CMY获得广场的中心。
任何想法都表示赞赏,我的目标是让广场在旋转时保持相同的区域??
答案 0 :(得分:2)
你的两个罪恶因素需要有相反的迹象。并且您必须使用未更改的ve [0]副本来更新ve [1]:
temp = ((cos * ve[0]) - (sin * ve[1]));
ve[1] = ((sin * ve[0]) + (cos * ve[1]));
ve[0] = temp;
答案 1 :(得分:1)
两个问题: