1. import java.awt.Color;
  2. import java.awt.Frame;
  3. import java.awt.Graphics;
  4. import java.awt.event.WindowAdapter;
  5. import java.awt.event.WindowEvent;
  6. import java.util.*;
  7.  
  8. public class Rotates extends Frame {
  9. public void lanch() {
  10. this.setSize(640, 480);
  11. this.setVisible(true);
  12. this.addWindowListener(new MyWindowMonitor());
  13.  
  14. }
  15. class MyWindowMonitor extends WindowAdapter {
  16. public void windowClosing(WindowEvent e) {
  17. setVisible(false);
  18. System.exit(0);
  19. }
  20. }
  21.  
  22. public void paint(Graphics g) {
  23. g.translate(320, 240);
  24. int[] A={0,0,20};
  25. int[] B={0,100,50};
  26.  
  27. for(int n=0;n<720;n+=40){
  28. double[][] r={ {Math.cos(n*3.14/180),Math.sin(n*3.14/180),0},
  29. {-Math.sin(n*3.14/180),Math.cos(n*3.14/180),0},
  30. {0, 0, 1}
  31. };
  32.  
  33. int[][] a;
  34. a=new int[][]{{0,0,1},{0,100,1},{20,50,1}};
  35. if(n>=360){
  36. a=new int[][]{{0,0,1},{0,100,1},{-20,50,1}};
  37. }
  38. int[][] zz;
  39. zz=new int[3][3];
  40.  
  41. for(int i=0;i<3;i++){
  42. for(int j=0;j<3;j++){
  43. for(int k=0;k<3;k++){
  44. zz[i][j]+=a[i][k]*r[k][j];
  45. }
  46. }
  47. }
  48.  
  49. int[] aa=new int[3];
  50. int[] bb=new int[3];
  51. for(int i=0;i<3;i++){
  52.  
  53. aa[i]=(int)zz[i][0];
  54. bb[i]=(int)zz[i][1];
  55.  
  56. }
  57.  
  58. if(n>=360){
  59. try {
  60. Thread.sleep(1000);//延时函数
  61. } catch (InterruptedException e) {
  62. e.printStackTrace();
  63. }
  64. g.setColor(Color.red);
  65.  
  66. g.fillPolygon(aa, bb,3);
  67. }else{
  68. try {
  69. Thread.sleep(1000);//延时函数
  70. } catch (InterruptedException e) {
  71. e.printStackTrace();
  72. }
  73. g.setColor(Color.BLUE);
  74.  
  75. g.fillPolygon(aa, bb, 3);
  76. }
  77. }
  78.  
  79. }
  80.  
  81. public static void main(String[] args) {
  82. new Rotates().lanch();
  83.  
  84. }
  85.  
  86. }

运行效果图:

