Tag: 多边形

Java3d读取3d对象的每个多边形

我正在使用Java3d( VERSION 1.6 ),我试图从任何对象读取所有多边形。 我使用以下代码加载了一个对象: private BranchGroup loadObj(String p) { BranchGroup objRoot = new BranchGroup(); TransformGroup tg = new TransformGroup(); Transform3D t3d = new Transform3D(); t3d.setScale(0.3); Matrix4d matrix = new Matrix4d(); t3d.get(matrix); try { Scene s = null; ObjectFile f = new ObjectFile (); String basepath = new File(p).getAbsolutePath(); System.out.println(basepath); f.setBasePath(basepath); f.setFlags (0); s = […]

从透明png精灵制作多边形的算法

说,我有一个游戏对象的精灵,它是一个透明的png图像。 我想从这个图像创建一个包含我的游戏对象的多边形。 我很确定它有一个现有的算法,但我还没有找到。 我希望有类似的东西: public static Polygon getPolygon(BufferedImage sprite) { // get coordinates of all points for polygon return polygon; }

找到两个3D多边形的交集

也就是3D中的多边形裁剪算法 又找到2个碰撞多边形之间的碰撞流形 大多数用于多边形裁剪的算法都针对2D进行了详细描述,并且描述为可扩展到3D但没有细节。 例如sutherland-hodgman裁剪算法 我无法在互联网上找到任何3D实现或伪代码,我现在在这里问(并试图回答我自己的问题) 该算法将采用两种形状,如下所示: 并输出两个形状的交集,如下所示: 请注意,尽管Sutherland-Hodgman算法找到了两个多边形的交集,但它(和大多数其他多边形)在剪切多边形和剪切多边形之间进行了区分。 修剪的多边形可以是凹的或凸的,但是修剪的形状必须是凸的。 然而,我在扩展到3D时的实现要求两个形状都是凸的 ,这表明它不是真正的3D sutherland-hodgman算法和其他答案(使用任何算法)解除这个要求将非常感激

确定多边形是否在地图边界内

我有一个很大的多边形列表(包括谷歌地图多边形选项),我想在绘制它们之前检查它们是否在屏幕范围内。 如何确定多边形是否在屏幕边界内。 像这样的东西: List polygons = getPolygons(); LatLngBounds bounds = map.getProjection().getVisibleRegion().latLngBounds; for (int l = 1; l <= polygons.size(); l++) { if (bounds.Contains(polygons.get(l))) { map.addPolygon(polygons.get(l)); } }

计算移动球与移动线/多边形碰撞的时间(2D)

我有一个多边形,里面是一个移动的球。 如果球击中边界,球应该会反弹。 我当前的’解决方案’:我将多边形分成几行,并计算球何时击中移动线 所有变量: a = length of a b = length of b c = length of c ax = x position of A ay = y position of A bx = x position of B by = y position of B cx = x position of C cy = y position of C […]

java – 将adiacent矩形合并为多​​边形

我有一组具有相同宽度和高度的矩形,并且始终是adiacent。 我知道所有顶点的位置,每个顶点只有4个(因为是正方形)。 这张图片可以解释这个: 如果有任何差距,如果算法将“填补”差距,则可以。 我搜索了很多,找不到任何好的东西。我需要一个简单的算法,它不一定非常有效。让我们说我们得到了7个矩形,就像图像中的第二个多边形示例一样。 如果我首先将1与2合并,然后将我们的新多边形与3合并,那么就可以了,依此类推,它不必那么快,因为最多会有50个矩形。

具有双坐标的多边形

我有一些关于具有Double类型点的多边形的问题…我需要做的是,给定点,创建多边形,然后测试1个具体点是否在多边形内部。 所以我知道在Java中有一个叫做Polygon的类,就像这样使用:(三角形) int valoresX[] = { 100, 150, 200 }; int valoresY[] = { 100, 200, 100 }; int n = valoresX.length; Polygon city= new Polygon(valoresX,valoresY,n); 但我的“多边形”必须是“双”类型,而不是“int”(简单示例) Double valoresX[] = { 1000.10, 150.10, 200.10 }; Double valoresY[] = { 100.10, 200.10, 100.10 }; 在我的项目中,我真的不需要在applet或类似物上绘制它,我只需要计算点是否在内部。 所以我的问题是: 有没有办法用双coordenates做多边形,如果点(double)在多边形内部,是否可以进行calcultate? 谢谢大家! Shudy

在Java中旋转多边形

我正在编写的程序在屏幕上绘制多个星星,并为它们提供随机的方向和速度。 星星会从面板的边缘反弹并留在里面。 我需要让星星在移动时旋转。 我尝试了很多东西,我无法弄明白。 下面是我用来绘制星星并移动它们的代码。 附加信息: – 星星在一个名为“星星”的集合中 – 我写了两个类,“Star”和“MyJPanel” 设点:(星级) for (double current = 0; current < nPoints; current += 1) { i = (int)current; int[] X = new int[nPoints * 2]; int[] Y = new int[nPoints * 2]; cosX = -(Math.cos(current*((2*Math.PI)/(nPoints)))*radius[i % 2]); sinY = -(Math.sin(current*((2*Math.PI)/(nPoints)))*radius[i % 2]); X[i] = (int) cosX+x; Y[i] […]

如何在Java中将转换应用于Polygon对象

我做了一个变换并用它渲染了一个Polygon对象(网格是Polygon类型): at.setToTranslation(gameObject.position.x, gameObject.position.y); at.rotate(Math.toRadians(rotation)); at.scale(scale, scale); g2d.setTransform(at); g2d.fillPolygon(mesh); 现在我想返回我渲染的确切网格,以便我可以对它进行碰撞检查。 唯一的问题是,如果我返回网格,它返回未转换的网格。 所以我尝试将变换设置为Polygon对象(网格),如下所示: mesh = (Polygon)at.createTransformedShape(mesh); 但不幸的是at.createTransformedShape()返回一个只能转换为Path2D.Double的Shape。 所以,如果有人知道如何将Path2D.Double转换为Polygon或知道另一种方式来设置网格的转换请帮助。

Java Graphics.fillPolygon:如何渲染右边和底边?

绘制多边形时,Java2D会留下右边和底边。 我明白为什么这样做了。 但是,我想绘制一些包含这些边缘的东西。 我fillPolygon一件事是跟随具有相同坐标的fillPolygon ,但这似乎留下了空白。 (见底部的小三角形图像。)有两种可能性,但我不清楚哪一种。 要启用抗锯齿,我这样做: renderHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); renderHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g2d.setRenderingHints(renderHints); 一种可能性是在α通道上没有进行抗锯齿处理,因此间隙是由于过度绘制引起的。 在这种情况下,如果alpha通道是抗锯齿的,那么边缘将正确邻接。 另一种可能性是这里只有一个差距。 我怎样才能解决这个问题? 另外,我不确定,但看起来多边形轮廓实际上可能太大了。 也就是说,它可能比我想要包括的右边和下边更远。 谢谢。 – 更新 – 基于Hovercraft Full of Eels的一个非常好的建议,我做了一个可编辑的例子: import java.awt.Color; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JOptionPane; public class polygon { private static final int WIDTH = 20; public […]