2011-07-29 6 views

Répondre

0

C'est simplement une fonction linéaire simple dont vous avez besoin. fonctions linéaires ont la forme f(x) = m * x + n

Pour la coordonnée x:

Vous souhaitez mapper à 0 et -400 400 à 400, de sorte que vous avez deux points (-400, 0), (400, 400) qui décrivent votre relation linéaire.

Vous calculez maintenant le gradient m avec (y2-y1)/(x2-x1), dans cet exemple: m = (400-0)/(400 à -400) = 1/2

donc votre fonction ressemble maintenant à: f (x) = 1/2 * x + n

Pour calculer n (l'ordonnée à l'origine) vous insérez juste un point (par exemple (-400, 0)):

0 = 1/2 * (-400) + n

Vous obtenez n sous la forme 200. La dernière fonction est donc f(x) = 1/2 * x + 200

Pour la coordonnée y vous obtenez g(y) = 1/2 * y + 300

+0

Merci, je suis au travail maintenant. Je vais tester ce soir! – tschleuss

+0

J'essaye de faire ceci, mais ne fonctionne pas 'var x =?; var glMinX = -470; var glMaxX = 470; var canvasMinX = 0; var canvasMaxX = 480; var gradient = (glMinX - glMaxX)/(canvasMinX - canvasMaxX); var pente = gradient * glMinX; var yIntercept = glMaxX - pente; var newX = gradientM * x * yIntercept; ' – tschleuss

+0

vous voulez mapper glMinX à canvasMinX => Point (-470, 0) (c'est (x1, y1)) et vous voulez mapper glMaxX à canvasMaxX => Point (470, 480) (c'est (x2, y2)) gradient = (y2-y1)/(x2-x1) = (480-0)/(470--470) = 24/47 donc 'gradient = (canvasMaxX-canvasMinX)/(glMaxX-glMinX) '0Intercept = canvasMinX - gradient * glMinX' (ou canvasMaxX - gradient * glMaxX) dans cet exemple: yIntercept = 0 - 47/47 * (- 470) = 240 vous obtenez votre fonction comme f (x) = gradient * x + yIntercept donc: 'f (x) = 24/47 * x + 240' maintenant f (-470) = 0 et f (470) = 480 dans le code: newX = gradient * x + yIntercept – Daniel

Questions connexes