【libGDX】使用ShapeRenderer绘制几何图形

1 ShapeRenderer 简介 

        ShapeRenderer 是 libGDX 中用于绘制基本形状的工具之一。它可以绘制点、线、矩形、多边形、圆形、椭圆形、扇形、立方体、圆锥体等几何图形。这对于在游戏或图形应用程序中绘制简单的形状是很有用的。

        ShapeRenderer 的主要方法如下:

        1)开始和结束绘制

// 开始绘制, ShapeType取值有: Point(点)、Line(线)、Filled(内部填充)
// 例: shapeRenderer.begin(ShapeRenderer.ShapeType.Line)
public void begin(ShapeType type)
public void begin() // ShapeType默认取值Line
// 结束绘制
public void end()

        说明:绘制相关逻辑需要放在 begin 和 end 之间。 

        2) 设置颜色和形状类型

// 设置图形颜色
public void setColor(float r, float g, float b, float a)
public void setColor(Color color)
// 设置ShapeType, 取值有: Point(点)、Line(线)、Filled(内部填充)
public void set (ShapeType type)

        3)模型变换矩阵

// transformMatrix矩阵
public void setTransformMatrix(Matrix4 matrix)
public void identity() // 重置transformMatrix
public void translate(float x, float y, float z) // 平移
public void rotate(float axisX, float axisY, float axisZ, float degrees) // 旋转
public void scale(float scaleX, float scaleY, float scaleZ) // 缩放

        4)投影变换矩阵

// projectionMatrix矩阵, 通常设置为camera.combined
public void setProjectionMatrix(Matrix4 matrix)
public Matrix4 getProjectionMatrix()

        5)绘制图形

// 绘制一个点
public void point(float x, float y, float z)

// 绘制一条线段
public final void line(float x, float y, float z, float x2, float y2, float z2)
public final void line(Vector3 v0, Vector3 v1)
public final void line(float x, float y, float x2, float y2)
public final void line(Vector2 v0, Vector2 v1)
public final void line(float x, float y, float x2, float y2, Color c1, Color c2)
public void line(float x, float y, float z, float x2, float y2, float z2, Color c1, Color c2)

// 绘制三角形
public void triangle(float x1, float y1, float x2, float y2, float x3, float y3)
public void triangle(float x1, float y1, float x2, float y2, float x3, float y3, Color col1, Color col2, Color col3)

// 绘制矩形
public void rect(float x, float y, float width, float height)
public void rect(float x, float y, float width, float height, Color col1, Color col2, Color col3, Color col4)
public void rect(float x, float y, float originX, float originY, float width, float height, float scaleX, float scaleY, float degrees)

// 绘制矩形线段
public void rectLine(float x1, float y1, float x2, float y2, float width)
public void rectLine(float x1, float y1, float x2, float y2, float width, Color c1, Color c2)
public void rectLine(Vector2 p1, Vector2 p2, float width)

// 绘制立方体
public void box(float x, float y, float z, float width, float height, float depth)

// 在指定位置绘制一个X形交叉线
public void x(float x, float y, float size)
public void x(Vector2 p, float size)

// 绘制扇形
public void arc(float x, float y, float radius, float start, float degrees)
public void arc(float x, float y, float radius, float start, float degrees, int segments)

// 绘制圆形
public void circle(float x, float y, float radius)
public void circle(float x, float y, float radius, int segments)

// 绘制椭圆形, x、y指椭圆左下角的位置坐标
public void ellipse(float x, float y, float width, float height)
public void ellipse(float x, float y, float width, float height, int segments)
public void ellipse(float x, float y, float width, float height, float rotation)
public void ellipse(float x, float y, float width, float height, float rotation, int segments)

// 绘制圆锥
public void cone(float x, float y, float z, float radius, float height)
public void cone(float x, float y, float z, float radius, float height, int segments)

// 绘制多边形(首尾相连, ShapeType只能取Line)
public void polygon(float[] vertices, int offset, int count)
public void polygon(float[] vertices)

// 绘制多边形(首尾不相连, ShapeType只能取Line)
public void polyline(float[] vertices, int offset, int count)
public void polyline(float[] vertices)

        说明:左下角为坐标原点,向右和向上分别为 x 轴和 y 轴正方向。 

