我使用Fortune算法找到一组点的Voronoi图。我得到的是一个线段列表,但我需要知道哪些线段形成闭合多边形,并将它们放在一个由它们围绕的原始点散列的对象中。找到这些内容的最快方法是什么??我应该从算法中保存一些重要信息吗?如果是什么?这是我在Java中从C++实现移植的fortune算法的实现hereclassVoronoi{//ThesetofpointsthatcontrolthecentersofthecellsprivateLinkedListpts;//Alistoflinesegmentsthatdefineswherethecellsaredividedprivat
我正在开发一个绘制矩阵的应用程序-使用Java2D-它可以变得非常大,例如30000x30000像素。此时此刻,我已经对BufferedImage进行了一些试验,但创建如此巨大的BufferedImage会导致内存不足异常,即使在扩大堆时也是如此。现在我正在考虑将图像拆分为多个图像/区域,当我在某个区域完成后将其写入磁盘并创建一个新的区域/BufferedImage并继续绘制。我对其他人如何处理这件事的想法很感兴趣。我已经离开Java一段时间了,所以欢迎任何具体的例子。 最佳答案 我为一个新的/小型开源项目做出贡献,它可能非常适合您
我想在我的游戏中绘制自定义静态形状,就像愤怒的小鸟所做的那样:但问题是纹理是方形的。我们如何告诉“SpriteBatch”绘制带有某些顶点的形状?有人有什么想法吗? 最佳答案 根据docs:ASpriteBatchisusedtodraw2Drectanglesthatreferenceatexture(region)所以本质上,此方法不允许您指定矩形以外的任何其他几何体。但是,有一个drawmethod这允许您指定“矩形”的四个坐标并将其变成其他东西。您必须将几何体分解成适合此基元的更小的部分。看起来这种方法不适合几何变化。更好的
我有一些代码可以在随机位置生成粒子,并以随机方向和速度移动。通过循环的每次迭代,我移动所有粒子,并在我的jpanel上调用重绘。对于1,000个粒子,我每秒获得大约20到30帧。我计划最终拥有100,000到1,000,000个粒子。在paint中,如果窗口大小发生变化,我只会创建一个新的bufferedimage。我将像素绘制到bufferedimage,然后调用drawImage来显示图像。每个粒子都是一个像素,我确定所有时间都花在了实际绘制像素上。因此,增加粒子数量将大大降低帧速率。我试过g.drawline(x,y,x+1,y)、img.setRGB(x,y,color),通过
我正在尝试编写一个SWT组件,它能够获取并绘制java.awt.BufferedImage的实例.我的问题是SWT的Image和AWT的BufferedImage不兼容:SWT组件无法绘制java.awt.Image,AWT/Swing组件无法绘制org.eclipse.swt.graphics.Image.有几种尝试以其他方式解决这个问题的方法(也可能有一些变化,但基本上有这两种):ConvertbetweenSWTImageandAWTBufferedImageSwing/SWTIntegration他们都有缺点,没有达到我的预期:第一种方法,转换SWTImage到Buffered
我正在尝试计算一个多边形,该多边形围绕连接多个点的线(例如GPX轨道)。下图显示了一个示例,轨道为红线,所需的多边形为蓝色。为简化起见,红点由x和y表示-而不是纬度/经度。如果我只有指定路径的三个点的列表,我该如何计算这样的环境(浅蓝色多边形)?部分解决方案(例如,只有两点)或有关为此类计算提供算法的数学库(Java中)的提示也会让我向前迈出一步。进一步的假设:轨道无交叉路口。更新:使用Rogach和xan提出的方法,如果线之间的角度小于90度或大于270度,我会遇到一些问题:如您所见,多边形与自身相交,这会导致严重的问题。从我的角度来看,使用java.awt.geom.Area是更好
因此,我正在创建一个侧边滚动条,并尝试在另一张图片的点上绘制一张图片。我有5000x500的背景图片,假设我想在500、50的背景图片处绘制一张25x25的图片。我该怎么做?到目前为止我已经尝试过:Coinsc=newCoins(img.getWidth(this)-4500,img.getHeight(this)-250);但这只是在帧的500、50处绘制它,因此当我向右滚动时它会在图像上“移动”。我希望在向右滚动一次后,硬币图像在图像的500,50处绘制,仍然是帧的495,50。我也可以使用背景图像的getGraphics并将较小的图像绘制到它上面,但我认为因为我在创建对象期间设置
有谁知道在控制台模式下“渲染”地block或至少是树(在控制台中绘制)的方法吗?通过以ASCII模式绘制一些图形,我将能够在一个非常长的过程结束时渲染小图,以便对收集到过程中的一些统计数据有一个令人讨厌和有趣的View。我很高兴发现一个库可以做到这一点,我会保持该过程100%java,没有shell-hack或第三方软件。--编辑@lbalazscs和@Fortega做出了有趣的回答,但我的问题的背景是了解是否存在这样的库,我将添加一些我第一次错过的细节:输出应该能够显示树、二叉树(linkedby@lbalazscshere),但也简单的图形,例如条形图等。我会让这个问题暂时“无人回
不好意思的问题标题,很抱歉,我对此错误的原因感到困惑,并且不知道如何表达该问题。我正在学习基本的Swing,并从在线书籍《Java编程简介》中学习thisexercise。我没有遵循这封信的指示,而是尝试这样做:有一个显示两个骰子的可视表示的窗口当您单击其中一个骰子时,它会“滚动”并显示新值我的实现:一个非常基本的JDie对象,它扩展了JPanel覆盖paintComponent方法以绘制模具表示每次更改值都会更改模具颜色,仅用于视觉提示添加了一个监听器,以在按下鼠标然后“掷出”骰子时重绘(repaint)该错误非常具体:运行DieTest主方法调整窗口大小以适合两个模具单击第二个骰子
我在尝试查找从多边形上的给定顶点可见的多边形上的所有顶点时遇到问题。到目前为止,我所写的内容只取得了有限的成功。我可以生成光线到可见顶点,但前提是我的原点不在顶点上,使用以下方法:privateArrayListgetGloballyVisible(Point2Dorigin,ArrayListpolys){ArrayListvisible=newArrayList();for(Polygontarget:polys){ArrayListtargetVisibleLines=getVisiblePointsOnPolygon(origin,target);ArrayListsubTar