Code
//
//  Oct24
//
#include <iostream>
#include <cmath>
// #include "math.h"
using namespace std;
struct Point {
    double x, y;
};
struct Size {
    double width, height;
};
struct Triangle {
    Point a, b, c;
};
struct Rectangle {
    Point topLeft;
    Size widthHeight;
};
struct Circle {
    double radius;
    Point center;
};
struct Ellipse {
    Point f1, f2;
    double foo;
};
struct Rotation {
    double angle;
    Point center;
};
struct Ellipse2 {
    Point center;
    double radiusX;
    double radiusY;
    Rotation rotation;
};
struct Polygon {
    int numberOfPoints;
    Point p1, p2, p3, p4, p5, p6, p7, p8;
};
struct ResistorColor {
    std::string color;
    int value;
};
double dist (Point a, Point b) {
    // Pythagoream Theorem a^2 + b^2 = c^2
    double dx = a.x - b.x;
    double dy = a.y - b.y;
    return (sqrt (dx * dx + dy * dy));
}
double triangleArea (Triangle triangle) {
    // Compute the area of a triangle from its corner points
    
    // 1. Compute the lengths of the side
    double a = dist(triangle.b, triangle.c);
    double b = dist(triangle.a, triangle.c);
    double c = dist(triangle.a, triangle.b);
    
    // 2. Plug the lengths into the standard formula
    double s = (a + b + c) / 2;
    double t = s * (s-a) * (s-b) * (s-c);
    return sqrt (t); // <cmath>
}
string drawTriangle (Triangle t, string fill, string stroke) {
    return "<polygon points='" +
       to_string(t.a.x) + " " + to_string(t.a.y) + " " +
       to_string(t.b.x) + " " + to_string(t.b.x) + " " +
       to_string(t.c.x) + " " + to_string(t.c.y) + " z' " +
       "fill='" + fill + "' stroke='" + stroke + "' />";
}
int main(int argc, const char * argv[]) {
    
    Triangle t = {
        { -3, -4 },
        { 6, 0 },
        { 0, 8 } };
    cout << triangleArea (t) << endl;
    
    cout << drawTriangle (t, "red", "blue") << endl;
    
    return 0;
}
 
No comments:
Post a Comment