2 ShapeRenderer 应用

2.1 绘制三角形

        MyGame.java

package com.zhyan8.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;

public class MyGame extends ApplicationAdapter {
	private ShapeRenderer mShapeRenderer;
	
	@Override
	public void create () {
		mShapeRenderer = new ShapeRenderer();
	}

	@Override
	public void render () {
		Gdx.gl.glClearColor(0.455f, 0.725f, 1.0f, 1.0f);
		Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
		mShapeRenderer.begin(ShapeRenderer.ShapeType.Line); // ShapeType取值: Point、Line、Filled
		mShapeRenderer.setColor(1, 0, 0, 1); // 设置图形颜色
		mShapeRenderer.triangle(100, 100, 300, 100, 200, 300); // 绘制三角形
		mShapeRenderer.end();

		mShapeRenderer.begin(ShapeRenderer.ShapeType.Filled); // ShapeType取值: Point、Line、Filled
		mShapeRenderer.setColor(0, 1, 0, 1); // 设置图形颜色
		mShapeRenderer.triangle(350, 100, 550, 100, 450, 300); // 绘制三角形
		mShapeRenderer.end();
	}

	@Override
	public void dispose () {
		mShapeRenderer.dispose();
	}
}

        运行效果如下。

2.2 绘制矩形

        MyGame.java

package com.zhyan8.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;

public class MyGame extends ApplicationAdapter {
	private ShapeRenderer mShapeRenderer;
	
	@Override
	public void create () {
		mShapeRenderer = new ShapeRenderer();
	}

	@Override
	public void render () {
		Gdx.gl.glClearColor(0.455f, 0.725f, 1.0f, 1.0f);
		Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
		mShapeRenderer.begin(ShapeRenderer.ShapeType.Line); // ShapeType取值: Point、Line、Filled
		mShapeRenderer.setColor(1, 0, 0, 1); // 设置图形颜色
		mShapeRenderer.rect(100, 100, 200, 200); // 绘制矩形
		mShapeRenderer.end();

		mShapeRenderer.begin(ShapeRenderer.ShapeType.Filled); // ShapeType取值: Point、Line、Filled
		mShapeRenderer.setColor(0, 1, 0, 1); // 设置图形颜色
		mShapeRenderer.rect(350, 100, 200, 300); // 绘制矩形
		mShapeRenderer.end();
	}

	@Override
	public void dispose () {
		mShapeRenderer.dispose();
	}
}

        运行效果如下。

2.3 绘制线框

        MyGame.java

package com.zhyan8.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;

public class MyGame extends ApplicationAdapter {
	private ShapeRenderer mShapeRenderer;

	@Override
	public void create () {
		mShapeRenderer = new ShapeRenderer();
	}

	@Override
	public void render () {
		Gdx.gl.glClearColor(0.455f, 0.725f, 1.0f, 1.0f);
		Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
		shapeRenderer.begin(ShapeRenderer.ShapeType.Line); // ShapeType取值: Point、Line、Filled
		mShapeRenderer.setColor(1, 0, 0, 1); // 设置图形颜色
		mShapeRenderer.rectLine(100, 100, 300, 300, 20); // 绘制线框(不填充)
		mShapeRenderer.end();

		mShapeRenderer.begin(ShapeRenderer.ShapeType.Filled); // ShapeType取值: Point、Line、Filled
		mShapeRenderer.setColor(0, 1, 0, 1); // 设置图形颜色
		mShapeRenderer.rectLine(350, 100, 550, 300, 20); // 绘制线段(填充)
		mShapeRenderer.end();
	}

	@Override
	public void dispose () {
		mShapeRenderer.dispose();
	}
}

        运行效果如下。

2.4 绘制多边形

        MyGame.java

package com.zhyan8.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;

public class MyGame extends ApplicationAdapter {
	private ShapeRenderer mShapeRenderer;

	@Override
	public void create () {
		mShapeRenderer = new ShapeRenderer();
	}

