Devi variare la variabile "intervallo" quindi ridisegnare tutto.
Io ho fatto esempio per piccole scale, ovvero quando il rapporto width/intervallo è maggiore di 1. A scale grandi, questo rapporto sarà minore di uno e devi trovarti un metodo che invece di fare le tacche a distanza di un'unità (come ho scritto) lo faccia a cinque a cinque, o a dieci a dieci...non so se rendo l'idea.
se noti che step è abbastanza piccolo(minore di 1), allora nel ciclo for modificherai così, per esempio:
for (int i=org; i >= 0; i -= step*5)
in modo che la prima tacca vale 0,k la seconda 5, la terza 10 e così via.
Quanto al semiasse negativo, usa questo:
codice:
for (int i=org; i >= 0; i = i-step) {
MoveToEx(console, i ,org2 , (LPPOINT) NULL);
LineTo(console, i,org2+5);
}