从Angle Android获取新积分

时间:2013-05-06 09:41:09

标签: android math geometry trigonometry rectangles

我正在尝试制作一个重新调整大小的触摸视图,这是我成功完成的。您可以找到代码How to make view resizable on touch event

它有4个角。您可以通过拖动一个角来重新调整该矩形的大小。但现在我想增强那个逻辑,并希望在该代码中放置旋转。当用户触摸矩形边缘之一的中心时,我成功找到了角度。但现在问题是我无法获得角落的新位置,以便我可以重绘该矩形并且可以旋转。

问题是:如何根据角度计算4个角落的新位置?

2 个答案:

答案 0 :(得分:0)

如果您知道旋转的角度,则无需计算矩形的顶点。 一个简单的方法如下

@Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            canvas.save();
            canvas.rotate(60.0f);

            paint.setColor(Color.BLACK);
            paint.setStyle(Paint.Style.STROKE);

            canvas.drawRect(10, 10, 100, 100, paint);
            canvas.restore();
        }

答案 1 :(得分:0)

据我了解,您想根据旋转角度计算新坐标......它可能比您想象的更简单:

x' = x × (cosα - sinα)
y' = y × sinα × cosα

因此,您只需以编程方式应用此选项,考虑x'的轮换结果xy'y以及α相同的结果是旋转角度。

cosαsinα函数在Java中可用作Math.cos(α)Math.sin(α),但注意:在Java中,所有三角函数都使用弧度而非度数作为角度,因此你可以考虑这个: rad = deg * 180 / π 适用于:

double deg = 45d; //Put instead your degrees
double rad = deg / 180 * Math.PI; //The radians convertion