#include #include #include // define vector class PhysicsVector { public: PhysicsVector(std::string name,double x,double y,double z); void printVector(); std::string name_out() {return name;}; double x_out() {return x;}; double y_out() {return y;}; double z_out() {return z;}; double magnitude(); double direction_r(); double direction_d(); private: std::string name; double x; double y; double z; }; PhysicsVector::PhysicsVector(std::string name1 ,double x1,double y1,double z1) :name{name1},x{x1},y{y1},z{z1} { } void PhysicsVector::printVector() { std::cout << name << " = " << x << " i + " << y << " j + " << z << " k\n"; } double PhysicsVector::magnitude() { return sqrt((x * x) + (y * y) + (z * z)); } double PhysicsVector::direction_r() { return atan2(y,x); } double PhysicsVector::direction_d() { return atan2(y,x) * 90.0 / asin(1.0); } PhysicsVector *addVectors(std::string name1, PhysicsVector *a,PhysicsVector *b) { PhysicsVector *ret = new PhysicsVector(name1,a->x_out() + b->x_out(),a->y_out() + b->y_out(),a->z_out() + b->z_out()); return ret; } PhysicsVector *subtractVectors(std::string name1, PhysicsVector *a,PhysicsVector *b) { PhysicsVector *ret = new PhysicsVector(name1,a->x_out() - b->x_out(),a->y_out() - b->y_out(),a->z_out() - b->z_out()); return ret; } double dotVectors(PhysicsVector *a,PhysicsVector *b) { double ret; ret = a->x_out() * b->x_out() + a->y_out() * b->y_out() + a->z_out() * b->z_out(); return ret; } PhysicsVector *crossVectors(std::string name1, PhysicsVector *a,PhysicsVector *b) { PhysicsVector *ret = new PhysicsVector(name1, a->y_out() * b->z_out() - b->y_out() * a->z_out(), - (a->x_out() * b->z_out() - a->z_out() * b->x_out()), a->x_out() * b->y_out() - a->y_out() * b->x_out()); return ret; } void print_magnitude(PhysicsVector *a) { std::cout << "The magnitude of " << a->name_out() << " is " << a->magnitude() << "\n"; } void print_dotVectors(PhysicsVector *a, PhysicsVector *b) { std::cout << "The dot of " << a->name_out() << " and " << b->name_out() << " is " << dotVectors(a,b) << "\n"; } void print_crossVectors_and_delete(std::string str, PhysicsVector *a, PhysicsVector *b) { std::cout << "The cross of " << a->name_out() << " and " << b->name_out() << " is:\n"; PhysicsVector *c = crossVectors(str,a,b); c->printVector(); delete c; } void print_crossVectors_without_delete(std::string str, PhysicsVector *a, PhysicsVector *b) { std::cout << "The cross of " << a->name_out() << " and " << b->name_out() << " is:\n"; PhysicsVector *c = crossVectors(str,a,b); c->printVector(); } void print_direction_r(PhysicsVector *a) { std::cout << "The direction of " << a->name_out() << " in radians is " << a->direction_r() << "\n"; } void print_direction_d(PhysicsVector *a) { std::cout << "The direction of " << a->name_out() << " in degrees is " << a->direction_d() << "\n"; } void prob_05(); int main() { std::cout << "c++ output chapter 2\n"; prob_05(); } void prob_05() { std::cout << "Problem 5\n"; PhysicsVector *a = new PhysicsVector("a",4.0,-3.0,0.0); PhysicsVector *b = new PhysicsVector("b",6.0,8.0,0.0); PhysicsVector *c = addVectors("c",a,b); PhysicsVector *d = subtractVectors("d",b,a); PhysicsVector *e = subtractVectors("e",a,b); PhysicsVector f("f",2.0,-3.0,7.0); PhysicsVector g("g",12.0,45.0,-8.0); PhysicsVector h("h",-5.0,-3.0, 42.0); a->printVector(); b->printVector(); c->printVector(); d->printVector(); e->printVector(); print_magnitude(a); print_magnitude(b); print_magnitude(c); print_magnitude(d); print_magnitude(e); print_direction_r(a); print_direction_r(b); print_direction_r(c); print_direction_r(d); print_direction_r(e); print_direction_d(a); print_direction_d(b); print_direction_d(c); print_direction_d(d); print_direction_d(e); print_dotVectors(a,a); print_dotVectors(a,b); print_dotVectors(b,a); print_dotVectors(a,c); print_dotVectors(d,a); print_dotVectors(a,e); print_dotVectors(e,a); print_crossVectors_and_delete("axa",a,a); print_crossVectors_and_delete("axb",a,b); print_crossVectors_and_delete("bxa",b,a); print_crossVectors_and_delete("axc",a,c); print_crossVectors_and_delete("dxa",d,a); print_crossVectors_and_delete("axe",a,e); print_crossVectors_and_delete("exa",e,a); print_crossVectors_without_delete("fxg",&f,&g); print_crossVectors_without_delete("fxh",&f,&h); print_crossVectors_without_delete("gxh",&g,&h); print_crossVectors_without_delete("gxf",&g,&f); print_crossVectors_without_delete("hxf",&h,&f); print_crossVectors_without_delete("hxg",&h,&g); delete a; delete b; delete c; delete d; delete e; }