跳一跳是个伪3D游戏,观察者固定在斜上45度,视角不能旋转。涉及到的具体问题是,三维空间中的抛物线如何在二维屏幕中绘制出来。
1.2 绕过问题
在解决跳一跳中的这个问题过程中,我再次发现同学们的一个不良习惯,就是绕过问题。
很多年来,我发现同学们在没有确定否定论证的情况下,习惯于”绕过问题”。你如果问,能”确定解决么”,他说“不能”。你如果问,“确定不能解决么”,他也说“不能”。就是打算换条路,在这条路还没有走到死胡同的情况下。“也许另一条路行吧”,这样的心理,伴随着“也许这条路不行吧”做出绕路的决定。在大一点的颗粒度中如此,在以几分钟为单位的任务中,也是这样。这些小任务中的犹豫、模棱两可,导致不敢怼人,被怼时也只有情绪没有反击的逻辑。
在一起工作时,我经常希望同学们能有”断然的决心”去做实验,或者去否定。”不知道”的状态不可取,在”不知道”的情况下冒然决定退出,就和冒然决定进攻,一样地不负责任。
什么情况下能确定可以退出这条技术路线呢?花了足够的时间,或者所剩时间不多,有时是可接受的理由。这是出于项目的时间成本和截止期限考虑。
还有时同学们对导师、专家、上级工程师的否定非常恼火,”你怎么就知道不行”。这个问题的答案和决定退出某条技术践线的答案是相同的。就是
技术可行性。当确认技术没有可行性时,就是放弃的时机。如果在开始之前就论证了技术不可行,那么就没有必要开始,也就避免了浪费时间。
所谓技术不可行,不是具体的“你”做不出来,而是要说明沿着这条技术路线,任何人也做不出来。这就是要证明导师、上级工程师部署的技术路线是错的。至于任务本身,永远是正确的。
在本次作业中,我感到有必要用一个实例展示,什么样的才是技术不可行,以及在失败的任务中,我们能留下些什么。
2.涉及的概念
2.1 投影
有同学认为,抛物线,画出来不就完了么。水平初速度不变,垂直方向上有重力加速度。那是现实世界,在软件实现中还需要计算机图形学。
如下图,现实世界三维空间中一只真实的手把一张纸按在一本真实的书上。从书的近大远小中我们可以看出,整张照片存在透视失真,所以纸张也是近大远小的,抛物线当然也是。
但是人类可以借由脑补想像出这张纸上画了一条抛物线,不是近大远小的,而是如下图这样。
这是三维空间中抛物线做俯视投影的