package com.brothers.swing;
public class Converter {
double angle = 30;
int xDValue = 250;
int yDValue = 320;
Point3D centre;
public Converter(){
//设置中心点
centre = new Point3D();
centre.setX(Cube.CUBE_WIDTH/2);
centre.setY(Cube.CUBE_WIDTH/2);
centre.setZ(Cube.CUBE_WIDTH/2);
}
public Point2D converTo2D(Point3D p3){
Point2D p2 = new Point2D();
//得到a,b值
int y = p3.getY();
double seita = angle * Math.PI / 180;
int yConverTo2D = (int)(y * Math.sin(seita));
int a = (int)(yConverTo2D * Math.sin(seita));
int b = (int)(yConverTo2D * Math.cos(seita));
//设置p2值
p2.setX(xDValue + p3.getX() - a);
p2.setY(yDValue - p3.getZ() + b);
return p2;
}
public void reChange(Point3D oldP,Point3D changeP){
changeP.setX(oldP.getX());
changeP.setY(oldP.getY());
changeP.setZ(oldP.getZ());
}
public void rotato(int index,int value,Point3D oldP,Point3D changeP)
{
// if(value == 0){
// return ;
// }
//index == 0 : x轴旋转
// == 1 : y轴旋转
// == 2 : z轴旋转
if(index == 0){
//x不变
int x = changeP.getX();
int y = changeP.getY();
int z = changeP.getZ();
//y和z的平方和的平方根
int r = (int)Math.sqrt(Math.pow(y, 2) + Math.pow(z,2));
///角度的计算
double c = (value * Math.PI / 180);
double a = 0;
if(y != 0){
a = Math.atan(z/y);
}else{
a = 1.0/2.0 * Math.PI;
}
double b = c + a;
//新的y,z值
int y2 = (int)(r * Math.sin(b));
int z2 = (int)(r * Math.cos(b));
changeP.setX(x);
changeP.setY(y2);
changeP.setZ(z2);
// System.out.println(p);
}else if(index == 1){
// Point3D pCom1 = (Point3D)changeP.clone();
//y不变
int y = changeP.getY();
int x = changeP.getX();
int z = changeP.getZ();
//y和z的平方和的平方根
int r = (int)Math.sqrt(Math.pow(x, 2) + Math.pow(z,2));
///角度的计算
double c = (value * Math.PI / 180);
double a = 0;
if(z != 0){
a = Math.atan(x/z);
}else{
a = 1.0/2.0 * Math.PI;
}
double b = c + a;
//新的y,z值
int x2 = (int)(r * Math.cos(b));
int z2 = (int)(r * Math.sin(b));
changeP.setX(x2);
changeP.setY(y);
changeP.setZ(z2);
// Point3D pCom2 = (Point3D)changeP.clone();
// System.out.println(pCom1.equals(pCom2));
}else if(index == 2){
//z不变
int x = changeP.getX();
int y = changeP.getY();
int z = changeP.getZ();
//y和z的平方和的平方根
int r = (int)Math.sqrt(Math.pow(x, 2) + Math.pow(y,2));
///角度的计算
double c = (value * Math.PI / 180);
double a = 0;
if(x != 0){
a = Math.atan(y/x);
}else{
a = 1.0/2.0 * Math.PI;
}
double b = c + a;
//新的y,z值
int x2 = (int)(r * Math.cos(b));
int y2 = (int)(r * Math.sin(b));
changeP.setX(x2);
changeP.setY(y2);
changeP.setZ(z);
}
}
}
(java小程序)能旋转的立方体
5星 · 超过95%的资源 需积分: 32 76 浏览量
2011-09-03
16:33:29
上传
评论
收藏 15KB RAR 举报
qiqi___03270327
- 粉丝: 3
- 资源: 6
最新资源
- 流程图转PAD-N-S图和伪码(软件工程).doc
- C#winform excel导入导出
- 毕业论文上传111111111111
- raisin.zip
- 322个地级市-市场分割指数、市场一体化指数+居民消费价格指数(2004-2022年).txt
- 《基于Java实现自定义控件-天气温度折线图 》+源代码+设计资料
- 希尔伯特矩阵来综合演示数值矩阵与符号矩阵的基本操作
- 《基于51单片机和DS18B20的温度检测和报警系统,可设置报警温度上下限,输出温度采用数码管显示 》+源代码+设计资料
- ESP8266WIFI系统工作原理图.schdoc
- C语言《基于STM32的测量温度与压力的数据处理设计 》+源代码+设计资料
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