草庐IT

java - 3D 空间 (x,y,z) 中点的透视投影 : determine the 2D screen coordinates (x, y)

我想确定3D空间(x,y,z)中点的2D屏幕坐标(x,y)。我希望投影的点是由GPS坐标和海拔高度表示的真实世界点。例如:点(纬度:49.291882,经度:-123.131676,高度:14m)相机位置和高度也可以确定为x,y,z点。我还有相机的航向(罗盘度数)、倾斜度(高于/低于地平线)和滚动(围绕z轴)。我没有3D编程的经验,因此,我阅读了透视投影的主题,了解到它需要矩阵、变换等知识——所有这些目前让我完全困惑。有人告诉我,OpenGL可用于构建真实世界点的3D模型、设置相机方向并检索3D点的2D坐标。但是,我不确定使用OpenGL是否是解决此问题的最佳方案,即使是我也不知道如何

java - Rectangle 和 Rectangle2D 的区别

目前,我使用Rectangle和Rectangle2D(Rectangle2D.Double)互换。我想知道在选择正确的数据类型时我应该考虑什么?除了Rectangle(Rectangle2D的子类)有更多的API函数外,我没有看到任何明显的区别。谢谢。 最佳答案 矩形使用int坐标。Rectangle2D是一个抽象类,它不关心您使用的是int、double还是float坐标。如果您需要double和float的更高精度,则必须使用Rectangle2D。Rectangle2D是基类,因此如果您正在编写以抽象方式对矩形形状进行操作的

java - 旋转 Java Graphics2D 矩形?

我到处找,就是找不到答案。如何在java中旋转矩形?这是我的一些代码:packagenet.chrypthic.Space;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassSpaceextendsJPanelimplementsActionListener{Timertime;publicSpace(){setVisible(true);setFocusable(true);addMouseMotionListener(newML());addMouseListener(newML());ad

Java 2D 游戏图形

下学期我们有一个关于团队制作Java应用程序的模块。该模块的要求是制作游戏。圣诞节假期我一直在练习,但我想不出绘制图形的最佳方法。我正在使用JavaGraphics2D对象在屏幕上绘制形状,并且每秒调用repaint()30次,但这闪烁得非常厉害。有没有更好的方法在Java中绘制高性能二维图形? 最佳答案 你想要做的是创建一个带有BufferStrategy的Canvas组件并渲染它,下面的代码应该向你展示它是如何工作的,我已经从我自己编写的引擎中提取了代码here.性能完全取决于你想画的东西,我的游戏主要使用图像。在480x480

java - Graphics2D : Drawing black on white?

我确定这是一个非常愚蠢的问题,但我找不到答案,我没有使用Java2DAPI的经验。我正在尝试创建一个图像并将其写入GIF或PNG,我希望它在白色背景上使用黑色钢笔。如果我不设置任何颜色,我会得到黑底白字。如果我使用setPaint()(用于后续绘制操作),我会用该颜色重新绘制整个Canvas。以下示例将整个内容呈现为黑色。该示例是在Scala中编写的,但您明白了。欢迎使用Java回答!valbi=newBufferedImage(200,400,BufferedImage.TYPE_BYTE_BINARY)valg=bi.createGraphicsg.setBackground(Co

java - 如何在 Java 中使用 Graphics2D 旋转文本?

我想使用Graphics2D在JPanel上旋转文本..我的代码是这样的:doublepaso=d.width/numeroBarras;doublealto=datos[i].valor;FontfBarras=newFont("Serif",Font.PLAIN,15);g2.setFont(fBarras);Rectangle2Dbarra=newRectangle2D.Double(x,d.height-alto,paso,alto);//g2.fill(barra);x+=paso;g2.draw(barra);g2.rotate(-Math.PI/2);g2.setColo

java - 将 Graphics2D 转换为图像或 BufferedImage

我这里有个小问题。我有一个小程序,用户可以在其中“绘制”。为此,我使用了java.awt.Graphics2D。但是,我该怎么做才能将用户绘制的图像保存为JPEG图像,或者至少将其转换为BufferedImage或其他东西?我不知道该怎么做。谢谢。 最佳答案 让他们通过Graphics2D对象直接在BufferedImage中绘制,您可以通过getGraphics()获得该对象。然后使用ImageIO.write(...)将图像输出到您想要的任何文件类型(这是受支持的)。ImageIOAPI应该可以帮助您:ImageIOAPI.您会

Java Graphics2D透明背景

我有一个Graphics2D对象,我想设置对象的背景。它有一个setBackground方法,该方法有一个Color参数。这样我就可以设置背景颜色。我的问题是:如何设置对象背景的透明度?我能以某种方式告诉它完全透明吗?我能以某种方式告诉它完全不透明吗?我能以某种方式告诉它具有0.8透明度/不透明度吗?如何设置这些值?我看到有称为TRANSLUCENT和OPAQUE的int预定义值,但我不确定如何使用它们。也许正确的用法是用一个int参数调用Color的构造函数? 最佳答案 您可以通过指定透明度来构造Color对象。例如下面的代码构造

java - Java2d 有哪些更快的替代品?

我想做一些物理模拟,我需要用Java进行快速渲染。我过去曾遇到过Java2d的性能问题,那么快速的替代方案是什么?JOGL明显比Java2d快吗? 最佳答案 我使用Java2D的经验是,如果您遵循规则,它可以非常快。我有一个应用程序,只需更改一些简单的东西,它就可以从90%的CPU使用率降到不到5%的CPU使用率。例如,使用大的透明PNG是不行的。一个非常好的资源是Java-Gaming.org论坛:很多人,包括Sun2D专家,都在那里闲逛,并提供了许多2D绘图性能问题的示例和解决方案。参见:http://www.javagamin

python - 如何在 2D 中正确平移和缩放?

我想做的就是通过pyglet使用OpenGL在2D中创建一个非常简单的平移和缩放功能。如您所见,第一次跳跃后缩放效果很好:(再说一次,拖动(平移)也有效,但它也会跳跃(而且跳跃得很大)。这是我的简化代码和展示其行为方式的视频(pyglet_test.mp4):importpygletfrompyglet.glimport*#ZoomingconstantsZOOM_IN_FACTOR=1.2ZOOM_OUT_FACTOR=1/ZOOM_IN_FACTORclassApp(pyglet.window.Window):def__init__(self,width,height,*args,