0

目前我正在绘制一条由 1200...1500 条直线微线组成的 3D 曲线,这些直线由 3D 点 (x,y,z) 阵列引导,但无论使用何种技术 (Adobe Flash, Three.js),渲染都会有点慢。

曲线是一种 3D 弧线,末端有一个 180 度的循环,所以我认为在曲线更平滑和可预测的地方跳过一些点会加快渲染速度。

您能否建议一些算法来确定特定的 3D 曲线与直线的接近程度?

更新

我试图让 Three.js 将这些点渲染为一条曲线,它的运行速度非常快。但是这条曲线的不同部分应该有不同的颜色,所以我必须把它画成一堆单独的线,我能做的唯一加速它的就是跳过线接近的区域中的每一秒点直线。

我不能使用 OpenGL (WebGL),因为并非所有浏览器都支持它。

4

1 回答 1

0

三点与一条直线之间的差异可以通过中间一个点到其他两个点所在的直线的距离来量化。可能沿着从任一端点到中间的线的两个长度,将距离除以两者并将两个结果相加是将其转换为单个数字的最简单方法。

所以:

  • 随着中点越来越接近线,数字会下降;
  • 随着线段变长,中点的变化需要成比例地更加极端;和
  • 更大的局部斜率(好像中间点非常靠近两端)会产生更大的误差。

您可以通过获取从直线上的任何点到该位置的向量,使用点积来计算其中有多少是沿着直线移动,然后从总数中减去,从而获得从一个位置到直线的距离。如果您不首先沿线对向量进行归一化,您最终会乘以它的平方,因此不需要对该帐户进行平方根运算。然后对于隐含长度计算,您可以将所有这些保留并比较为平方。

于 2013-05-29T16:48:29.020 回答