没有在"处理"中绘制鼠标。

时间:2017-02-01 03:30:29

标签: processing mouse draw

我想通过拖动鼠标在一个地方绘制并在画布中心周围的3个位置绘制线条,包括光标本身下面的一条线。我正在使用下面的代码,它绘制了3行但没有一行在鼠标光标下:

void setup(){
   size(300, 300); }

void draw() {
  translate(width/2, height/2); 
  if(mousePressed)
    for(int i=0; i<3; i++){
      line(width/2 -mouseX,  height/2 -mouseY, 
           width/2 -pmouseX, height/2 -pmouseY);
      rotate(2*PI/3);  }}

如何更正此代码,以便一个图形在鼠标光标下方,另外两个图形相应地旋转?

1 个答案:

答案 0 :(得分:0)

您必须考虑与Starting up The count is 1 --------------- The count is 2 --------------- The count is 3 --------------- The count is 4 --------------- The count is 5 --------------- The count is 6 --------------- The count is 7 --------------- The count is 8 --------------- The count is 9 --------------- The count is 10 --------------- Finishing up translate()来电相关的积分。

首先你翻译,所以原点位于屏幕的中心而不是左上角。所以你的所有点都需要相对于中心,而不是相对于左上角。

要调试这一点,我首先要删除rotate()循环并简单地绘制单个点或单行:

for

你会发现这是关闭的,这意味着你计算线路位置的逻辑是错误的。您可以使用它来注意模式,您可以考虑一些示例点。

中心点为void setup() { size(300, 300); } void draw() { translate(width/2, height/2); if (mousePressed) { line(width/2 -mouseX, height/2 -mouseY, width/2 -pmouseX, height/2 -pmouseY); } } 。因此,如果鼠标位于150,150,我们应该在什么位置绘制点?请记住它与160,160相关,因此150,150变为160,160

换句话说,我们从鼠标中减去中心以找出绘制点的位置。

但是你的代码会从中心减去鼠标,这是向后的。

如果您将来遇到类似的问题,我强烈建议您仔细考虑示例点并弄清楚应该去哪里。方格纸是你最好的朋友,有这样的东西。

注意:我意识到您的代码是基于your other question的答案,所以这是我的不好。我的订单错了,但是在你的另一个问题中没有关系,因为你翻译了4次(所以无论如何鼠标光标都被覆盖了。)