2011-10-31 3 views
0

selon l'équation de droite y = (m * x) + c. si je connais la pente (m) et je sais que la ligne passe par un point (cx, cy). Je veux connaître les points suivants sur la même ligne avant et après CX, cy, comment puis-je les calculer.calculer le point suivant sur une ligne avec une pente connue

+5

"Next" par la taille de l'étape? Et comment est-ce un problème de programmation, plutôt qu'un simple problème de maths? – delnan

Répondre

1

En C++:

Compute les autres points en faisant

extrapolate line(m, cx, cy); 
double y_before = line.y(cx - 1); // for example 
double y_after = line.y(cx + 1); 

Voir en direct sur http://ideone.com/BELNc (deux exemples)

struct extrapolate 
{ 
    extrapolate(double slope, double x1, double y1) 
     : _slope(slope), _x1(x1), _y1(y1) 
    { 
    } 

    double y(double x) const // return y for given x 
    { 
      return _y1 + (x-_x1)*_slope;     
    } 

    private: 
    double _slope, _x1, _y1; 
}; 
0

Êtes-vous de tracer une ligne sur un pixel affichage basé? Si oui, une légère modification de Bresenham's algorithm pourrait être ce dont vous avez besoin. Notez que l'algorithme original a besoin de deux points en entrée et dessine la ligne entre eux et en profite pour donner une solution vraiment élégante qui n'utilise pas l'arithmétique en virgule flottante. Dans votre cas, vous devrez probablement utiliser des opérations à virgule flottante, car j'imagine que votre pente m n'est pas nécessairement un nombre entier. En bref, selon le quadrant dans lequel vous vous trouvez, vous avez toujours le choix entre deux points que vous pourriez dessiner (voir la section Algorithme sur la page wiki). Ce que vous faites est de choisir celui qui est le plus proche de la ligne réelle. C'est à peu près tout.

Questions connexes