javascript - 指数图动画 P5js 画布
问题描述
我正在尝试使用 P5js 为不断增长的指数图制作动画。我已经成功地绘制了图表本身,但是两侧的“标尺/刻度”不起作用。我希望“窗口”根据 X 和 Y 轴进行缩放,就像这个例子一样:动画 我正在尝试复制这个动画
我希望图表“增长”,两侧的标尺/刻度代表增长,X 是时间,Y 是乘数(中间是大文本)。正如我链接的动画所示,X 和 Y 值在图形超出框后向原点移动。
使用代码链接到 P5 编辑器:P5 Web 编辑器
解决方案
至少有一个大错误
scaleLevel -= 0.1;
因为这样它会变为零,你将在 内除以它REscale
。
您的意图是f(x)
在 的区间内0
绘制一些指数函数x
。的值x
随着时间的推移而增加。指数函数的值也在上升,但速度不同。因此,您将不得不使用两个单独的比例因子:sX = display_width / x
和sY = display_hight / f(x)
.
我希望这能让你以某种方式开始。这是一些代码来说明要走的路:
var x = 10
function setup() {
createCanvas(400, 400);
noLoop();
}
function my_func(x) {
return exp(x * 0.2);
}
function draw() {
background(220);
stroke(155);
strokeWeight(8);
noFill();
beginShape();
let nPoints = 20;
let dx = x / nPoints;
let ymax = my_func(x);
let dy = ymax / nPoints;
for (let i = 0; i <= x; i += dx) {
xValue = map(i, 0, x, 0, width);
yValue = map(my_func(i), 0, ymax, height, 0);
vertex(xValue, yValue);
}
endShape();
}
我省略了轴上的刻度。我决定为 0 到 10 之间的值创建一个静态图。通过删除函数中的语句并在函数中添加行x
,可以轻松地将代码更改为动画。noLoop();
setup
x += somedelta;
draw
推荐阅读
- php - 在 PHP 中的 MongoDB 中按字段限制特定数量的文档
- directory - 尝试安装twodict,对命令/目录感到困惑?
- c# - Unity OnMouseEnter、OnMouseOver、OnMouseExit 与 UI 元素不起作用
- python - Python Cron 作业过早死亡
- reactjs - React Navigation this.props.navigation.navigate 没有导航到下一个屏幕
- sql - 如何合并此 SQL 行?
- dart - 动态生成导航按钮
- c - 使用自定义前缀创建 printf 函数
- c++ - C++ 需要一种很好的技术来播种不使用 time() 的 rand()
- javascript - Node JS 中的地图操作