【发布时间】:2021-11-09 12:14:27
【问题描述】:
G'day 程序员和数学爱好者。
最近我一直在探索 CAS 图形计算器的功能;特别是,他们如何能够为多变量函数绘制水平曲线和等高线。
在我提出问题之前,请注意几点:
- 我将 Python 的 Pygame 库纯粹用于窗口和图形。当然还有更好的选择,但我真的很想保持我的代码尽可能原始,以努力学习最多。
- 是的,是的。我知道matplotlib!天哪,我见过 100 条关于使用其他支持库的不同建议。虽然它们绝对是令人惊叹且功能强大的工具,但我真的在努力从这里的基础上积累我的知识,以便有朝一日我什至能够发展和支持像它们这样的库。
我的最终目标是让情节看起来像这样平滑: Mathematica Contour Plot Circle E.g.
我目前做的是:
- 在 500x500 点等于 0 的网格上评估函数,具有一定的误差容限(我的是 0.01)。这为我提供了 f(x,y)=0 处水平曲线的粗略近似值。
- 然后我使用一个不可靠的距离函数来找到每个点的最近邻居,并在两者之间绘制一条抗锯齿线。
这两个步骤的结果可以在这里看到:
First Evaluating Valid Grid Points
Then Drawing Lines to Closest Points
由于显而易见的原因,我在图表中存在间隙,下一个最近点始终保持图表不连续。唉!我想到了另一个笨拙的解决方法。除了找到最近的点之外,它实际上会寻找下一个尚未访问过的最近点吗?这个想法很接近,但似乎仍然没有真正接近有效。以下是我实施后的结果:
Slightly Smarter Point Connecting
我的问题是,这种事情通常如何在图形计算器中实现?我一直在做这一切都错了吗?任何想法或建议将不胜感激:)
(我没有包含任何代码,主要是因为它不是很清楚,也不是特别与问题相关)。
另外,如果有人要提出一些核心数学答案,请不要害怕提出建议,我在编码和数学(尤其是数值和计算方法)方面拥有良好的背景,所以我希望我应该能够对付他们。
【问题讨论】:
-
也许我遗漏了一些东西,但您不能使用
sin和cos来计算圆上的点,还是距离您要铺设的地基不够近 -
啊,好问题,我应该指定的。当然我可以用一百万种不同的方式画一个圆,但我试图将这个问题推广到任何形式为 f(x,y)+c = 0 的多变量函数
标签: python math pygame calculator