
正文
java炮台旋转代码 旋转炮台基本结构
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
如何用java写矩形平移和旋转后输出坐标的代码
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
public class LX3_3 extends Applet {
public void paint(Graphics g) {
g.setColor(Color.red);//设置红颜色
g.drawOval(35,35,100,60);//画椭圆(圆心、宽和高)
g.fillOval(200,15,60,100);//画具有填充色java炮台旋转代码的圆
g.setColor(Color.blue);//设置蓝颜色
g.drawRect(20,130,80,80);//画矩形
g.fillRect(120,130,80,80);//画具有填充色的矩形
g.drawRoundRect(220,130,80,80,20,20);//画圆角矩形
g.fillRoundRect(320,130,80,80,20,20);//画具有填充色的 圆角矩形
}
}
该程序是在Myeclipse的环境下运行的
在二维平面内java炮台旋转代码,画长方形等都只需要改变点的坐标即可实现平移,旋转,缩放
上面还加入java炮台旋转代码了颜色,可供参考
水平有限,但希望对你有帮助
相关问答
Q1: Java代码如何实现炮台旋转,求代码例子
实现方式有很多如果你用java炮台旋转代码我提供给你的估计到时候你的绘制或者碰撞可能也要改
我用的方法是用一个矩阵存旋转角度以及当前位置等相关信息 可能有点复杂
/** 设置朝向为指定弧度 */
public void setOrientation(double orientation) {
if (this.orientation == orientation) {
return;
}
if (points != null) {
double x, y;
double sin = Math.sin(orientation - this.orientation);
double cos = Math.cos(orientation - this.orientation);
for (int i = 1; i points.length; i += 2) {
x = points[i - 1] - gravity.x;
y = points[i] - gravity.y;
points[i - 1] = x * cos - y * sin + gravity.x;
points[i] = x * sin + y * cos + gravity.y;
}
setBounds();
}
matrix.translate(center.x, center.y);
matrix.rotate(orientation - this.orientation);
matrix.translate(-center.x, -center.y);
this.orientation = orientation;
}
public void paint(World world, Graphics2D g2d, AffineTransform at) {
at.setTransform(matrix.m00, matrix.m10, matrix.m01, matrix.m11, matrix.m02, matrix.m12);
g2d.drawRenderedImage(image, at);
at.setTransform(head.matrix.m00, head.matrix.m10, head.matrix.m01, head.matrix.m11, head.matrix.m02,
head.matrix.m12);
g2d.drawRenderedImage(head.image, at);
}
public void move() {
double x = Camera.getXOnWorld();
double y = Camera.getYOnWorld();
Vector.VECTOR.set(head.gravity.x, head.gravity.y);
head.matrix.transform(Vector.VECTOR);
head.setOrientation(Math.atan2(y - Vector.VECTOR.y, x - Vector.VECTOR.x));
move(SystemEvent.VK_W, SystemEvent.VK_S, SystemEvent.VK_A, SystemEvent.VK_D);
}
你如果只要求看起来是旋转的效果且炮台不再移动的话建议你用Graphics2D的下面这个方法用完之后麻烦再调用一次方向前面加个负号转回去就没啥问题java炮台旋转代码了
public abstract void rotate(double theta,
double x,
double y)
将当前的 Graphics2D Transform 与平移后的旋转转换连接。后续呈现的变换如下java炮台旋转代码:平移到指定位置,旋转指定弧度,然后向回平移相同的距离。这等同于以下调用序列java炮台旋转代码: translate(x, y);
rotate(theta);
translate(-x, -y);
使用正角度 theta 进行旋转,可将正 x 轴上的点转向正 y 轴。
参数:theta - 旋转的角度,以弧度为单位x - 旋转原点的 x 坐标y - 旋转原点的 y 坐标
Q2: java俄罗斯方块旋转算法,求解
可以给每一个小方块设置为一个坐标,变为一个三阶行列式,3*3矩阵,转变为二元数组旋转。观察一下左旋:
11 12 13 31 21 11
21 22 23 →→ 32 22 12
31 32 33 33 23 13
坐标变换如下:(1,1)变为(1,3),(1,2)变为(2,3),(1,3)变为(3,3)
(2,1)变为(1,2),(2,2)变为(2,2),(2,3)变为(3,2)
(3,1)变为(1,1),(3,2)变为(2,1),(3,3)变为(3,1)
规律就是(i,j)变为(j,3-i+1):
如果是2*2的方格,就可以变为二阶行列式,也就是2*2的二元数组,这里给出3*3九宫格改变的示意,我的代码如下:
import java.util.Random;
public class T{
public static void main(String[] args){
int[][] a=new int[3][3];
System.out.println("now begin to form a new integer array");
Random r=new Random();
for(int i=0;i3;i++){
for(int j=0;j3;j++){
a[i][j]=r.nextInt(10);
}
}
System.out.println("the array is shown as follows:");
for(int i=0;i3;i++){
for(int j=0;j3;j++){
System.out.print(a[i][j]+" ");
}
System.out.println();
}
System.out.println("左转九十度");
for(int i=0;ia.length;i++){
for(int j=0;ja[i].length;j++){
System.out.print(a[a[i].length-1-j][i]+" ");
}
System.out.println();
}
}
}
Q3: 如何用编程猫编程让左右旋转炮台旋转
用编程猫编程让左右旋转炮台旋转方法:
1、运行编程猫APP,新建作品,进入创作界面,添加角色。
2、把事件积木盒中的当开始被点击拉到编辑区。
3、把外观积木盒中的隐藏拉到当开始被点击下方,自动拼接起来。
4、笔积木盒中的设置画笔颜色拉到隐藏下方,自动拼接起来旋转炮台旋转。
Q4: 在这段java代码--俄罗斯方块,方块是怎么旋转的?
贴出来的代码还不够,不过已经基本能回答你的问题java炮台旋转代码了
java炮台旋转代码我的推理过程java炮台旋转代码:从(turnstate+1)%4可以看出,turnstate是一个数字,取值只有0123,因此它仅仅是一个标识符,0123四种取值分别标记着这个方块处于原状,旋转90度,180度或者270度。然后blow函数应该是一个判断旋转之后会不会出现和已有方块重叠的函数。
因此,这个turn函数的功能是:把标识符变成下一个状态,然后判断如果旋转,会不会和已有的方块重叠,如果重叠,就取消这个旋转标记的改变。
因此,答案就很明显了:真正实现旋转方块的操作并不在这里,或者说,你再仔细研究一下这个程序的代码,它可能实际上根本没有旋转过那个方块,只是用turnstate这个数字标记方块旋转了多少度,判断重叠以及绘制的时候才真正计算或者从表里直接读取旋转后状态而已。
关于java炮台旋转代码和旋转炮台基本结构的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