	@Override
	public void render () {
		Gdx.gl.glClearColor(0.455f, 0.725f, 1.0f, 1.0f);
		Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
		mShapeRenderer.begin(ShapeRenderer.ShapeType.Line); // ShapeType取值: Point、Line、Filled
		mShapeRenderer.setColor(1, 0, 0, 1); // 设置图形颜色
		drawPolygon5(); // 绘制正五边形
		drawPolygon6(); // 绘制正六边形
		mShapeRenderer.end();
	}

	@Override
	public void dispose () {
		mShapeRenderer.dispose();
	}

	private void drawPolygon5() { // 绘制正五边形
		float[] starVertices = calculatePolygonVertices(200, 250, 100, 5);
		mShapeRenderer.polygon(starVertices);
	}

	private void drawPolygon6() { // 绘制正六边形
		float[] starVertices = calculatePolygonVertices(450, 250, 100, 6);
		mShapeRenderer.polygon(starVertices);
	}

	private float[] calculatePolygonVertices(float x, float y, float size, int sides) { // 计算正n边形的顶点坐标
		float[] vertices = new float[sides * 2];
		for (int i = 0; i < sides * 2; i += 2) {
			float angleRad = (i / 2) * 360f / sides * (float) Math.PI / 180f;
			vertices[i] = x + size * (float) Math.cos(angleRad);
			vertices[i + 1] = y + size * (float) Math.sin(angleRad);
		}
		return vertices;
	}
}

        运行效果如下。

2.5 绘制圆形

         MyGame.java

package com.zhyan8.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;

public class MyGame extends ApplicationAdapter {
	private ShapeRenderer mShapeRenderer;

	@Override
	public void create () {
		mShapeRenderer = new ShapeRenderer();
	}

	@Override
	public void render () {
		Gdx.gl.glClearColor(0.455f, 0.725f, 1.0f, 1.0f);
		Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
		shapeRenderer.begin(ShapeRenderer.ShapeType.Line); // ShapeType取值: Point、Line、Filled
		mShapeRenderer.setColor(1, 0, 0, 1); // 设置图形颜色
		mShapeRenderer.circle(200, 250, 100); // 绘制圆形
		mShapeRenderer.end();

		mShapeRenderer.begin(ShapeRenderer.ShapeType.Filled); // ShapeType取值: Point、Line、Filled
		mShapeRenderer.setColor(0, 1, 0, 1); // 设置图形颜色
		mShapeRenderer.circle(450, 250, 100); // 绘制圆形
		mShapeRenderer.end();
	}

	@Override
	public void dispose () {
		mShapeRenderer.dispose();
	}
}

        运行效果如下。

2.6 绘制椭圆

         MyGame.java

package com.zhyan8.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;

public class MyGame extends ApplicationAdapter {
	private ShapeRenderer mShapeRenderer;

	@Override
	public void create () {
		mShapeRenderer = new ShapeRenderer();
	}

	@Override
	public void render () {
		Gdx.gl.glClearColor(0.455f, 0.725f, 1.0f, 1.0f);
		Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
		mShapeRenderer.begin(ShapeRenderer.ShapeType.Line); // ShapeType取值: Point、Line、Filled
		mShapeRenderer.setColor(1, 0, 0, 1); // 设置图形颜色
		mShapeRenderer.ellipse(100, 200, 200, 100); // 绘制椭圆形
		mShapeRenderer.end();

		mShapeRenderer.begin(ShapeRenderer.ShapeType.Filled); // ShapeType取值: Point、Line、Filled
		mShapeRenderer.setColor(0, 1, 0, 1); // 设置图形颜色
		mShapeRenderer.ellipse(400, 150, 100, 200); // 绘制椭圆形
		mShapeRenderer.end();
	}

	@Override
	public void dispose () {
		mShapeRenderer.dispose();
	}
}

        运行效果如下。

2.7 绘制弧形

         MyGame.java

package com.zhyan8.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;

public class MyGame extends ApplicationAdapter {
	private ShapeRenderer mShapeRenderer;

	@Override
	public void create () {
		mShapeRenderer = new ShapeRenderer();
	}

