使用处理在eh屏幕底部创建一个对象MAX_size,在屏幕顶部创建一个MIN_size

时间:2018-10-03 23:20:19

标签: processing

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); 
}

我需要有关算术功能的算术帮助。

1 个答案:

答案 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

mouseYsize相同!

那是因为您的草图是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);
}

但是值得学习并掌握使用基本算术的手。

学习编程一开始可能会令人沮丧,但要花点时间,耐心等待,并一遍又一遍地尝试:您最终会成功的!

一次执行一个步骤,并确保在进入下一个步骤之前完全理解一个概念:理解基础知识(变量(原始类型)/条件/循环/数组/函数)至关重要。如果您做对了,其他所有事情都会变得容易得多。

每天至少在作业之外半小时/一个小时内尝试编写代码:这是您想尝试的有趣事情。