processing-docs icon indicating copy to clipboard operation
processing-docs copied to clipboard

Indicate rotation direction for `PVector::rotate()`

Open aaronshenhao opened this issue 3 years ago • 1 comments

Issue description

Indicate the direction that the vector will be rotated in, in order to avoid any ambiguity.

URL(s) of affected page(s)

https://processing.org/reference/PVector_rotate_.html

Proposed fix

Rotates a vector anticlockwise by the specified angle (2D vectors only), while maintaining the same magnitude.

Or add a sentence "Positive angles will rotate the vector anticlockwise."

aaronshenhao avatar Jul 08 '21 06:07 aaronshenhao

Note that the documentation for rotate says:

https://processing.org/reference/rotate_.html
Positive numbers rotate objects in a clockwise direction and negative numbers rotate in the couterclockwise direction. 

But it turns out a positive angle actually rotates in the direction from the x-axis towards the y-axis.

In the standard coordinate system used in Processing, where the x-axis points right and the y-axis points down, this is indeed clockwise. However, if one flips the y-axis with scale(1,-1) then the y-axis points up - and we have a standard coordinate system. Then a positive angle will rotate in the counterclockwise direction (aka from the x-axis towards the y-axis).

If the text is revised, consider "a postive angle with rotate in the direction from the x-axis towards the y-axis". Or of "clockwise/anticlockwise" is used, add a note on how the x-axis and y-axis needs to be directed.

An example ready to experiment with:

int yscale = 1;

void mousePressed() {
  yscale *= -1;
}

void setup() {
  size(400,400);
  rectMode(CENTER);
  frameRate(1);
  fill(255);
}

void draw() {
  background(200);
  text(str(yscale),20,20); 
  translate(200,200);
  scale(1,yscale);
  rotate(0.1*frameCount);
  rect(0,0,100,100);
}

soegaard avatar Jul 08 '21 12:07 soegaard