Começando pelo básico: Sistemas de coordenadas gráficas

Você já deve ter passado pelo problema da figura abaixo… Quer desenhar um quadradinho de 9 pixeis especificando as coordenadas dos cantos superior esquerdo e inferior direito, mas precisa subtrair uma unidade do canto inferior direito porque senão acaba com um pixel extra (um quadrado de 16 pixeis).

Ao invés de pixels, use as bordas!

A solução é essa ai em cima… Ao invés de usar a posição do pixel como referência, use a borda, como numa folha de papel milimetrado, onde os quadradinhos são os pixeis, mas as linhas é que especificam um ponto. Neste caso, o calculo de tamanho nos sentidos X e Y do seu retângulo fica bem mais fácil sem aquele “+1” que precisava fazer.

Isso tem outra vantagem prática… Ao usar a borda como coordenada, o que você faz, num sistema que use o 4º quadrante (como a tela de seu computador – a origem (0,0) está no canto superior esquerdo!) é não plotar os pixeis do lado direito e do de baixo. Tomemos apenas o sentido X, para plotar os 3 pixeis horizontais você faz:

for (x = 0; x < 3; x++) ...

Note o sinal de “menor que”, ele excluí o último pixel, não é?

Não fica muito claro neste texto, mas esse artifício facilita um bocado quando você tem que fazer com que polígonos “coincidam” sem ter que plotar o mesmo pixel duas vezes. Por exemplo… se eu pegar o quadradinho de 9 pixeis acima e desenhá-lo na posição (0,0) e, logo depois, desejar outro quadradinho na posição (3,0), é garantido que os dois se “tocam”, mas nenhum pixel é plotado mais que uma vez (não há sobreposição):

Grandes coisas! Mas isso é bem evidente, e útil, quando estamos lidando com triângulos (em computação gráfica lidamos muito com triângulos!).