设为首页 加入收藏

TOP

动态写轮眼,绝对值得你拥有的Java原创作品(一)
2014-11-24 01:43:07 】 浏览:9761
Tags:动态 绝对 值得 有的 Java 原创作品

/**
* 设计声明:
* 1、虽然岸本是日本人,而我个人作为其模仿者,依然想表示个人对其的敬意,希望作品不会玷污写轮眼的名声。
* 2、由于本次设计包含过多数学计算,所以强烈建议您通过《注意事项》中的5查看图是如何设计的,先不要看源码,
* 然后自己试图去设计,而您仅需要知道:计算机计算开方、三角函数、反三角等会造成误差,仅此而已。
* 3、由于我本人在《动态中国太极图——Java原创》中改了一个注释错误,导致《动态中国太极图——Java原创》
* 不能再次通过系统的审批,不知何故,所以导致大家可能看不到《动态中国太极图——Java原创》里面详细
* 的注释,深表遗憾。同时也对我自己没能认真做好本质工作表示深深的反思。
* 4、如果您对这个很好奇,那么请现查阅本人发表的《动态中国太极图——Java原创》(不知道还能不能通过审批)、
* 《动态眨眼效果——Java原创》,因为那两个是这个设计的引导+铺垫。
*
*
* 注意事项:
* 1、本程序为java程序,同时感谢您花费宝贵的时间来阅读本文档;
* 2、请注意包名为:practice,文件名为:SharinganJFrame(Sharingan是写轮眼的英文),注意检查,
* 以防一些不必要的麻烦;
* 3、在完成确认2中的内容后,本程序可以直接运行,因为本软件说明都在注释中;
* 4、由于本设计是继《动态中国太极图——Java原创》、《动态眨眼效果——Java原创》后编写,所以在那里
* 面已说明的东西,不再详述,同时由于个人能力、阅历等原因,有些细节可能并没有详细阐述,或者
* 有疏漏,请谅解。
* 5、您可以注释paint()方法中的一些代码,因为效果很直观,也许这样您理解得更快,建议如下:
* 5.1 先看paint()方法第1条语句效果,把paint()方法中的其它语句注释掉;
* 5.2 再看paint()方法第1、2条语句效果,把paint()方法中的其它语句注释掉;
* 5.3 再看paint()方法第1、2、3条语句效果,把paint()方法中的其它语句注释掉;
* 5.4 以上面的方法类推,直到paint()方法中没有语句被注释,相信等您看完,您就理解了。
*
* 设计目标:在一个JFrame中绘制一个动态的写轮眼(动漫《火影》中的特殊眼睛)。
*
* 设计说明:
* 相信很多人不喜欢看那些很长文字的说明,所以本人只简单介绍一下个人想法及遇到的一些问题:
* 1、设计的源头来自我和同桌(程梦真)无意中提到写轮眼,所以打算把它用Java绘出来,而且要是动态的;
* 2、目前的版本的写轮眼和最初设计的写轮眼有很大差别,很多单词的定义已经没有了当初的味道。
* 3、绘制这个动态的写轮眼的时候遇到最严重的的问题是计算误差,就是苍老师说的精确但不准确,所以
* angleErr是用来做误差补偿的,当然这个还是不是很准确,没有更深入的去探究,由于本来就是娱
* 乐,所以没打算去深究,如果你感兴趣,想去琢磨,请注意一下angleErr所出现的地方,本人因为
* 这个误差,重画了进3遍才找出根本原因。
*
* 2014-1-14 星期二
*
*/
package practice;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
public class SharinganJFrame extends JFrame {
//设置中心坐标,个人喜欢一种心点作为物体的坐标,物理里面成为质点
int centerX = 1024/2;
int centerY = 768/2;
//外圆半径,写轮眼转动所依赖的红线
double extendCircleSemi = 25;
//写轮眼的旋转部分有一个固定的大小的圆,刚开始设计的时候是定义为白色的,后来改为了红色,好看 ^_^
double whiteOfSharingan = extendCircleSemi/3;
//在上面的红色的圆旁边有一个随着旋转角度变大而变大的圆,其半径为miniCircleSemi
double miniCircleSemi = 0;
//这里用到了绘制太极时的思路,这个圆和上面的两个圆(whiteOfSharingan和miniCircleSemi)外切
double sharinganSemi = 0;
//旋转度角范围的变量,您可以通过观察旋转的循环角度是120*2
int angleCircle = 0;
//小圆(miniCircleSemi)和白圆(whiteOfSharingan)在外圆(extendCircleSemi)上的角度
double angleOfWhiteMini = 0;
//写轮眼沟玉圆(sharinganSemi)和白圆(whiteOfSharingan)在外圆(extendCircleSemi)的角度
double angleOfwhiteShar = 0;
//用于判断圆是否到达极限位置,还句话说就是是否到达了正确的角度,进行下一次循环
boolean flag = true;
//沟玉球心到弦(whiteOfSharingan圆中心和miniCircleSemi圆中心所连成的线)中心距离;
double distansOfWhiteShar =0;
//沟玉球心到中心点的距离,这一步主要是为了计算坐标
double distansOfSharSemi = 0;
//在绘图过程中,由于计算机计算开方、三角函数、反三角等造成了误差,这是一个补偿值,但要注意真正补偿的
//误差为这个误差的angleErr*2/3,因为这个值是本人通过理想设置临界状态得到的值。
double angleErr = 0.02500260489936114;
//沟玉球(whiteOfSharingan)中的黑球半径,这个值是动态的
int blackOfWhiteSemi = 0;
//中心眼睛所占的长度
int eyeLength = 300;
//眼睛幅值
int amplitude = 50;

public SharinganJFrame() {
this.setTitle("Sharingan");
this.setSize(centerX*2, centerY*2);
this.getContentPane().setBackground=\'#\'" startRun();
this.setVisible(true);
}

@Override
public void paint(Graphics graphics) {
super.paint(graphics);
//绘制一个眼睛作为背景
graphics.setColor(Color.red

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇动态眨眼效果---Java实现强大的作.. 下一篇Python中str和repr区别

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目