1

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

海岸线分形

点数:
第 1 点:(0,0.5)
第 2 点:(0.25,0.75)
第 3 点:(0.75,0)
第 4 点:(1,0.5)

我的工作(虽然有时混乱且难以辨认):在此处输入图像描述


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

4

2 回答 2

0

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

假设您的端点(在任意坐标中)是 (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 方向居中。
于 2012-09-29T20:39:57.430 回答
0

重新"x and y coordinates are doubles in between 0 and 1"

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

于 2012-09-29T20:29:26.680 回答