Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何找到覆盖旋转图像的新固定坐标?_Javascript_C#_Rotation - Fatal编程技术网

Javascript 如何找到覆盖旋转图像的新固定坐标?

Javascript 如何找到覆盖旋转图像的新固定坐标?,javascript,c#,rotation,Javascript,C#,Rotation,有一个从原始位置旋转的PDF页面的渲染图像,我需要手动显示和旋转(通过HTML)PDF位置中的所有表单字段,以与旋转后的图像对齐。下面的示例显示了所有内容的原始开始位置(绿色字段)以及旋转完成后需要显示字段的位置(红色字段)。有很多旋转示例,但它们似乎侧重于从0,0轴旋转,而不是可变中心点(在我的场景中,该点是文档的中心) 这是一个C#代码,它似乎不能正常工作,因为它绕着0,0轴旋转。它会一直将矩形重新定位到下方和右侧 public static Point RotatePoint(Poin

有一个从原始位置旋转的PDF页面的渲染图像,我需要手动显示和旋转(通过HTML)PDF位置中的所有表单字段,以与旋转后的图像对齐。下面的示例显示了所有内容的原始开始位置(绿色字段)以及旋转完成后需要显示字段的位置(红色字段)。有很多旋转示例,但它们似乎侧重于从0,0轴旋转,而不是可变中心点(在我的场景中,该点是文档的中心)

这是一个C#代码,它似乎不能正常工作,因为它绕着0,0轴旋转。它会一直将矩形重新定位到下方和右侧

public static Point RotatePoint(Point pointToRotate, Point centerPoint, double angleInDegrees)
{
    double angleInRadians = angleInDegrees * (Math.PI / 180);
    double cosTheta = Math.Cos(angleInRadians);
    double sinTheta = Math.Sin(angleInRadians);
    double x = (cosTheta * (pointToRotate.X - centerPoint.X) - sinTheta * (pointToRotate.Y - centerPoint.Y) + centerPoint.X);
    double y = (sinTheta * (pointToRotate.X - centerPoint.X) + cosTheta * (pointToRotate.Y - centerPoint.Y) + centerPoint.Y);
    return new Point(x, y);
}

我想我明白了。所有的“因为/罪恶”都太过分了


我想我明白了。所有的“因为/罪恶”都太过分了


你只把图像旋转90度吗?是的-它只会旋转90度,对。0,0通常是物体的左上角,左边的X为正,下面的y为正。是的,这都来自PDF,所以他们使用左下角为0,0。你只旋转图像90度吗?是的-它将只旋转90度,对。0,0通常是对象的左上角,左边的X为正,下面的y为正。是的,这些都来自PDF,所以他们使用左下角作为0,0。
public static CoordinatesAndDimensionsModel RotatePoint(CoordinatesAndDimensionsModel page, CoordinatesAndDimensionsModel field, int angleInDegrees)
{
    double newX, newY;

    switch (angleInDegrees) {

        case 90:
        case -270:
            newX = page.Width - field.Y - field.Height;
            newY = field.X;
            return new CoordinatesAndDimensionsModel(newX, newY, field.Height, field.Width);

        case 180:
        case -180:
            newX = page.Width - field.X - field.Width;
            newY = page.Height - field.Y - field.Height;
            return new CoordinatesAndDimensionsModel(newX, newY, field.Width, field.Height);

        case -90:
        case 270:
            newX = field.Y;
            newY = page.Height - field.X - field.Width;
            return new CoordinatesAndDimensionsModel(newX, newY, field.Height, field.Width);

        default:
            return new CoordinatesAndDimensionsModel(field.X, field.Y, field.Width, field.Height);
    }
}

public class CoordinatesAndDimensionsModel
{
    public CoordinatesAndDimensionsModel() {}

    public CoordinatesAndDimensionsModel(double x, double y, double width, double height)
    {
        this.X = x;
        this.Y = y;
        this.Width = width;
        this.Height = height;
    }

    public double X { get; set; }
    public double Y { get; set; }
    public double Width { get; set; }
    public double Height { get; set; }
}