zoukankan      html  css  js  c++  java
  • 计算机图形学--旋转变换(java)

    import java.awt.Color;
    import java.awt.Frame;
    import java.awt.Graphics;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.util.*;
    
    public class Rotates extends Frame {
        public void lanch() {
            this.setSize(640, 480);
            this.setVisible(true);
             this.addWindowListener(new MyWindowMonitor());
            
    
        }
        class MyWindowMonitor extends WindowAdapter {
              public void windowClosing(WindowEvent e) {
               setVisible(false);
               System.exit(0);
              }
             }
    
    
        public void paint(Graphics g) {
                    g.translate(320, 240);
                   int[] A={0,0,20};
                  int[] B={0,100,50};
                 
               for(int n=0;n<720;n+=40){
                 double[][]  r={    {Math.cos(n*3.14/180),Math.sin(n*3.14/180),0},
                                    {-Math.sin(n*3.14/180),Math.cos(n*3.14/180),0},
                                    {0,                    0,                     1}
                                };
                 
                 int[][]  a;
                 a=new int[][]{{0,0,1},{0,100,1},{20,50,1}};
                 if(n>=360){
                      a=new int[][]{{0,0,1},{0,100,1},{-20,50,1}};
                 }
                 int[][] zz;
                 zz=new int[3][3];
                 
                 for(int i=0;i<3;i++){
                       for(int j=0;j<3;j++){
                           for(int k=0;k<3;k++){
                                zz[i][j]+=a[i][k]*r[k][j];
                           }
                       }
                   }
               
                 int[] aa=new int[3];
                 int[] bb=new int[3];
                for(int i=0;i<3;i++){
                    
                        aa[i]=(int)zz[i][0];
                    bb[i]=(int)zz[i][1];
                
                }
                 
                 
                 
                if(n>=360){
                    try {
                        Thread.sleep(1000);//延时函数
                } catch (InterruptedException e) {
                        e.printStackTrace();
                }
                   g.setColor(Color.red);
                    
                    g.fillPolygon(aa, bb,3);
                }else{
                    try {
                        Thread.sleep(1000);//延时函数
                } catch (InterruptedException e) {
                        e.printStackTrace();
                }
                    g.setColor(Color.BLUE);
                    
                    g.fillPolygon(aa, bb, 3);
                    }
               }
    
        }
    
        public static void main(String[] args) {
            new Rotates().lanch();
    
        }
    
    }

     运行效果图:

         

  • 相关阅读:
    docker基础总结
    python基础学习总结
    静默(命令行)安装oracle 11g
    java中如果函数return可能抛出异常怎么办
    Android 开发先驱的博客列表
    栈与队列
    线性表
    算法
    数据结构概论
    iOS开发中实现手势解锁
  • 原文地址:https://www.cnblogs.com/yaopan007/p/3450381.html
Copyright © 2011-2022 走看看