¿Cómo puedo representar una ecuación vectorial de un segmento de línea en C ++?

Estoy trabajando con gráficos por computadora.

Me gustaría representar una línea con dos puntos finales, y luego me gustaríaLine2d clase para tener un método que devuelve unVector2d objeto.

Supongamos que tengo las siguientes clases:

struct Point2d
{
    int x;
    int y;
};

Entonces, puedo representar fácilmente un segmento de línea usando dos puntos:

class LineSegment2d
{
private:
    Point2d start;
    Point2d end;
public:
    ...
    ...
};

Según la definición, un vector se compone de una magnitud y una dirección.

class Vector2d
{
private:
    Point2d p;
public:
    double Magnitude(void);
    Point Component(void);
    Vector2d Normal();
    Vector2d & Add(Vector & rhs);
    Vector2d & Subtract(Vector & rhs);
    Vector2d & Multiply(int scalar);
    int DotProduct(Vector2d rhs);
    Vector2d & CrossProduct(Vector2d rhs);
};

Un objeto dePoint2d es suficiente para representar un vector. Por ejemplo, la magnitud de un vector =sqrt(p.x*p.x + p.y*p.y);. Y,p.x yp.y representan colectivamente la dirección.

Por otro lado, sabemos que la ecuación vectorial de una línea que pasa a través de(x0,y0,z0) es,r =r0 + tv Dónde,r es el vector para la línea de asunto.r0 es un vector de posición que apunta a la dirección del punto(x0, y0, z0). Dado que r0 es un vector de posición, obviamente, el origen de r0 sería(0,0,0). t es cualquier valor numerado real, donde,−∞<t<∞ –. v es un vector que es paralelo a nuestra línea recta del sujeto.

Ecuación vectorial de un segmento de línea entre los puntos.P(1, 3, 2) yQ(-4, 3, 0):

De acuerdo con la fórmula anterior, la ecuación vectorial de la líneaPQ podría ser cualquiera

r =<1,3,2> + tv 

o,

r =<-4,3,0> + tv

El vector que conecta los dos puntos.P yQ es,

PQ  = <(-4-1), (3-3), (0-2)>
    = <-5, 0, -2>

Y, este vector es paralelo a nuestra línea de asunto seguro.

Entonces, podemos escribir,

r   =<1, 3, 2> + t <-5, 0, -2>
    =<1, 3, 2>+<-5t, 0, -2t>
    = <(1-5t), (3+0), (2-2t)>
    =<1-5t, 3, 2-2t>

De acuerdo con la ecuación vectorial de un segmento de línea, creo que mi clase de Vector debería tener el siguiente aspecto:

class LineVector2d
{
private:
    Vector2d v;
    double t;
public:
    ..........
};

¿Es esta la representación correcta?

Si es así, ¿cómo puedo calcular / establecer / encontrar el valor det?

Respuestas a la pregunta(6)

Su respuesta a la pregunta