【问题标题】:Drawing 2D curves in Android canvas?在 Android 画布中绘制 2D 曲线?
【发布时间】:2012-12-20 21:43:26
【问题描述】:

我们如何在Canvas 中绘制这样的二维曲线?

所有相似的曲线都有mathematical formulafractals,但画布只有一些绘制简单形状的方法,如三角形或矩形。我知道大多数曲线都可以划分为更简单的形状,例如绘制Heart Curve,但是有没有更简单的方法可以用画布绘制 2D 曲线?

【问题讨论】:

  • 你不能只在画布上画点,即 Canvas.drawPoints(...) 除非你没有提到另一个要求。
  • @MorrisonChang 看来这不是画分形的好方法。你同意吗?

标签: android 2d android-canvas curve


【解决方案1】:

使用 Path 对象,您可以在 Canvas 中制作一些更精美的线条和曲线。只是随机发现了这两个问题;我希望他们可以为您指明正确的方向,因为我个人没有使用过它们。

Draw a perfect curve connecting three points

Bezier curve and canvas

【讨论】:

  • 更正:我已经多次使用 Path 对象,但不是用于曲线,这就是我的意思。 :) 与非常简单的 canvas.DrawLine(...) 相比,Path 非常适合做更复杂的线条
  • 看来画分形不是个好办法。你同意吗?
  • 您打算如何绘制分形?如果您只提取数据点,那么上面莫里森的建议可能是最好的。您是在寻找实时运动或动画还是只是分形图像?如果是第一个,您可能需要考虑 SurfaceView 或 OpenGL 中的画布。如果是后者,我不明白为什么 Path 不起作用,因为您可以将多个路径和曲线指令添加到单个 Path 对象中。
【解决方案2】:

如果您查看如何绘制一般的 2D 曲线,您将绘制点或线,并且它看起来很平滑。

您的问题有两种参数形式和一种分形形式。一切都可以用线和点来绘制。参数形式可以直接通过您问题中的算法完成,也可以转换为更通用的形式,例如@leenephi 提到的贝塞尔曲线

大多数时候,用于生成分形的方程/算法使用线、Koch 雪花或点、Mandelbrot 集。如果您真正了解如何生成它们,您会发现分形不是关于绘制“曲线”,而是更多关于过程(递归)和结果(自相似性)。

【讨论】:

    【解决方案3】:

    您必须通过更简单的图元(例如短线段)来近似曲线。

    【讨论】:

      猜你喜欢
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 2021-10-30
      • 1970-01-01
      相关资源
      最近更新 更多