我正在处理一点空间模拟。在游戏中,您可以放大太阳系外的&。为了发挥这种整齐的松弛效应,我想放大背景中随机放置的starsky。到目前为止,我已经可以工作了,但starsky正在放大左上角。我知道我必须将星星的原点转换为(宽度/ 2,高度/ 2),但我无法弄清楚我是如何做到的。处理:将随机Starfield的中心点移动到中心
下面是代码:
int starCount = 1200;
float[] xStar = new float[starCount];
float[] yStar = new float[starCount];
float starSpread;
float zoom;
void setup() {
size(1600, 900);
frameRate(30);
calcStars();
zoom = 1;
}
void draw() {
background(#000000);
for(int i=0;i<starCount;i++){
fill(#fff7e6);
noStroke();
ellipse(xStar[i]*starSpread,yStar[i]*starSpread,1,1);
}
starSpread = 1+zoom*0.001;
}
void calcStars(){
for(int i=0;i<starCount;i++){
xStar[i] = -random(0-width);
}
for(int i=0;i<starCount;i++){
yStar[i] = -random(0-height);
}
}
void mousePressed(){
zoom = zoom - 1;
}
(点击鼠标来“放大”了< - 我要天上的星星移动到中间不左上角!)
所以,我有2个数组给我在窗口中1200随机坐标。 “zoom”是一个可以用滑块控制的简单浮点数。这个变量控制着所有内容的传播。它略多于0.001来对我的星星产生影响。
现在有人可以帮助我按照我的意图进行缩放吗?
在此先感谢!
此代码不能编译我 - 你是否错过了几个右括号? –
对不起,是的,我在浏览器实现中遇到了一些问题。这将工作。但由于缺少库文件,滑块不在其中。 (编辑文章) – ThatGuyNextDoor
/编辑点击鼠标多次将“缩放”出来看看我的意思 – ThatGuyNextDoor