问题标签 [geometry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
4505 浏览

geometry - 如何将由小正方形组成的区域划分为更大的矩形?

我会去哪里寻找将 0 或 1 的二维网格值作为输入的算法,然后在其中识别所有可能的非重叠矩形?

在更实际的解释中:我正在绘制一个由多个正方形表示的网格,并且我希望找到一种方法将尽可能多的相邻正方形组合成矩形,以减少骑自行车所花费的时间每个正方形并绘制它。

不需要最高效率,速度更重要。

附录:显然我正在寻找的似乎是一种称为 Tesselation 的技术。现在我只需要为这个具体案例找到一个好的描述。

附录2:“1”方格的边界将是不规则的,在某些情况下甚至没有连接,因为“1”方格的分布将是完全随机的。我需要识别这些不规则的形状并将其分成规则的矩形。

正确答案:为了在速度和效率之间取得最佳平衡,最好使用网格数据来填充四叉树,每个节点的状态值为空/部分填充/填充。

0 投票
3 回答
1550 浏览

java - 如何根据鼠标坐标(JavaFX)沿着围绕固定中心的圆形轨道定位节点?

我试图进入一些基本的 JavaFX 游戏开发,但我对一些循环数学感到困惑。

我在 (x:250, y:250) 有一个半径为 50 的圆。

我的目标是根据鼠标的位置在上述圆圈的圆周上制作一个较小的圆圈。

我感到困惑的是坐标空间和它背后的Trig。

我的问题来自屏幕上的 X/Y 空间未以 0,0 为中心。但屏幕左上角是 0,0,右下角是 500,500。

我的计算是:

我让应用程序打印出我在移动鼠标时计算出的角度(angle_deg),我的输出如下:

当鼠标(以度为单位逆时针移动)时:

  • 在圆的正上方并与中心水平对齐,角度为-0
  • 向左垂直居中,角度为-90
  • 在圆的正下方并与中心水平对齐,角度为 0
  • 向右垂直居中,角度为 90

那么,我该怎么做才能使其成为 0、90、180、270?

我知道它一定是小东西,但我就是想不出它是什么......

感谢您的帮助(不,这不是任务)

0 投票
5 回答
441 浏览

3d - 将变换应用于 3D 模型 - 法线 pb

我正在尝试将转换应用于 STL 文件中的 3D 对象(不创建结构化网格对象)。以下是我的操作步骤:我在 STL 文件中一一读取法线和面信息,将我的变换应用于每个顶点和面法线,然后将新的计算值写回另一个 STL 文件中。生成的文件中的顶点正常,但我的法线错误。似乎我不能像对顶点一样将变换应用于法线。这怎么可能??

0 投票
1 回答
29179 浏览

sql-server - 如何在 MS SQL Server 2008 中将几何数据转换为地理数据?

如何在 MS SQL Server 2008 中将一些几何数据转换为地理数据?

0 投票
4 回答
6617 浏览

graphics - Direct3D 几何:来自两个向量的旋转矩阵

给定两个 3D 向量 A 和 B,我需要导出一个从 A 旋转到 B 的旋转矩阵。

这就是我想出的:

  1. 从acos (A . B)导出余弦
  2. 从asin导出正弦(|A x B| / (|A| * |B|))
  3. 使用 A x B 作为旋转轴
  4. 使用本页底部附近给出的矩阵(轴角)

除了 0°(我忽略)和 180°(我将其视为特殊情况)的旋转之外,这工作正常。使用 Direct3D 库是否有更优雅的方法来执行此操作?我正在寻找 Direct3D 特定的答案。

编辑:删除了 acos 和 asin(参见Hugh Allen 的帖子

0 投票
6 回答
2025 浏览

c++ - 计算几个链接矩形周围的边界

我正在做一个项目,我需要在一组矩形周围创建一个边界。

让我们以这张图片为例来说明我想要完成的事情。

编辑:无法使图像标签正常工作,所以这里是完整链接: http ://www.flickr.com/photos/21093416@N04/3029621742/

我们有矩形 A 和 C,它们通过特殊的链接矩形 B 链接。您可以将其视为图中的两个节点 (A,C) 和它们之间的边 (B)。这意味着矩形以下列方式具有彼此的指针:A->B、A<-B->C、C->B

每个矩形有四个顶点存储在一个数组中,其中索引 0 位于左下角,索引 3 位于右下角。

我想“遍历”这个链接结构并计算构成它周围边界(红线)的顶点。关于如何实现这一点,我已经有了一些小想法,但想知道你们中的一些更倾向于数学的人是否有一些巧妙的技巧。

我在这里发布这个的原因只是有人可能以前解决过类似的问题,并且有一些我可以使用的想法。我不希望任何人坐下来仔细思考这个问题。在等待答案的同时,我将并行研究解决方案。

非常感谢任何输入。

0 投票
4 回答
15712 浏览

algorithm - 用子区间查找区间的最小覆盖

假设我有一个区间 (a,b),以及多个子区间 {(a i ,b i )} i,它们的并集是 (a,b)。有没有一种有效的方法来选择仍然覆盖(a,b)的这些子区间的最小基数子集?

0 投票
8 回答
32665 浏览

algorithm - 在最接近给定点的圆上找到点的最佳方法

给定一个点 (pX, pY) 和一个具有已知中心 (cX,cY) 和半径 (r) 的圆,您可以用最短的代码量找到最接近 (pX, pY) ?

我有一些代码可以工作,但它涉及将圆转换为 (x - cX)^2 + (y - cY)^2 = r^2 形式的方程(其中 r 是半径)并使用方程从点 (pX, pY) 到 (cX, cY) 的直线,以创建要求解的二次方程。

一旦我解决了它会做的错误,但这似乎是一个不雅的解决方案。

0 投票
21 回答
301586 浏览

c++ - 确定两个矩形是否相互重叠?

我正在尝试编写一个 C++ 程序,该程序接受用户的以下输入来构造矩形(2 到 5 之间):高度、宽度、x-pos、y-pos。所有这些矩形都将平行于 x 和 y 轴存在,也就是说,它们的所有边都将具有 0 或无穷大的斜率。

我试图实现这个问题中提到的内容,但我运气不佳。

我当前的实现执行以下操作:

但是我不太确定(a)我是否已经正确实现了我链接到的算法,或者我是否确实做了如何解释这个?

有什么建议么?

0 投票
6 回答
15453 浏览

math - 在 3D 空间中的点之间进行插值以形成光滑表面的简单方法

我试图想出一种简单而有效的方法来创建一个与许多给定“样本”点相交的光滑表面。

对于表面上的任何 X、Y 点,我在 4 个方向中的每个方向(X 轴上的下一个较高点和较低点,然后是 Y 轴)中识别出最多 4 个采样点。鉴于这一点,我想要一种方法来计算在 4 个样本点之间插值的 Z 值。

当然,在给定 4 个样本点中任何一个的 X、Y 位置的情况下,该算法应该输出该点的 Z 值。另请注意,样本点可能少于 4 个。

我猜想 4 个样本点的 Z 值的一些函数,以某种方式与样本点的距离成反比,但我不知道如何做到这一点。

任何人都知道一个简单的方法来做到这一点?