利用数组实现平面点的几何变换

学习作业记录

本题目要实现平面点的二维几何变换,读入点的坐标,变换的类型和参数,然后输出变换后的几何坐标。

输入格式:

点的平面坐标成对出现, 两个数值之间以逗号隔开,数据类型为整型。变换类型以整型数字表示,1,2,3分别对应平移、缩放和旋转。平移参数为坐标对形式,中间以逗号隔开,数据类型为double类型。缩放两个参数以逗号隔开,类型double。旋转以角度表示旋转角度,正值为逆时针,负值代表顺时针,整型。

输出格式:

输出为旋转后的点的坐标,坐标对之间以逗号隔开,整型。

输入样例:

下面是一次平移变换的输入。例如:
5,7
1
1.2,2

输出样例:

在这里给出相应的输出。例如:
6,9

输入样例2:

下面是一次旋转变换的输入。例如:
1,0
3
90

输出样例2:

在这里给出相应的输出。例如:
0,1

import java.util.Scanner;
import static java.lang.Math.cos;
import static java.lang.Math.sin;

public class Main {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        String str = sc.next();
        int ch=sc.nextInt();
        String [] s = str.split(",");
        int x=Integer.parseInt(s[0]);
        int y =Integer.parseInt(s[1]);

        if(ch==1){

            String str1 =sc.next();
            String [] s1 =  str1.split(",");
            double x1=Double.parseDouble(s1[0]);
            double y1=Double.parseDouble(s1[1]);
            int a =(int)(x1+x);
            int b =(int)(y1+y);
            System.out.println(a+","+b);

        }else if(ch==2){
            String str2 =sc.next();
            String [] s2 =  str2.split(",");
            double x2=Double.parseDouble(s2[0]);
            double y2=Double.parseDouble(s2[1]);
            int c =(int)(x2*x);
            int d =(int)(y2*y);
            System.out.println(c+","+d);
        }else if(ch==3){
            int w=sc.nextInt();
            int e =(int)(x*cos(Math.toRadians(w))-y*sin(Math .toRadians(w)));
            int f =(int)(y*cos(Math.toRadians(w))+x*sin(Math .toRadians(w)));
            System.out.println(e+","+f);

        }else
            return;
    }
}

J77
发布了7 篇原创文章 · 获赞 2 · 访问量 100

猜你喜欢

转载自blog.csdn.net/weixin_46053704/article/details/105393166