【发布时间】:2016-02-02 19:41:55
【问题描述】:
我有一个程序,我需要在其中递归地从父行生成新行,以便它最终看起来像一棵树。我遇到的问题是我不知道如何使子线以 A 角制作,其中 A 相对于其父线在 10 到 80 度或 100 到 170 度之间。
我目前的算法步骤如下:
- 从父节点的 (x1, y1) 点中选择一个小于父节点总长度的随机长度(称为 newBranchDist)(使用距离公式)
- 使用 Math.Cos(A) 乘以 newBranchDist 查找新行的 x 坐标
- 使用 Math.Sin(A) 乘以 newBranchDist 找到新行的 y 坐标
- 现在我们得到了直线上一个点的 (x1, y1) 坐标。
此时,我需要计算 (x2, y2) 相对于父线的角度为 A。有什么建议吗?
编辑:另外,我的程序将随机选择父线的哪一侧来绘制新线。所以,有时是角度 A,有时是 A + 90。
【问题讨论】:
-
我看不到任何关于随机化角度的内容。您需要计算它还是给定间隔内的“任何”角度?此外,您可能会发布到目前为止所拥有的算法的 short 示例。有时,它可以帮助理解问题。第 2 行是否会从与原行相同的点开始?
-
这似乎更像是一个几何问题而不是编程问题。目前还不完全清楚您要做什么。
-
@MattBurland - 问题似乎是关于找出子分支的算法,我认为混淆正是因为 OP 对如何生成这样的算法感到困惑。他似乎在程序化思考,完全错过了如何使用 OO 思维来解决问题。但我认为你是对的,它有一个沉重的几何组件。可能是几何组件让他脱离了面向对象,让他只考虑程序。
-
嗨 Reuben,请注意,在这里给出答案的专业人士渴望获得声誉积分。如果您对有用的答案进行投票,那将是非常好的 - 如果一个答案帮助您解决了您的问题 - 您应该将其标记为已接受的答案,这将向其他人表明该问题已解决。谢谢!
-
@Shnugo 是的,我一直在计划。我想在给出反馈之前尝试让算法正常工作,但不幸的是我还不能让它工作。事实上,我改变了我只需要递归生成 90 度角的线,这样我就不必在我的算法中处理三角函数了。