🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

2 total messages Started by sms@sugar.hacker Mon, 06 Mar 1989 02:41
Class vect2
#2706
Author: sms@sugar.hacker
Date: Mon, 06 Mar 1989 02:41
101 lines
3505 bytes

Here is a class for 2 dimensional vectors I've written for a game I'm
working on.  There are some problems with compiling I've coded around,
probably due to the fact I'm using version 1.5 of Zortech C++.  Someday,
when I have some funds, I'm planning to upgrade.  I haven't implemented
the dot product yet, as I haven't needed it.  Suggestions for improvement
would be welcomed, as I'm learning.
-----------------------------------vect2.hpp------------------------------
#include <stream.hpp>

class vect2 {
    double x,y;
    public:
	vect2(double ix = 0.0, double iy = 0.0) {x = ix; y = iy;};
        vect2 operator= (vect2& v){ x = v.x; y = v.y; return (*this); };
        vect2 operator+ (vect2& v){ double lx, ly;lx = x + v.x;ly = y + v.y;
                                    return vect2(lx,ly); };
        vect2 operator- (vect2& v){ double lx, ly;lx = x - v.x;ly = y - v.y;
                                    return vect2(lx,ly); };
        vect2 operator+= (vect2& v){x += v.x; y += v.y; return *this;};
        vect2 operator-= (vect2& v){x -= v.x; y -= v.y; return *this;};
        friend vect2  operator* (vect2 &v1, double &s);
        friend vect2  operator* (double &s, vect2 &v1);
               double distance  (vect2 &v);
               vect2  unit      ();
  //            double dot       (vect2 v1, vect2 v2);
        friend ostream& operator<< (ostream &s,vect2 &v);
};
-----------------------------vect2.cpp-------------------------------------
#ifndef _vect2.cpp_
#define _vect2.cpp_
#include <math.h>
#include "vect2.hpp"

double vect2::distance(vect2 &v) {
	return (sqrt((x-v.x)*(x-v.x)+(y-v.y)*(y-v.y)));
}

vect2 vect2::unit() {
        double lx,ly;

        lx = x/sqrt( x * x + y * y);
        ly = y/sqrt( x * x + y * y);
        return vect2(lx,ly);
}

ostream& operator<< (ostream &s, vect2 &v) {
    return ( s << "(" << v.x << ", " << v.y << ")" );
}

vect2 operator*(vect2& v, double& s) {
    return vect2(v.x * s, v.y * s);
}

vect2 operator*(double& s, vect2& v) {
    return vect2(v.x * s, v.y * s);
}

#  ifndef NDEBUG
main()
{
    vect2 x(1,1),y(2,2),z(5,7),t(0,0);
    double tmp=5.0;

    t = x + y;
    cout << " t" << t << " = x" << x << " + y" << y << "\n" ;
    cout << " distance from x" << x << " to y" << y << " is ";
    cout << x.distance(y) << "\n";
    t = vect2(4,0);
    cout << " unit vector for " << t << " is " << t.unit() << "\n";
    cout << " z * 5 is " << (z * tmp) << "\n";
//  cout << " z * 5 is " << (z * 5) << "\n"; // Produces wrong answer,
//             possibly 5 is not converted to double.
//  cout << " z * 5 is " << (z * 5.0) << "\n";
// Compiler bug:  11147 from ZTC2
    tmp = x.distance(y);
    cout << " x.distance(y) * z is " << (tmp * z) << "\n";
//    cout << " x.distance(y) * z is " << (x.distance(y) * z) << "\n";
// Compiler bug 11147 from ZTC2
    cout << " x += z is " << (x += z) << "\n";
    cout << " x -= z is " << (x -= z) << "\n";
}
#  endif
#endif
---------------------------------------- compile/link----------------------
ZTCPP1 -mc -otemp.tmp vect2.cpp

ZTC2 temp.tmp -ovect2

LINK vect2/noi;
BLINK 2.14 Copyright (c) 1986-88 by Zortech, written by Bjorn N. Freeman-Benson
BLINK complete. Time: 16.86 seconds
-------------------------------------output---------------------------------
 t(3, 3) = x(1, 1) + y(2, 2)
 distance from x(1, 1) to y(2, 2) is 1.414214
 unit vector for (4, 0) is (1, 0)
 z * 5 is (25, 35)
 x.distance(y) * z is (7.071068, 9.899495)
 x += z is (6, 8)
 x -= z is (1, 1)
Re: Class vect2
#2732
Author: w-colinp@microso
Date: Thu, 09 Mar 1989 11:39
8 lines
263 bytes
In my, similar, point class, I used * for dot product and / for
cross product (to be precise, it returned the z component:
x1*y2 - x2*y1).  Is there any convention for this?
--
	-Colin (uunet!microsoft!w-colinp)

"Don't listen to me.  I never do." - The Doctor
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads