我正在寻找一个算法(或算法的名称),它将在一个线段上找到一个点,如果存在这样一个点,那就是距离不在线段上的另一个点一定距离.
即,存在三个点A,B,C ; 和可能的第四d.其中AB构成线段,而点C是线段AB的某处OFF的另一点.找到点D,如果存在这样的点,则出现在距离点C给定距离的线段AB上.distance
我正在使用Java Polygon对象,它存储一组点,这些点定义构成形状的线.
我如何选择其中一条线上的随机点?Polygon类中是否有任何方法可以使这更容易?
为了澄清,我想从多边形边缘的任何位置选择一个随机点,而不是从定义顶点的集合中选择一个随机点.
我试图复制这里发现的小程序作为练习的一部分.小程序正在使用Fortune的算法来生成两者; Voronoi图和Delaunay三角剖分.我只对在平面中生成Delaunay三角剖分感兴趣,因此,将使用增量算法,即一次添加1个点.我打算在添加采样点时显示在每个阶段生成的三角形.
我正在使用SwingWorker类来创建包含算法的Triangulate类的实例.我在for循环中调用triangulate方法,当单击GUI上的开始按钮时,它会遍历一组采样点.
这是代码:
JButton startButton = new JButton("Start");
startButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
SwingWorker<List<Triangle>, Triangle> worker = new SwingWorker<List<Triangle>, Triangle>() {
@Override
protected List<Triangle> doInBackground() throws Exception {
Triangulate dt = new Triangulate(drawingPanel.pointsList());
dt.preTriangulate(); //Set-up a bounding triangle and obtain a random permutation of the points
List<PlanarPoint> pointsList = dt.pointsList();
for (int i = 0; i < pointsList.size(); i++) {
PlanarPoint sample = pointsList.get(i);
dt.triangulate(sample);
List<Triangle> list = dt.trianglesList(); //Obtaining the list of triangles …Run Code Online (Sandbox Code Playgroud) 我想计算2D中一组Voronoi区域的面积的平均值和标准偏差(如果区域延伸到无穷大,我只是将其剪切到单位正方形).
但是,如果可能的话,我想在不明确计算Voronoi区域的情况下从Delaunay Triangulation进行计算?这甚至是可能的,还是明确地计算Voronoi图更好?
我在2D中有一组点(x和y的坐标),现在我需要丢弃对我没有意义的所有点,我的意思是我只对这个点的区域感兴趣跟踪.
总之,这个

它应该产生这个

问题:在这一点上,哪种算法可以做这种过滤?
线(x1,y1),(x2,y2)和(x3,y3),(x4,y4)是垂直的.我有点(x1,y1),(x2,y2),(x3,y3)的坐标和线(x3,y3),(x4,y4)的像素长度.我需要找到点(x4,y4)的坐标.请给我一个伪代码来计算(x4,y4).谢谢你提前.

解决了.多亏了数学家1975
x1 = 200
y1 = 400
x2 = 700
y2 = 200
dist = 20
x3 = (x1 + x2) / 2
y3 = (y1 + y2) / 2
a = y1 - y2
b = x2 - x1
norm = sqrt(a*a + b*b)
a = a / norm
b = b / norm
x4 = x3 + a * dist
y4 = y3 + b * dist
Run Code Online (Sandbox Code Playgroud) 我不想用绘制的最后一个多边形的值覆盖多个多边形的重叠区域,而是绘制这些多边形的平均值。这在Python PIL中可能吗?
示例中的重叠像素的值应为1.5。
在完整的工作程序中,我必须在非常大的网格上绘制约100000个多边形(可能相交或不相交),这就是我使用PIL而不是Numpy的原因。
from PIL import Image, ImageDraw
import numpy as np
import matplotlib.pyplot as plt
img = Image.new('F', (50, 50), 0)
ImageDraw.Draw(img).polygon([(20, 20), (20, 40), (40, 30), (30, 20)],
fill=1., outline=None)
ImageDraw.Draw(img).polygon([(10, 5), (10, 25), (25, 25), (25, 10)],
fill=2., outline=None)
myimg = np.ma.masked_equal(np.array(img), 0.)
plt.imshow(myimg, interpolation="None")
plt.colorbar()
plt.show()
Run Code Online (Sandbox Code Playgroud)

python numpy polygon computational-geometry python-imaging-library
我试图通过进行一系列边缘折叠来实现网格简化算法.目前,我正在浏览每个三角形,然后折叠最短的边缘,算法是稳定的(不会超出界限).但超越一点,它开始创造破碎(洞)的文物.确定边缘是否可折叠的正确方法是什么,这样才不会导致非流形伪影(或网格)?
注意:我使用半边数据结构.另外,我不想使用任何外部库,如OpenMesh或CGAL.我有理由不使用它们.
鉴于此代码:
{
( 256 64 16 ) ( 256 64 0 ) ( 256 0 16 ) mmetal1_2 0 0 0 1 1
( 0 0 0 ) ( 0 64 0 ) ( 0 0 16 ) mmetal1_2 0 0 0 1 1
( 64 256 16 ) ( 0 256 16 ) ( 64 256 0 ) mmetal1_2 0 0 0 1 1
( 0 0 0 ) ( 0 0 16 ) ( 64 0 0 ) …Run Code Online (Sandbox Code Playgroud) 我想将矩形区域的大小调整为50%Rect1 w1 x h1,我不想将宽度或高度直接调整为一半,因为这给了我25%的面积,我需要的是找到一个等效的矩形,纵横比,面积等于原件的%50.因此我需要找到矩形Rect2的h2 x w2.
我有Rect1:w1,h1,a1我还有Rect2:a2
我需要w2和h2(保持Rect1的宽高比)