Javascript 如何在JS中模拟鼠标移动以程序化生成美丽的星系?
我正在做一个项目,程序性地生成像这样的星系图像: 该样本是“手工绘制的”(通过挥动光标)。看这支笔: 我希望按程序生成这些类型的图像,但不是一次生成它们我希望使用“绘图”过程来执行生成,即以实现这些视觉结构的模式移动绘图光标。 我目前拥有的鼠标模拟代码直接来自Louis Hoebregts 主要功能依赖于单纯形噪声:Javascript 如何在JS中模拟鼠标移动以程序化生成美丽的星系?,javascript,html5-canvas,shapes,procedural-generation,Javascript,Html5 Canvas,Shapes,Procedural Generation,我正在做一个项目,程序性地生成像这样的星系图像: 该样本是“手工绘制的”(通过挥动光标)。看这支笔: 我希望按程序生成这些类型的图像,但不是一次生成它们我希望使用“绘图”过程来执行生成,即以实现这些视觉结构的模式移动绘图光标。 我目前拥有的鼠标模拟代码直接来自Louis Hoebregts 主要功能依赖于单纯形噪声: const s = 0.001 * (speed / 100); const noiseX = (noise.simplex3(1, 0, a * s) +
const s = 0.001 * (speed / 100);
const noiseX = (noise.simplex3(1, 0, a * s) + 1) / 2;
const noiseY = (noise.simplex3(11, 0, a * s) + 1) / 2;
random += randomness / 1000;
const randX = noise.simplex3(1, 0, random) * window.innerWidth * 0.1;
const randY = noise.simplex3(3, 0, random) * window.innerHeight * 0.1;
const x = noiseX * innerWidth + randX;
const y = noiseY * innerHeight + randY;
updateMouse(x, y);
然而,这种类型的噪音不会产生我想要的视觉效果。分解我脑海中的视觉结构,我们有一个中心加权的斑点和椭圆形的“手臂”。为了实现前者,我认为应该在靠近中心的位置执行更多的“绘制时间”(这会在内部创建明亮的斑点),而较少的“分支”执行更多的椭圆运动,以使后者更具吸引力
我考虑过以某种方式对单纯形噪声进行梯度化,使其更倾向于中心,但我不确定如何在2d空间中实现这一点。我也不确定如何将它与吸引星系“手臂”的东西结合起来
你能提出一个算法来实现这一点吗?
感谢如果您只想生成图像,您可以考虑使用cos生成具有一定数量旋臂的星系,并使用圆半径:
Math.cos(弧度)*半径,Math.sin(弧度)*半径
先让它工作。
你可能想画一些椭圆的东西,而不是一个完整的圆。
在银河系的中心和靠近手臂的地方随机移动的次数更多
- 步骤1:随机生成星系点
- 步骤2:混合颜色()
- 第3步:如果你想要实时性能,请使用WebGL
我知道这不正是你要找的,但你可以去图书馆看看。是用它建造的。@tommmmmy这确实很酷,但与我的问题无关。这里有一些东西可以适应你的需要。随机贝塞尔步行机: