马上注册,玩转Robomaster!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于帖子“在安卓手机上运行Processing程序的方法”太长,论坛发帖有字数要求所以,我把程序在这张帖子里公布。
在安卓手机上运行Processing程序的方法网址:http://bbs.robomasters.com/forum.php?mod=viewthread&tid=156
Processing程序: float add_val;//定义螺旋线半径增加值 float mouseX_keep;//定义变量,用于保存鼠标当前X值 //画螺旋线子程序 void Helix(float add_val){ float radius = 1.0;//螺旋线初始点半径 //螺旋线转动角度范围0到360*8 //螺旋线每转动2度,半径就增加一个增量 //通过for结构,产生螺旋线效果 for(int deg = 0; deg < 360*8; deg += 2) { float angle = radians(deg); float x = 200 + (cos(angle) * radius); float y = 350 + (sin(angle) * radius); //螺旋线上每个点都是一个绿色实心圆 fill(0,255,0);//定义螺旋线的填充色为绿色 ellipse(x, y, 6, 6); //螺旋半径每转动2度增加一次 radius = radius +add_val; } } //初始化 void setup() { //定义画布大小 size(400,750); //绘制一个宽度为600像素,高度为750像素的画布 noStroke();//不绘制图形的轮廓线 smooth();//开启抗锯齿功能,使线条轮廓光滑 mouseX_keep=20;//设置鼠标光标位于水平标尺的初始位置 add_val=0.04; //当螺旋线旋转中心旋转角度不断增加时, //螺旋线上的各点距离旋转中心的半径增加值 } //主程序 void draw(){ background(126);//设置画布背景灰度等级,数值范围0~255,数值越小越黑 //在画布的下方水平画一个狭长的矩形,并填充黑色,以形成一条粗线 //这个粗线就是滚动条的水平标尺 rect(20,695,360,10); fill(0); //如果鼠标左键按下 if(mousePressed) { //如果鼠标光标相对于画布左上角原点的X坐标值在20到580之间 if(mouseX>20 && mouseX<380) { //坐标平移的影响范围在pushMatrix()与 popMatrix()之间的语句 pushMatrix(); //将原点从画布的左上角移动到X坐标为mouseX,Y坐标为700处 translate(mouseX,700); ellipse(0,0,33,33);//以新坐标原点画直径为33的圆 fill(255);//圆内填充为白色 //白色圆的位置只受鼠标X坐标值的影响,而它的Y坐标值始终为700 //这个白色的圆就是水平标尺上的滑块, //白色的圆只能约束在水平标尺上,随鼠标X值的变化而移动 popMatrix();//恢复坐标原点到画布的左上角 //把区间在20到580的mouseX当前值正比换算为区间0.04到0.2的值 //这个算式的执行,可以使鼠标X当前值成正比地影响螺旋线半径增加值 add_val = map(mouseX, 20, 480, 0.04, 0.16); Helix(add_val); //调用画螺旋线子程序 } //当鼠标当前X值小于等于水平标尺左端点的X值时,白色会固定在其左端点 //同时螺旋线半径增加值最小 else if(mouseX<=20) { fill(255); ellipse(20,700,33,33); Helix( 0.04); } //当鼠标当前X值大于等于水平标尺右端点的X值时,白色会固定在其右端点 //同时螺旋线半径增加值最大 else if(mouseX>=380) { fill(255); ellipse(380,700,33,33); Helix( 0.16); } mouseX_keep=mouseX; } //当鼠标左键松开时,螺旋线的形状不变 else { fill(255); ellipse(mouseX_keep,700,33,33); Helix( add_val); } }
|