	@Override
	public void render () {
		Gdx.gl.glClearColor(0.455f, 0.725f, 1.0f, 1.0f);
		Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
		mShapeRenderer.begin(ShapeRenderer.ShapeType.Line); // ShapeType取值: Point、Line、Filled
		mShapeRenderer.setColor(1, 0, 0, 1); // 设置图形颜色
		mShapeRenderer.arc(100, 200, 200, 0, 72); // 绘制扇形
		mShapeRenderer.end();

		mShapeRenderer.begin(ShapeRenderer.ShapeType.Filled); // ShapeType取值: Point、Line、Filled
		mShapeRenderer.setColor(0, 1, 0, 1); // 设置图形颜色
		mShapeRenderer.arc(450, 200, 100, 0, 300); // 绘制扇形
		mShapeRenderer.end();
	}

	@Override
	public void dispose () {
		mShapeRenderer.dispose();
	}
}

        运行效果如下。

2.8 绘制立方体

         MyGame.java

package com.zhyan8.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;

public class MyGame extends ApplicationAdapter {
	private ShapeRenderer mShapeRenderer;
	private PerspectiveCamera mCamera;
	private float mRotationAngle;

	@Override
	public void create() {
		mShapeRenderer = new ShapeRenderer();
		mCamera = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
		mCamera.position.set(5f, 5f, 5f);
		mCamera.lookAt(0, 0, 0);
		mCamera.near = 1f;
		mCamera.far = 100f;
		mCamera.update();
		mShapeRenderer.setProjectionMatrix(mCamera.combined);
	}

	@Override
	public void render() {
		Gdx.gl.glClearColor(0.455f, 0.725f, 1.0f, 1.0f);
		Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT | GL30.GL_DEPTH_BUFFER_BIT);
		mShapeRenderer.begin(ShapeRenderer.ShapeType.Line);
		mShapeRenderer.setColor(1, 0, 0, 1);
		rotate();
		mShapeRenderer.box(-2, 0, 0, 2, 2, 2); // 绘制立方体
		mShapeRenderer.end();

		mShapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
		mShapeRenderer.setColor(0, 1, 0, 1);
		rotate();
		mShapeRenderer.box(2, 0, 0, 2, 2, 2); // 绘制立方体
		mShapeRenderer.end();
	}

	@Override
	public void resize(int width, int height) {
		mCamera.viewportWidth = width;
		mCamera.viewportHeight = height;
		mCamera.update();
		mShapeRenderer.setProjectionMatrix(mCamera.combined);
	}

	@Override
	public void dispose() {
		mShapeRenderer.dispose();
	}

	private void rotate() {
		mRotationAngle += Gdx.graphics.getDeltaTime() * 45f; // 每秒转45度
		mShapeRenderer.identity(); // 重置transformation矩阵
		mShapeRenderer.rotate(2, 2, 2, mRotationAngle);
	}
}

        运行效果如下。

2.9 绘制圆锥

         MyGame.java

package com.zhyan8.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;

public class MyGame extends ApplicationAdapter {
	private ShapeRenderer mShapeRenderer;
	private PerspectiveCamera mCamera;
	private float mRotationAngle;

	@Override
	public void create() {
		mShapeRenderer = new ShapeRenderer();
		mCamera = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
		mCamera.position.set(5f, 5f, 5f);
		mCamera.lookAt(0, 0, 0);
		mCamera.near = 1f;
		mCamera.far = 100f;
		mCamera.update();
		mShapeRenderer.setProjectionMatrix(mCamera.combined);
	}

	@Override
	public void render() {
		Gdx.gl.glClearColor(0.455f, 0.725f, 1.0f, 1.0f);
		Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT | GL30.GL_DEPTH_BUFFER_BIT);
		mShapeRenderer.begin(ShapeRenderer.ShapeType.Line);
		mShapeRenderer.setColor(1, 0, 0, 1);
		rotate();
		mShapeRenderer.cone(-2, 0, 0, 2, 2);
		mShapeRenderer.end();

		mShapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
		mShapeRenderer.setColor(0, 1, 0, 1);
		rotate();
		mShapeRenderer.cone(2, 0, 0, 2, 2);
		mShapeRenderer.end();
	}

	@Override
	public void resize(int width, int height) {
		mCamera.viewportWidth = width;
		mCamera.viewportHeight = height;
		mCamera.update();
		mShapeRenderer.setProjectionMatrix(mCamera.combined);
	}

	@Override
	public void dispose() {
		mShapeRenderer.dispose();
	}

	private void rotate() {
		mRotationAngle += Gdx.graphics.getDeltaTime() * 45f; // 每秒转45度
		mShapeRenderer.identity(); // 重置transformation矩阵
		mShapeRenderer.rotate(2, 2, 2, mRotationAngle);
	}
}

        运行效果如下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/165803.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

左支座零件的机械加工工艺规程及工艺装备设计【计算机辅助设计与制造CAD】

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;左支座 获取完整CAD工程源文件论文报告说明书等 一、论文目录 二、论文部分内容 设计任务 1.完成左支座零件—毛坯合图及左支座零件图 2.完成左支座零件工艺规程设计 3.完成左支座零件加工工艺卡 4.机床专用夹具装备总图 …

【LeetCode刷题-树】--1367.二叉树中的链表

1367.二叉树中的链表 方法&#xff1a;枚举 枚举二叉树中的每个节点为起点往下的路径是否与链表相匹配的路径&#xff0c;为了判断是否匹配设计了一个递归函数dfs(root,head),其中root表示当前匹配到的二叉树节点&#xff0c;head表示当前匹配到的链表节点&#xff0c;整个函数…

【寒武纪(9)】MLU架构

⼀个MLU 设备由 Memory ⼦系统、MTP&#xff08;Multi Tensor Processor&#xff09;⼦系统、Media ⼦系统等构成。MTP⼦系统是寒武纪MLU 架构的核⼼。 文章目录 TP1 架构TP2 架构TP3 1⾯向不同 MLU 架构的 Cambricon BANG 编程最佳实践1.1 Device 级异构调优指南1.2 Cluster …

Javaweb之Vue生命周期的详细解析

2.4 生命周期 vue的生命周期&#xff1a;指的是vue对象从创建到销毁的过程。vue的生命周期包含8个阶段&#xff1a;每触发一个生命周期事件&#xff0c;会自动执行一个生命周期方法&#xff0c;这些生命周期方法也被称为钩子方法。其完整的生命周期如下图所示&#xff1a; 状…

云课五分钟-0B快速排序C++示例代码-注释和编译指令

前篇&#xff1a; 云课五分钟-0ALinux文件系统及权限-查询命令如何使用 智能大模型个人感觉完全颠覆式改变了学习和教学的模式&#xff0c;知识的重要性荡然无存。 越来越需要重视思路和方法&#xff0c;创新和创意。 090A&#xff1a;接着如下 Linux基础入门的内容包括以…

Asp.net MVC Api项目搭建

整个解决方案按照分层思想来划分不同功能模块&#xff0c;以提供User服务的Api为需求&#xff0c;各个层次的具体实现如下所示&#xff1a; 1、新建数据库User表 数据库使用SQLExpress版本&#xff0c;表的定义如下所示&#xff1a; CREATE TABLE [dbo].[User] ([Id] …

阅读芯片源码(RTL)

part one 主要的原则。 一个rtl可以是这样的&#xff1a; 经常大家习惯于算法和数据结构。对于设计的部分&#xff0c;落实不一定多。 另外一个rtl也可以是这样的&#xff1a; 所以从不同的层面来讲&#xff0c;一个Rtl有不同的表述。 首先大概把所有的部分浏览一遍&#x…

麒麟系统安装找不到安装源!!!!设置基础软件仓库时出错

记录--华为RH2288 V3服务器安装麒麟系统遇到的问题 1.遇到的问题--“设置基础软件仓库时出错”报错导致无法继续安装 没办法下一步 先说结论&#xff1a;系统bug 该问题在CentOS、Rocky Linux最新版中均存在 解决&#xff1a; &#xff08;一&#xff09;、如果是外网直接配…

Linux|僵死进程

1.僵死进程产生的原因或者条件: 什么是僵死进程? 当子进程先于父进程结束,父进程没有获取子进程的退出码,此时子进程变成僵死进程. 简而言之,就是子进程先结束,并且父进程没有获取它的退出码; 那么僵死进程产生的原因或者条件就是:子进程先于父进程结束,并且父进程没有获取…

场景交互与场景漫游-交运算与对象选取(8-1)

交运算与对象选取 在面对大规模的场景管理时&#xff0c;场景图形的交运算和图形对象的拾取变成了一项基本工作。OSG作为一个场景管理系统&#xff0c;自然也实现了场景图形的交运算&#xff0c;交运算主要封装在osgUtil 工具中在OSG中&#xff0c;osgUtil是一个非常强有力的工…

SDUT OJ《算法分析与设计》贪心算法

A - 汽车加油问题 Description 一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法&#xff0c;指出应在哪些加油站停靠加油&#xff0c;使沿途加油次数最少。并证明算法能产生一个最优解。 对于给定的n和k个加油站位置&#xff0c;计算最少加油次数。 I…

Transformer中位置嵌入的几种形式对比

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

JSP命令标签 静态包含/动态包含

好 下面我们聊聊JSP中的指令标签 这边 我们来说两个 分别是 静态包含 和 动态包含 我们可以将重用性代码包含起来 更好的使用 比如 我们界面上中下 分别有三个导航栏 那么 如果你写三份 就会出现很多重复代码 而且 改起来 也很不方便 要一次改三份 口说无凭 我们来做一个小案…

【机器学习基础】决策树(Decision Tree)

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习 欢迎订阅&#xff01;后面的内容会越来越有意思~ ⭐特别提醒&#xff1a;针对机器学习&#xff0c;特别开始专栏&#xff1a;机器学习python实战 欢迎订阅&am…

[AI]ChatGPT4 与 ChatGPT3.5 区别有多大

ChatGPT 3.5 注册已经不需要手机了&#xff0c;直接邮箱认证就可以&#xff0c;这可真算是好消息&#xff0c;坏消息是 ChatGPT 4 还是要收费。 那么 GPT-3.5 与 GPT-4 区别有多大呢&#xff0c;下面简单测试一下。 以从 TDengine 订阅数据为例&#xff0c;TDengine 算是不太小…

腾讯云轻量数据库是什么?性能如何?费用价格说明

腾讯云轻量数据库测评&#xff0c;轻量数据库100%兼容MySQL 5.7和8.0&#xff0c;腾讯云提供1C1G20GB、1C1G40GB、1C2G80GB、2C4G120GB、2C8G240GB五种规格轻量数据库&#xff0c;腾讯云百科txybk.com分享腾讯云轻量数据库测评、轻量数据库详细介绍、特性、配置价格和常见问题解…

网络运维与网络安全 学习笔记2023.11.17

网络运维与网络安全 学习笔记 第十八天 今日目标 TCP数据包格式、TCP通信流程分析、UDP协议介绍 Telnet之AAA认证、设备升级与备份 今日英语单词 TCP&#xff0c;Transmission Control Protocol 传输控制协议 UDP&#xff0c;User Datagram Protocol 用户数据报协议 Sync …

异常语法详解

异常语法详解 一&#xff1a;异常的分类&#xff1a;二&#xff1a;异常的处理1:异常的抛出:throw2&#xff1a;异常的声明:throws3&#xff1a;try-catch捕获并处理异常 三&#xff1a;finally关键字四&#xff1a;自定义异常类&#xff1a; 一&#xff1a;异常的分类&#xf…

用GPT 搭建一个占星术、解梦、塔罗牌占卜和命理学服务

今天来尝试我们的占星术、解梦、塔罗牌占卜和命理学服务&#xff0c;揭开宇宙的奥秘并获得自我认识 聊天 GPT API 集成的 HTML5 模板。我们的目标是提供易于使用且高度可定制的 API 代码&#xff0c;使您能够训练自己的人工智能解决方案并将其添加到提示中。 我们的产品是可定…

window上Clion配置C++版本的opencv

window上Clion配置opencv 注意版本一定要对的上&#xff0c;否则可能会出错&#xff0c;亲测 widnows 11mingw 8.1.0opencv 4.5.5 mingw8.1下载地址https://sourceforge.net/projects/mingw/ 配置环境变量 cmake下载 安装完添加环境变量 来到官网&#xff0c;下载 windows 对…