Java画简单平面图示例
时间: 2023-12-18 10:08:52 浏览: 101
很高兴回答你的问题。对于Java画简单平面图的示例,可以使用Java Swing库实现。首先需要创建一个JFrame对象作为图形界面窗口,然后在其上面添加一个JPanel对象用于绘制图形。在JPanel对象的paintComponent()方法中使用Graphics2D对象绘制各种形状和线条,例如使用drawLine()方法绘制线条,使用drawRect()方法绘制矩形等。最后调用JFrame对象的setVisible(true)方法显示图形界面。具体实现细节可参考Java官方文档或网络资源。
相关问题
java实现平面图拼接成3d_java3d生成简单的点线图
要实现平面图拼接成3D模型,可以考虑使用Java3D库。以下是一个简单的示例代码,可以生成一个简单的点线图:
```java
import javax.media.j3d.*;
import javax.vecmath.*;
public class Simple3D {
public static void main(String[] args) {
SimpleUniverse universe = new SimpleUniverse();
BranchGroup group = new BranchGroup();
// 创建点对象
PointArray points = new PointArray(4, PointArray.COORDINATES);
points.setCoordinate(0, new Point3f(0.0f, 0.0f, 0.0f));
points.setCoordinate(1, new Point3f(1.0f, 0.0f, 0.0f));
points.setCoordinate(2, new Point3f(1.0f, 1.0f, 0.0f));
points.setCoordinate(3, new Point3f(0.0f, 1.0f, 0.0f));
// 创建线对象
LineArray lines = new LineArray(8, LineArray.COORDINATES);
lines.setCoordinate(0, new Point3f(0.0f, 0.0f, 0.0f));
lines.setCoordinate(1, new Point3f(1.0f, 0.0f, 0.0f));
lines.setCoordinate(2, new Point3f(1.0f, 0.0f, 0.0f));
lines.setCoordinate(3, new Point3f(1.0f, 1.0f, 0.0f));
lines.setCoordinate(4, new Point3f(1.0f, 1.0f, 0.0f));
lines.setCoordinate(5, new Point3f(0.0f, 1.0f, 0.0f));
lines.setCoordinate(6, new Point3f(0.0f, 1.0f, 0.0f));
lines.setCoordinate(7, new Point3f(0.0f, 0.0f, 0.0f));
// 创建点和线的外观
PointAttributes pointAttributes = new PointAttributes();
pointAttributes.setPointSize(5.0f);
LineAttributes lineAttributes = new LineAttributes();
lineAttributes.setLineWidth(2.0f);
Appearance appearance = new Appearance();
appearance.setPointAttributes(pointAttributes);
appearance.setLineAttributes(lineAttributes);
// 创建点和线的形状对象
Shape3D pointShape = new Shape3D(points, appearance);
Shape3D lineShape = new Shape3D(lines, appearance);
// 将点和线形状添加到场景中
group.addChild(pointShape);
group.addChild(lineShape);
// 将场景添加到宇宙中
universe.addBranchGraph(group);
}
}
```
这段代码创建了一个包含4个点和4条线的简单图形,并将它们添加到3D场景中。你可以根据自己的需求修改点和线的坐标和外观来创建自己的模型。
Java开发中 OpenGL20平面图设置透明度完整的代码
以下是一份简单的 Java 代码示例,演示如何使用 OpenGL ES 2.0 在平面图上设置透明度:
```java
import android.opengl.GLES20;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
public class MyGLRenderer implements GLSurfaceView.Renderer {
private int mProgram;
private int mPositionHandle;
private int mColorHandle;
private int mMVPMatrixHandle;
private final String vertexShaderCode =
"attribute vec4 vPosition;" +
"uniform mat4 uMVPMatrix;" +
"void main() {" +
" gl_Position = uMVPMatrix * vPosition;" +
"}";
private final String fragmentShaderCode =
"precision mediump float;" +
"uniform vec4 vColor;" +
"void main() {" +
" gl_FragColor = vColor;" +
"}";
private FloatBuffer vertexBuffer;
static final int COORDS_PER_VERTEX = 3;
static float squareCoords[] = {
-0.5f, 0.5f, 0.0f,
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
0.5f, 0.5f, 0.0f
};
private final int vertexCount = squareCoords.length / COORDS_PER_VERTEX;
private final int vertexStride = COORDS_PER_VERTEX * 4;
float color[] = { 1.0f, 1.0f, 1.0f, 0.5f };
public void onSurfaceCreated(GL10 unused, EGLConfig config) {
GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
ByteBuffer bb = ByteBuffer.allocateDirect(squareCoords.length * 4);
bb.order(ByteOrder.nativeOrder());
vertexBuffer = bb.asFloatBuffer();
vertexBuffer.put(squareCoords);
vertexBuffer.position(0);
int vertexShader = MyGLRenderer.loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode);
int fragmentShader = MyGLRenderer.loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode);
mProgram = GLES20.glCreateProgram();
GLES20.glAttachShader(mProgram, vertexShader);
GLES20.glAttachShader(mProgram, fragmentShader);
GLES20.glLinkProgram(mProgram);
}
public void onDrawFrame(GL10 unused) {
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
GLES20.glUseProgram(mProgram);
mPositionHandle = GLES20.glGetAttribLocation(mProgram, "vPosition");
GLES20.glEnableVertexAttribArray(mPositionHandle);
GLES20.glVertexAttribPointer(mPositionHandle, COORDS_PER_VERTEX,
GLES20.GL_FLOAT, false,
vertexStride, vertexBuffer);
mColorHandle = GLES20.glGetUniformLocation(mProgram, "vColor");
GLES20.glUniform4fv(mColorHandle, 1, color, 0);
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_FAN, 0, vertexCount);
GLES20.glDisableVertexAttribArray(mPositionHandle);
}
public void onSurfaceChanged(GL10 unused, int width, int height) {
GLES20.glViewport(0, 0, width, height);
float ratio = (float) width / height;
float left = -ratio;
float right = ratio;
float bottom = -1.0f;
float top = 1.0f;
float near = 1.0f;
float far = 10.0f;
Matrix.frustumM(mProjectionMatrix, 0, left, right, bottom, top, near, far);
}
public static int loadShader(int type, String shaderCode){
int shader = GLES20.glCreateShader(type);
GLES20.glShaderSource(shader, shaderCode);
GLES20.glCompileShader(shader);
return shader;
}
}
```
在上述代码中,我们使用了一个简单的四边形作为示例,使用了一个 4 维的颜色向量 `vec4` 来表示颜色,其中最后一个分量表示透明度。我们将透明度设置为 0.5,即半透明状态。
在 `onSurfaceCreated()` 方法中,我们编译了一个简单的顶点着色器和片元着色器,并将它们连接成一个 OpenGL 程序。
在 `onDrawFrame()` 方法中,我们首先启用顶点属性数组,并将顶点数据传递给着色器。然后,我们将颜色向量传递给片元着色器,并绘制四边形。
最后,在 `onSurfaceChanged()` 方法中,我们设置了 OpenGL 视口并定义了投影矩阵,以便正确渲染场景。
请注意,此示例代码仅用于演示如何在平面图上设置透明度。在实际应用中,您需要根据具体情况修改代码。