【问题标题】:Coastline fractal proportions海岸线分形比例
【发布时间】:2012-09-29 20:14:16
【问题描述】:

我正在一个一个宽的窗口上制作海岸线分形,我想制作下图所示的第一个,但是,我无法确定使用哪个 x 和 y 坐标来制作角度形成 90 度并且仍然适合屏幕,我不需要任何代码,我只是想知道要使用哪个 x 和 y 坐标。谢谢!

积分:
第 1 点:(0,0.5)
第二点:(0.25,0.75)
第三点:(0.75,0)
第 4 点:(1,0.5)

我的工作(虽然有时很乱而且难以辨认):


从图片上看,第一个点和最后一个点的 y 值都是 0.5。由于观察窗是一个,因此您将其分成 4 个部分,每个部分的长度为 0.25。根据图像,如果在 y=0.5 处绘制水平线形成的三角形是等腰三角形。因此,您解决了:sin(45)=x/0.5。

【问题讨论】:

  • 这看起来是一个递归的工作。你用的是什么图形库?摇摆? AWT? SWT?这将对答案产生影响。如果是 Swing,请考虑使用绘图所在的组件或 BufferedImage 的尺寸,并以此为基础设置 x 和 y。
  • 至于角度,无非就是三角学。在尝试提交给定任意两点的代码之前,我会先在纸上解决它,我可以找出角度和线段。你在哪里卡住了?
  • @HovercraftFullOfEels 我同时使用 AWT 和 Swing,窗口是 1 x 1。我刚刚算出了最佳的 x 和 y 坐标,我将在下面发布。
  • @HovercraftFullOfEels 我用过三角,但没有成功
  • ??... and the window is 1 by 1??这是什么意思?

标签: java fractals


【解决方案1】:

回复"x and y coordinates are doubles in between 0 and 1"

然后您需要从模型(构成分形的点集)和视图(GUI 显示)转换。模型将从 0 变为 1,视图将从 0 变为图形窗口的宽度。将模型乘以某个比例因子的简单线性变换将起作用。

【讨论】:

    【解决方案2】:

    您似乎想将一个抽象坐标系映射到您的屏幕。

    假设您的端点(在任意坐标中)是 (0, 0) 和 (1, 0)。然后,在这个系统中,最左边的数字的点将是 (0, 0), (1/4, sqrt(2)/4), (1/2, 0), (3/4, -sqrt(2 )/4) 和 (1, 0)。

    其他图表是通过某种方法计算的。听起来您的问题是集中在将其安装到屏幕上,所以我将继续。适配屏幕的方法是一样的。

    从那里,你有一个屏幕坐标系。每个点都转换到屏幕上。假设您有一个 1000 x 1000 的屏幕,屏幕坐标 (0, 0) 在左上角。如果你想占据整个屏幕,那么你可以这样做:

    • 翻转 y 坐标(+y 在屏幕上向下)
    • 为任意坐标确定 x 和 y 的完整范围(x 为 1,y 为 sqrt(2)/2)
    • x 值乘以 1000,y 值乘以 2000 / sqrt(2) 以扩大到屏幕。
    • 从 y 值中减去 500 以使图像在 y 方向居中。

    【讨论】:

      猜你喜欢
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      • 2020-12-22
      • 2019-01-21
      相关资源
      最近更新 更多