final int MAX_SIZE = 500;
final int MIN_SIZE = 50;
void setup (){
size(500,500);
}
void draw(){
setSizeXAndY();
}
void setSizeXAndY(){
size= (MAX_SIZE*mouseY)/(width);
}
我需要有关算术功能的算术帮助。
答案 0 :(得分:1)
您发布的代码目前的形式几乎没有意义,并且存在语法错误(尽管size
中没有声明setSizeXAndY()
,尽管您尝试为其分配值)
不幸的是,它并不能清楚地传达您的意图。
(拼写错误)标题提供了更多信息,但同时也引起误解:按对象,您是指要在屏幕上呈现的class实例还是可视对象(例如矩形/椭圆形等)?>
您的草图为500x500像素,因此底部已经有MAX_SIZE(将其设置为500)。 MIN_SIZE
应该等于0,才能位于顶部。 (例如final int MIN_SIZE = 50;
)
关于大小函数的算术,我想你是说这个意思:
size= (MAX_SIZE*mouseY)/(width);
我不确定这是否符合您的期望,但是您可以进行一些基本的调试并打印出您的值:
void setSizeXAndY(){
int size = (MAX_SIZE*mouseY)/(width);
println("MAX_SIZE",MAX_SIZE,"mouseY",mouseY,"width",width,size);
}
您会注意到一种模式:
MAX_SIZE 500 mouseY 258 width 500 258
MAX_SIZE 500 mouseY 258 width 500 258
MAX_SIZE 500 mouseY 258 width 500 258
MAX_SIZE 500 mouseY 258 width 500 258
mouseY
与size
相同!
那是因为您的草图是500x500,所以500 x mouseY / 500 = mouseX
(记住乘法是可交换的,您可以更改因子的顺序,结果将保持不变)
也许您是说反转Y吗?如果是这样,您可以简单地从最大Y值中减去Y值。这是一个基于您的代码的示例:
final int MAX_SIZE = 500;
final int MIN_SIZE = 50;
void setup () {
size(500, 500);
}
void draw() {
background(0);
setSizeXAndY();
}
void setSizeXAndY() {
int size = (MAX_SIZE*mouseY)/(width);
println("MAX_SIZE", MAX_SIZE, "mouseY", mouseY, "width", width, size);
// subtract value from it's maximum value "flips/mirrors" the value
int invertedY = MAX_SIZE - mouseY;
// test: draw the regular mouseY in green
fill(0,192,0);
ellipse(mouseX, mouseY, 18, 18);
// test: draw the inverted mouseY in red
fill(192,0,0);
ellipse(mouseX, invertedY, 18, 18);
}
或者,您可以使用map():
final int MAX_SIZE = 500;
final int MIN_SIZE = 50;
void setup () {
size(500, 500);
}
void draw() {
background(0);
setSizeXAndY();
}
void setSizeXAndY() {
int size = (MAX_SIZE*mouseY)/(width);
println("MAX_SIZE", MAX_SIZE, "mouseY", mouseY, "width", width, size);
// subtract value from it's maximum value "flips/mirrors" the value
float invertedY = map(mouseY,0,MAX_SIZE,MAX_SIZE,0);
// test: draw the regular mouseY in green
fill(0,192,0);
ellipse(mouseX, mouseY, 18, 18);
// test: draw the inverted mouseY in red
fill(192,0,0);
ellipse(mouseX, invertedY, 18, 18);
}
但是值得学习并掌握使用基本算术的手。
学习编程一开始可能会令人沮丧,但要花点时间,耐心等待,并一遍又一遍地尝试:您最终会成功的!
一次执行一个步骤,并确保在进入下一个步骤之前完全理解一个概念:理解基础知识(变量(原始类型)/条件/循环/数组/函数)至关重要。如果您做对了,其他所有事情都会变得容易得多。
每天至少在作业之外半小时/一个小时内尝试编写代码:这是您想尝试的有趣事情。