Tag: 几何

Delaunay对带有孔的二维多边形进行三角测量

我想对带有孔的复杂(但不是自相交)多边形进行三角测量,以便生成的三角形全部位于多边形内部,完全覆盖该多边形,并遵守Delaunay三角形规则。 显然,我可以为所有点构建Delaunay三角剖分,但是我担心多边形的某些边缘不会被包含在产生的三角剖分中。 那么,这样的三角测量是否可能? 如果是,我该怎么办? 以防万一 – 我需要它来构造多边形中轴的近似值(我希望它可以通过连接所得三角形的所有圆周点来完成)。

将自相交Path2D分成几个非自相交路径的算法?

我需要摆脱形状中的自相交。 形状由点arrays构成,因此该形状的所有段都是线。 ( 只有线条,没有曲线和弧线) 以前,我尝试从那些点创建Path2D,从中构造一个Area,然后使用它的PathIterator我创建了几个Path2D,它们不知何故是前一个路径的子路径,因此自相交消失了。 但这对某些路径不起作用 – 自我交叉仍然存在。 所以你能指点我能在哪些地方找到做类似事情的好算法吗? 编辑:我在任何地方都找不到任何有用的东西,所以我编写了自己的算法。 看到答案。

在凹/凸多边形内找到有界矩形

我正在寻找一种在凹面或凸面多边形内找到轴对齐矩形的方法。 我一直在寻找网络,我能找到的最接近的解决方案只适合凸多边形,而不是凹多边形。 例如 – 在多边形内找到轴对齐的矩形 说实话,我不是一个伟大的数学专家,所以我宁愿找到代码示例或代码库,但我想我可以自己处理一些数学,或者找人来帮助我。 如果解决方案也可以在Java中,那将是非常好的,但也许我太贪心了:P 编辑 :回应罗素的评论,我正在添加更多信息。 有界矩形应尽可能大。 矩形旨在包含其中的文本。 最多1到4个字,支持文本换行。 因此,如果它太薄,我会将文本垂直放置而不是水平放置。 所以对于宽高比,我想它需要足够包含1-4个单词垂直或水平与自动换行。 如果矩形很小,我可以调整文本大小,但最好是文本尽可能大。 另一个很好的要求是,如果多边形的一般方向是对角线,并且当对角线方向对齐时文本会更好,那么矩形不一定与轴对齐,而是与多边形的对角线。 我想这个要求让这个变得非常棘手,但是如果你们认为它可能那么它会很棒! 我想我现在已经涵盖了所有要求。 :P 谢谢!

如何将一组矩形分组到连接区域的“岛屿”中?

问题 我有一个java.awt.Rectangle数组。 对于那些不熟悉这个类的人来说,重要的信息是它们提供了一个.intersects(Rectangle b)函数。 我想编写一个函数来获取这个Rectangle数组,并将其分解为连接的矩形组。 让我们举例说,这些是我的矩形(构造函数接受参数x , y , width , height ): Rectangle[] rects = new Rectangle[] { new Rectangle(0, 0, 4, 2), //A new Rectangle(1, 1, 2, 4), //B new Rectangle(0, 4, 8, 2), //C new Rectangle(6, 0, 2, 2) //D } 快速绘图显示A相交B和B相交C.D不相交。 一个繁琐的ascii艺术作品也完成了这项工作: ┌───────┐ ╔═══╗ │A╔═══╗ │ ║ D ║ └─╫───╫─┘ ╚═══╝ […]

在1轴上旋转四元数?

我有一个由四元数旋转的模型。 我只能设置旋转,我不能添加或减去任何东西。 我需要获取轴的值,然后为它添加一个角度(可能是度数或弧度?),然后再重新添加修改后的四元数。 我怎样才能做到这一点? (在每个轴上回答)。

检测Hough圈子android

我正在尝试使用android检测圈子。 我成功地实现了检测线算法,但在尝试绘制hough circle algoritm时没有显示任何内容。 这是我的代码: Mat thresholdImage = new Mat(getFrameHeight() + getFrameHeight() / 2, getFrameWidth(), CvType.CV_8UC1); mYuv.put(0, 0, data); Imgproc.cvtColor(mYuv, destination, Imgproc.COLOR_YUV420sp2RGB, 4); Imgproc.cvtColor(destination, thresholdImage, Imgproc.COLOR_RGB2GRAY, 4); Imgproc.GaussianBlur(thresholdImage, thresholdImage, new Size(9, 9), 2, 2 ); Mat circles = new Mat(); Imgproc.HoughCircles(thresholdImage, circles, Imgproc.CV_HOUGH_GRADIENT, 1d, (double)thresholdImage.height()/70, 200d, 100d); Log.w(“circles”, circles.cols()+””); for (int x = 0; x […]

在jframe中创建java的正方形,矩形,三角形

我有一个Java的问题因为我明白不会来Java中绘制几何图形,代码和以下你可以帮助我吗? 这是代码: public class Gioco { public static void main (String args []) { PaintRect(); } public static void PaintRect() { g.drawRect(100,100,300,300); g.drawLine(100,100,100,100); g.setBackground(Color.BLACK); System.out.println(“Trasut”); credits.setText(“Kitebbiv”); credits.setBackground(null); credits.setEditable(false); credits.setFocusable(false); credits.setBounds(0,0,100,100); credits.setForeground(Color.BLACK); panel.add(credits); g.getPaint(); } 如何创建三角形,正方形和矩形的JFrame ? 更正我的代码谢谢

随机圈JAVA

我正在尝试创建一个GUI,它将获取要绘制的圆圈数,并在随机位置/大小的drawPanel中绘制它们。 在我的actionListener上,当我尝试绘制圆圈时,它在我的drawOval上给了我红线 第一节课: import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JTextArea; /** * * @author Chris * */ public class CirclesPanel extends JPanel{ private JButton draw, clear; private JTextArea textArea; private JPanel panel, drawPanel, buttonPanel; private int […]

Java:按指定的度数值旋转另一个

我试图在java中围绕另一个具有指定度数值的2D点旋转,在这种情况下简单地围绕点(0,0)在90度。 方法: public void rotateAround(Point center, double angle) { x = center.x + (Math.cos(Math.toRadians(angle)) * (x – center.x) – Math.sin(Math.toRadians(angle)) * (y – center.y)); y = center.y + (Math.sin(Math.toRadians(angle)) * (x – center.x) + Math.cos(Math.toRadians(angle)) * (y – center.y)); } 预期为(3,0):X = 0,Y = -3 返回(3,0):X = 1.8369701987210297E-16,Y = 1.8369701987210297E-16 预期为(0,-10):X = -10,Y = 0 […]

Java:计算三角形的面积

import java.lang.Math; import java.awt.* public class Triangle implements Shape { java.awt.Point a; java.awt.Point b; java.awt.Point c; public Triangle(java.awt.Point a, java.awt.Point b, java.awt.Point c) { this.a = a; this.b = b; this.c = c; } public double getArea( ) { double area; return area = Math.abs((ac)*(ba)-(ab)*(ca)); } … http://sofzh.miximages.com/java/fe56529cdaaaa9bb2f71c1ad8a1a454f.png < – 面积公式 我试图从2D笛卡尔坐标系中计算3点(x,y)的三角形面积。 我假设我的上面的公式正确地产生了三角形的区域(如果没有,请纠正我),但我的编译器说“运算符 – 不能应用于java.awt.Point,java.awt.Point”。 […]