计算机图形学--旋转变换(java)的更多相关文章

  1. 分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”

    这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业 ...

  2. 计算机图形学 - 图形变换(opengl版)

    作业题目: 图形变换:实现一个图形绕任意直线旋转的程序. 要求:把一个三维图形绕任意一条直线旋转,需要有初始图形,和旋转后的图形,最好也可以实时控制旋转. 最少要做出绕z轴旋转. 原理:http:// ...

  3. Mathematics for Computer Graphics数学在计算机图形学中的应用 [转]

    最近严重感觉到数学知识的不足! http://bbs.gameres.com/showthread.asp?threadid=10509 [译]Mathematics for Computer Gra ...

  4. 计算机图形学学习方法和相关书籍,做游戏,GIS,虚拟现实,三维引擎的都能够看看.

    本书參照<<图形学扫盲>> 整理的,原文内容引子: http://www.cppblog.com/lai3d/archive/2008/12/30/70796.html 前言: ...

  5. [图形学] 计算机图形学 with OpenGL开篇

    <计算机图形学>(第四版)正在学习中,学习目的是为了在Unity中使用shader实现不同的渲染效果. 希望在这里能把学习过程中学到的知识和遇到的问题记录下来. 工作环境是:Xcode 8 ...

  6. 【3D计算机图形学】变换矩阵、欧拉角、四元数

    [3D计算机图形学]变换矩阵.欧拉角.四元数 旋转矩阵.欧拉角.四元数主要用于:向量的旋转.坐标系之间的转换.角位移计算.方位的平滑插值计算.   一.变换矩阵: 首先要区分旋转矩阵和变换矩阵: 旋转 ...

  7. 计算机图形学(第2版 于万波 于硕 编著)第45页的Bresenham算法有错误

    计算机图形学(第2版 于万波 于硕 编著)第45页的Bresenham算法有错误: 书上本来要写的是以x为阶越步长的方法,但是他写的是用一部分y为阶越步长的方法(其实也写的不对),最后以x为阶越步长的 ...

  8. 学习shader之前必须知道的东西之计算机图形学-渲染管线

    引言 shader到底是干什么用的?shader的工作原理是什么? 其实当我们对这个问题还很懵懂的时候,就已经开始急不可耐的要四处搜寻有关shader的资料,恨不得立刻上手写一个出来.但看了一些资料甚 ...

  9. html5 canvas高级贝塞尔曲线运动动画(好吧这一篇被批的体无完肤!都说看不懂了!没办法加注释了!当然数学不好的我也没办法了,当然这还涉及到一门叫做计算机图形学的学科)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. 重写QSqlTableModel的flags函数实现tableview中某些列不可编辑,某些可以编辑

    Qt中使用QsqlTableModel和QTableView来显示数据库的查询结果是非常方便的,但是为了使QTableView中某些了列不可用,就需要重写 Qt::ItemFlags flags(co ...

  2. U盘详解

    摘要:U盘,称呼最早来源于朗科公司生产的一种新型存储设备,名曰“优盘”,使用USB接口进行连接.USB接口就连到电脑的主机后,U盘的资料可与电脑交换.而之后生产的类似技术的设备由于朗科已进行专利注册, ...

  3. Office OpenXML-Excel(一)

    原文 http://www.cnblogs.com/changminglong/articles/2840004.html 适用于 2007 Microsoft Office 套件,Microsoft ...

  4. Linux下chkconfig命令详解(转)

    Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...

  5. Hadoop--Hadoop的机架感知

    Hadoop的机架感知 Hadoop有一个“机架感知”特性.管理员可以手工定义每个slave数据节点的机架号.为什么要做这么麻烦的事情?有两个原因:防止数据丢失和提高网络性能.     为了防止数据丢 ...

  6. linux之SQL语句简明教程---AND OR

    在上一页中,我们看到 WHERE 指令可以被用来由表格中有条件地选取资料. 这个条件可能是简单的 (像上一页的例子),也可能是复杂的.复杂条件是由二或多个简单条件透过 AND 或是 OR的连接而成.一 ...

  7. OC中如何把字典中的数据拼接成url字符串

    在使用objective-c语言开发iOS应用中,会向服务器通过URL请求一些数据,因此对URL的拼接肯定少不了.而在iOS中,我们一般是通过将字典中的数据拼接成我们要请求的URL字符串,那这个是怎么 ...

  8. jsp验证码页面笔记

    首先在网上搜了下jsp生成验证码的代码,如下: package com.servlet; import java.awt.Color; import java.awt.Font; import jav ...

  9. 通过Jetty搭建一个简单的Servlet运行环境

    最近在做一些简单的Servlet开发的时候,感觉每次调试的时候都要发布到tomcat上很麻烦,把程序共享给同事也很麻烦,需要帮他设置本地的tomcat环境. 在网上找了找其他的Servlet运行环境, ...

  10. 单调旋转数组的TopK问题

    问题描述:输入一个单调旋转后的数组,求该数组中的第k小的元素. 分析:很多人看到这个题目会有点懵,可能读者不知道什么是旋转数组,我先解释下两个概念, 旋转数组的定义:把一个数组的前几项元素移动到数组的 ...